学校管理MySQL数据库设计

时间:2012-01-15 17:17:15

标签: php mysql database database-design

我正在设计一个学校管理系统的数据库,面对几个问题,我想把它扔到这里,有人可能会帮忙。 我有一个学生表,其中包含学生详细信息和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或用户想要命名的任何名称。这是关于我的问题的最佳设计吗?这种设计会以任何方式影响系统的性能吗?有问题的最佳数据库设计方法是什么?

学生表载有关于学生的信息,如姓名和家长信息。

编辑:每当学生注册或新学年注册时,流表都会更新 - 例如,如果我在表单1的流A中,那么所有学生都在该班级(表格1)应该提升为班级表格1保留他们的班级,所以如果我在表格1A,那么下一学年我将以2A表格。有一个Acade_YEAR表,其中包含学年的信息,例如何时开始和结束以及所有类型的信息,还有一个EXAM_RESULTS表,用于存储每个学生在一个学年中特定流的结果。对于记录,我需要知道学生所学的所有流和课程。

提前致谢

1 个答案:

答案 0 :(得分:0)

您的方法走在正确的轨道上。我想推荐以下内容:

a)在流表中添加开始日期和结束日期,以便您可以计算学生在流中的哪个时期(将能够处理在年中开始或在年末之前离开的学生) 。这也可以处理重复的学生,因为他们将在同一个班级迎接新的一年

b)在考试成绩表中,添加stream_id,class_id,student_id字段,以便您可以将考试与班级,学生和流相关联。除了student_id和class_id之外,似乎还有重复的stream_id,但是根据经验,当您不必加入流来查找考试属于哪个班级和学生时,它会加快查询速度。