为班级和学生设计班级数据库

时间:2016-05-27 08:53:54

标签: database

我正在尝试为一个班级设计数据库,每个班级都有很多组或者没有,每个组都有很多学生。 enter image description here

我画了两个像这样的实体关系图。 对于图1,出现圆关系。 对于图2,将学生添加到课堂中我必须添加组,所以如果班级没有小组,那么我将无法将学生添加到班级。我如何为这种情况设计数据库?

2 个答案:

答案 0 :(得分:1)

这些应该是数据库中的表格:

  1. 类表:主键是ClassId。
  2. 学生表:主键是StudentId,FK(外键)是ClassId。
  3. 组表:主键为GroupId,它包含ClassId为FK。
  4. Groups_Student表:此表包含组和学生的映射。所以FK将是GroupId和StudentId。
  5. 上述设计支持属于多个群组或完全没有群组的学生。这假设一个组只与一个类相关联。这也假设学生只与一个班级相关联。

答案 1 :(得分:1)

您的第一个图表没有循环功能依赖关系。阅读"很多"一边走一边"一边#34;侧:

Student -> Group (Belong to)
Student -> Group (Manage)
Group -> Student (Manage)
Group -> Class (Has)
Student -> Class (Belong to)

班级不会确定学生或小组,因此没有循环"参考"。

循环关系可能是一个警告,您需要注意可能的异常 - 在这种情况下,请注意学生可以通过从学生到班级的两条路径与不同的班级相关联。只要您注意您的数据仍然有效,循环关系就不是问题。

对于第二个图,您可以采用每个类至少有一个组的约定(即,如果没有子组,则整个类计为一个组)。通过这种方式,每个学生都可以通过他们的小组与课程相关联,而且您不需要直接记录该关联。