繁体   English   中英

学校管理MySQL数据库设计

[英]School management MySQL database design

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

学生表中包含有关学生的信息,例如他们的姓名和父母信息。

编辑:每次学生注册时,或当新学年已注册为例时,流表都会更新,如果我在表格1的流A中,则该班级(表格1)的所有学生都应晋升为1年级的班级保留了他们的课程,因此,如果我采用1A年级,那么下一个学年我将采用2A年级。 有一个Academic_YEAR表保存学年的信息,例如它何时开始和结束以及各种信息,还有一个EXAM_RESULTS表存储每个学生在一个学年中特定流的结果。 为了记录,我将需要知道学生学习的所有课程和课程。

提前致谢

您的方法是正确的。 我想推荐以下内容:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM