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

时间:2011-11-03 06:41:14

标签: mysql database-design relational-database database-schema database-normalization

我正在为学校管理系统创建系统,并提出附加的数据库架构。

Database diagram http://oi40.tinypic.com/15x21ig.jpg

以下是系统的工作原理:

  1. 学校有很多学生和老师。它还教授了许多课程(科目)。年级可以分配许多课程。这些课程将分配给该特定年级的学生。
  2. 学生的水平分为等级和部分。学生可以达到5年级,但如果5年级学生人数很多,他们会分成几个部分。例如:5年级A部分,5年级B部分。
  3. 学生被安排在独特的教室里。整个教室将是独一无二的。 2010年的5年级A级课堂将与2011年的5年级A级课堂不同。
  4. 学生被分配到父母。父母可以在学校有一个以上的学生。
  5. 可以为教师分配一个或多个教室。
  6. 学生每天都会参加学生的学习
  7. 会有很多类型的考试。为每个科目(课程)存储考试结果。
  8. 我是数据库规范化的初学者,如果数据库看起来不合适,任何人都可以给我一些提示,我会很高兴。

    编辑:

    此外,只有一个登录点。在上述情况下,在登录期间,用户必须从下拉列表中选择用户类型。该下拉选择将用于查询相应的表以登录系统。另一种方法是使用一个公共user表,它将存储user_id, email, password, last_login_date, last_login_ip,但会将其他详细信息存储在各个表中,例如student, parent, teacher。那么,实现它的首选/正确方法是什么?

2 个答案:

答案 0 :(得分:7)

您根本不会对GRADE_SECTIONS建模。

除非你的学校每个暑假都有大规模的拆迁和施工计划,否则教室将是相同的。每年都会更改分配。所以应该将CLASSROOMS分配给一个单独的GRADE_SECTION实体,而不是像现在那样合并SECTIONS和CLASSROOMS。

学生应被分配到GRADE_SECTIONS而不是课堂。

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

答案 1 :(得分:-1)

应将出席人数(很多)中的一行绘制到Classroom_Student(1)上。我认为不可能吸引学生参加。