【发布时间】:2012-02-10 21:36:37
【问题描述】:
我正在为学校管理系统设计一个数据库,但遇到了几个问题,我想把它扔在这里,有人可能会提供帮助。 我有一个包含学生详细信息的 STUDENTS 表和一个包含班级信息的 CLASS 表。在申请中,您需要知道如果学生通过考试,他或她应该被提升到哪个班级。所以类表在我的设计中是这样的:
+----------------------+
|id | name | parent_id |
+----------------------+
parent_id 是上一个类的 id。现在每个班级有多个流(例如,班级表格 1 可以有 3 个班级:表格 1A、表格 1B、表格 2B 等)并且每个班级都有学生说表格 1A 有 40 名学生等等。所以我有一个这样设计的流表:
+---------------------------------------------+
| id | student_id | class_id | stream_name |
+---------------------------------------------+
所以对于每个有 40 名学生的流,我将在流表中有 40 行,流名称将包含 A、B、C 之类的名称或用户想要命名的任何名称。这是针对我的问题的最佳设计吗?这种设计会以任何方式影响系统的性能吗?解决问题的最佳数据库设计方法是什么?
STUDENTS 表包含有关学生的信息,例如他们的姓名和父母信息。
编辑: 每次学生注册或新学年注册时都会更新流表,例如,如果我在表格 1 的流 A 中,那么所有学生都在该班级(表格1)应升级为班级表格1,保留他们的课程,因此如果我在表格1A中,那么下一个学年我将在表格2A中。有一个 ACADEMIC_YEAR 表保存学年的信息,例如它什么时候开始和结束以及各种信息,还有一个 EXAM_RESULTS 表存储每个学生在一学年的特定流中的结果。对于记录,我需要知道学生学习过的所有流和课程。
提前致谢
【问题讨论】:
-
我知道您至少有一个 STUDENTS、CLASS 和 STREAMS 表。但为了评估这种设计是否会影响性能,我们需要更多信息。 STREAMS 表是如何更新的?还涉及哪些其他表?事情多久改变一次?我不相信任何人可以用有限的信息告诉你什么设计是最好的。
-
感谢您对@MJB 的回复,我已经编辑了我的问题,希望现在已经清楚了..
标签: php mysql database database-design