Php 我如何存储日期/出勤率?

Php 我如何存储日期/出勤率?,php,database,date,storage,Php,Database,Date,Storage,我在征求意见 我有一份人员名单,当他们出现在某个地点时,我需要将其存储起来,以便负责人可以将他们从名单中勾选出来。我不能100%确定需要多长时间,但我假设他们可能需要查看以前的出席名单 我的第一反应是每个日期都有一列,但这可能会导致很多列。我可以在每个人旁边存储一个日期列表: “2012年1月1日,2012年1月15日,2012年2月18日…” 这可能会导致一个很长的条目。看起来两者都不是一个好的选择 如果有人对方法有建议或指导,请让我知道。谢谢。链接表格 一桌人 身份证 名字 一张课表

我在征求意见

我有一份人员名单,当他们出现在某个地点时,我需要将其存储起来,以便负责人可以将他们从名单中勾选出来。我不能100%确定需要多长时间,但我假设他们可能需要查看以前的出席名单

我的第一反应是每个日期都有一列,但这可能会导致很多列。我可以在每个人旁边存储一个日期列表:

“2012年1月1日,2012年1月15日,2012年2月18日…”

这可能会导致一个很长的条目。看起来两者都不是一个好的选择

如果有人对方法有建议或指导,请让我知道。谢谢。

链接表格

一桌人

  • 身份证
  • 名字
一张课表

  • 身份证
  • 名字
一个表,将个人链接到迄今为止的类

  • 身份证
  • 拟人
  • classID
  • cDate
因此,您需要做的就是确定哪些学生在某个班级的某个日期被预设:

SELECT *
FROM people p
LEFT JOIN peopletoclass ptc ON p.id = ptc.personid
LEFT join class c ON c.id = ptc.classid
WHERE ptc.cDate = '2011-11-07' AND c.id = '1';
上面(例如)将在2011年11月7日获得班级id 1中的所有人。

创建一个表“
出勤率
”,该表由
人员id
字段和
日期
字段组成。不能使用字符串;-)将其存储到列或长列表中


然后,您可以使用查询将表
Person
考勤一起加入

这将是一种复杂但非常干净的方法

表“人员”:

  • 身份证
  • 名字
表“日期”:

  • 身份证
  • 位置
  • 日期
  • 。。。“日期”表需要的任何信息
表“出席人数”:

  • 日期\标识(链接到“日期”表中的条目)
  • 人员id(链接到“人员”表中的条目)
  • 出席(是/否)
然后用适当的日期填充数据库,并根据每个日期需要出席的人员填写“出席”表


如前所述,实现起来很复杂,但它非常灵活——你可以有任意数量的日期和与会者;你可以通过编程的方式让人们不参加特定的约会;您可以将人添加到组中…

您的第一直觉将导致糟糕的表格设计。您应该有一个单独的表来存储用户/位置/日期元组

e、 g


将显示用户#1参加了除夕晚会,然后在12:05去瓷坛前祈祷,10分钟后返回晚会。

使用一列存储数据列表几乎总是一个错误的决定。没有有效的查询来获取基于日期过滤器的数据集(在您的例子中)。下面的答案是正确的起点。我为另一个项目做了类似的事情。也许我会再次使用这种方法。看来这就是路。唯一的问题是列中的日期将重复。15名与会者意味着日期将在那里15次。@dcp但这并不是什么问题,不是吗?除非你存储了数十亿个日期,否则我担心的是,这些日期不会由用户设置。这意味着他们可以在任何一天任何一个时间上“课”。经过一些刺激,似乎他们的时间设置为4个月,然后他们改变。因此,这个选项可能会起作用。幸运的是,它接近我正在考虑使用的设置。
userID   locationID   date

1       party          1/1/2011 00:00:00
1       bathroom       1/1/2011 00:05:00
1       party          1/1/2011 00:15:00