学校管理系统的数据库规范化

17

我正在创建一个学校管理系统,并设计了附带的数据库模式。

数据库图表

以下是该系统的工作方式:

  1. 学校有许多学生和教师。它还有许多授课的课程(科目)。一个年级可以分配多门课程。这些课程反过来将被分配给该特定年级的学生。
  2. 学生的等级分为年级和班级。学生可以在5年级,但如果5年级学生数量很大,则会分成几个班级。例如:5年级A班,5年级B班。
  3. 学生放置在唯一的教室中。 教室在整个学校内是唯一的。 2010年5年级A班的教室与2011年5年级A班的教室不同。
  4. 学生被分配给父母。 一个父母可以有多个孩子在学校里。
  5. 一个或多个教室可以分配给一个老师。
  6. 教师每天要对学生进行考勤。
  7. 将有许多类型的考试。每个学科(课程)存储考试结果。

我是数据库规范化的初学者,如果有人能给我一些提示,让我知道数据库是否正确,我会很高兴。

编辑:

此外,只会有一个登录点。 在上述情况下,在登录期间,用户将必须从下拉列表中选择用户类型。 该下拉选择将用于查询到相应的表以登录到系统。 另一种选择是使用一个通用user表,它将存储user_id, email, password, last_login_date, last_login_ip,但将在各自的表中存储其他详细信息,例如

student,parent,teacher。那么,实现它的首选/正确方法是什么?


4
你学校的学生只能有一个家长吗?有点奇怪 :) 另外,为什么一间教室只分配一个老师?难道不应该根据课程来分配吗? - Tadeck
@Tadeck 父母表存储授权家长的详细信息,这些家长将能够查看和检查学生记录。它不表示学生所有父母的详细信息。例如:父亲可以获得家长用户名/密码来查询他的孩子。母亲也可以使用它,但通常只有一个人能够使用。至于教室,每个教室只有一位指定的班主任,填写该特定班级学生的出勤/成绩。课程指学生学习的科目。成绩将分配给科目,而教室将被分配成绩。 - WebNovice
3
@Damchey 请做好应对像“1个授权家长规则”这样的变化,你的应用将需要以某种方式处理它。最好设计成学生可以有任意数量的授权监护人,然后在用户界面上限制为1个。 - Pekka
1
在登录期间,用户将需要从下拉列表中选择用户类型。在我近30年的IT工作中,我从未见过在登录期间出现这样的情况。 - Mike Sherrill 'Cat Recall'
1
@APC:我认为提升的权限是一个不同的问题,而且不是我认为与学生相关的问题。(一个学生永远不应该被问到她想以家长还是教师身份登录。) - Mike Sherrill 'Cat Recall'
显示剩余8条评论
2个回答

9

您完全没有对GRADE_SECTIONS进行建模。

除非您的学校每个暑假都有大规模的拆迁和建设计划,否则教室将保持不变。每年更改的是作业。因此,应将CLASSROOMS分配给单独的GRADE_SECTION实体,而不是像现在这样合并SECTIONS和CLASSROOMS。

学生应该分配到GRADE_SECTIONS而不是CLASSROOMS。

COURSES应该有许多EXAMS而不是许多EXAM_RESULTS。法语考试可以由学习数学和俄语的学生参加,这根本就没有意义。


-2

应该将考勤(多个)的线条连接到Classroom_Student(1),而不是将考勤连接到学生。我认为将考勤连接到学生是不可能的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接