优化的SQL时间表

时间:2014-10-17 14:46:21

标签: mysql sql database storage

我想在我的数据库中创建一个可以保存学校时间表的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,但是占用太多空间。

所以我的问题是,什么是在数据库中保存时间表的最佳方式,在什么表格布局中。

提前谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题不在您的数据库中,因为您尝试像电子表格一样使用它。

你需要稍微回溯一下 - 存储一个类表以及各种属性。如果每个班级只有一个会话,那么添加' time'作为一个属性。如果有多个会话,那么您可能需要将计划分成单独的表格。

E.g:

表'

;

  • 的ClassID。
  • 描述
  • 教师
  • 其他东西。

表'会议':

  • 会话ID
  • 的ClassID
  • START_TIME
  • END_TIME
  • 位置

然后您使用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

无论如何都是这样的(如果语法稍微偏离,我会道歉,如果可以,我会检查/修改)。

但重点是 - 让数据库存储实际数据并使用查询将其转换为您喜欢的布局。这样,每次想要改变次要内容时,您都不需要重写数据库。