我需要创建一个表来存储用户的课程表。这些时间表周一至周五每天有7个街区。但是,并非所有块都填充了类。
我打算创建一个存储用户id,时间段ID,类名和每个记录中的类主题的表。如果我以这种方式实现它,那么确定用户何时没有使用PHP的类的最佳方法是什么?这有更好的布局吗?
答案 0 :(得分:3)
您需要创建三个表,并建立多对多关系。
但如果你不想变得复杂,为什么不像学生一样把学生的空闲时间插入课堂,称之为“空闲时间”,那么你就可以搜索那些。
SELECT * FROM记录WHERE student_id ='0001'AND class ='free time'
否则,我不确定如果没有专门用于这些块的表,你会怎么找到一个空块。
答案 1 :(得分:3)
我不会说你需要做任何事情,但我认为你最终会发现规范化是一个非常好的主意。 http://en.wikipedia.org/wiki/Database_normalization
你可能想要表格:
student (id, name, whatever)
course (id, name, subject/dept)
section (id, course id and time info)
student_to_section (student id, section id)
时间取决于。你可以在部分上放置开始/结束时间(SQL时间戳或整数unix时间戳都可以),或者保留一个具有唯一id的时隙表(然后部分只有一个外键给这个id)。编辑:听起来你选择了第二种方式
至于你的空闲时间,找到学生所有部分的时间段,剩下的是空闲时间。以下将给出学生忙碌的时间段。
SELECT T.*
FROM section S
INNER JOIN time_blocks T on S.time_id = T.id
INNER JOIN student_to_section STS on STS.section_id = S.id
WHERE STS.student_id = ###
空闲时间,请使用:
SELECT T2.*
FROM time_blocks T2
WHERE T2.id NOT IN
(put above statement here)