我想在我的数据库中创建一个可以保存学校时间表的SQL表,但是我试图继续使用它的每一种方式都不是最优的,并且在数据库表有点时间表的1-2更改过程中太大了。
有点像这样:
Mo Tu Wed Thu Fri
07:00
08:00
09:00
10:00
11:00
12:00
13:00
14:00
15:00
16:00
这是时间表的基本布局,在表格中前两列是timetableid和classid。我的第一种方法是每天都有列,一列中的类,但这有点儿错误,我的下一个方法是获取像mo_7,mo_8,mo_9等列,直到我达到fri_16,但是占用太多空间。
所以我的问题是,什么是在数据库中保存时间表的最佳方式,在什么表格布局中。
提前谢谢。
答案 0 :(得分:0)
您的问题不在您的数据库中,因为您尝试像电子表格一样使用它。
你需要稍微回溯一下 - 存储一个类表以及各种属性。如果每个班级只有一个会话,那么添加' time'作为一个属性。如果有多个会话,那么您可能需要将计划分成单独的表格。
E.g:
表'
;表'会议':
然后您使用select来查询,例如
SELECT classID, start_time, day, location
FROM sessions
WHERE day like "Monday"
ORDER BY start_time
哪个会给你周一的名单。要对其进行扩展,您可以使用'类添加联接。表
SELECT classes.description, classes.teacher, sessions.start_time, sessions.day, sessions.location
FROM sessions, classes
JOIN ON classes.ClassID = sessions.ClassID
WHERE day LIKE 'Monday'
ORDER BY sessions.start_time
无论如何都是这样的(如果语法稍微偏离,我会道歉,如果可以,我会检查/修改)。
但重点是 - 让数据库存储实际数据并使用查询将其转换为您喜欢的布局。这样,每次想要改变次要内容时,您都不需要重写数据库。