学校时间表:最佳数据库表设计

时间:2015-07-23 23:02:02

标签: mysql

我想为每个用户创建一个典型的学校时间表。

最终产品应如下所示:

+----+---------+---------+-----------+----------+--------+
|  h | Monday  | Tuesday | Wednesday | Thursday | Friday |
+----+---------+---------+-----------+----------+--------+
|  1 | SCIENCE | MATHS   | ENGLISH   | FRENCH   | ART    |
|  2 | SCIENCE | MATHS   | ENGLISH   | FRENCH   | ART    |
|  3 |         | MUSIC   | HISTORY   | GEO      |        |
|  4 |         | MUSIC   | HISTORY   | GEO      |        |
|  5 | HEALTH  | PE      | MATHS     |          |        |
|  6 | HEALTH  | PE      | MATHS     |          |        |
|  7 |         |         |           |          |        |
|  8 |         |         |           | SCIENCE  |        |
|  9 |         |         |           | SCIENCE  |        |
| 10 |         |         | PE        |          |        |
| 11 |         |         | PE        |          |        |
+----+---------+---------+-----------+----------+--------+

现在我想为这个应用程序创建一个MySQL表。

我的想法是这样的(但这是最好的方式,因为这个表会有很多列):

+---------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+-----+-----+----
| user_id | mo1 | mo2 | mo3 | mo4 | mo5 | mo6 | mo7 | mo8 | mo9 | mo10 | mo11 | tu1 | tu2 | tu3 | tu4 | tu5 | tu6 | tu7 | tu8 | tu9 | tu10 | tu11 | we1 | we2 | ...
+---------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+-----+-----+----
|    ?    |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |   ?  |   ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |   ?  |   ?  |  ?  |  ?  | ...
|    ?    |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |   ?  |   ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |  ?  |   ?  |   ?  |  ?  |  ?  | ...
+---------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+-----+-----+-----+-----+-----+-----+-----+-----+-----+------+------+-----+-----+----

总结:对于典型的学校时间表(使用user_id),MySQL表的最佳设计是什么?

更新1

用户可以通过许多HTML文本字段为每个课程输入文本/主题名称(也许还有更好的解决方案)。但是我忘了说一件重要的事情就是我没有课程表。

1 个答案:

答案 0 :(得分:1)

这样的东西不应该只是一张桌子。您可能有一个课程表,一个学生表和一个连接两者的关联表。学生的表格将包含学生ID。课程表将包含课程ID以及提供的日期和小时。关联的表将具有用户ID和课程ID,将每个学生连接到他们所学的每门课程。然后有办法查询这些表以获得您在此处要求的输出。但是你建议的表格没有标准化,会给你带来各种其他的麻烦。