我想为每个用户创建一个典型的学校时间表。
最终产品应如下所示:
+----+---------+---------+-----------+----------+--------+
| 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表的最佳设计是什么?
用户可以通过许多HTML文本字段为每个课程输入文本/主题名称(也许还有更好的解决方案)。但是我忘了说一件重要的事情就是我没有课程表。
答案 0 :(得分:1)
我会为每个“实体”(用户,天,主题,小时)创建一个表,以避免重复,然后可能是一个名为“Schedule”的数据透视表。
User (id, username)
Days (id, day_of_the_week)
Subjects (id, title)
Hours (id)
Schedule (id, id_user, id_subject, id_hour, id_day)