我正在尝试为一个班级设计数据库,每个班级都有很多组或者没有,每个组都有很多学生。
我画了两个像这样的实体关系图。 对于图1,出现圆关系。 对于图2,将学生添加到课堂中我必须添加组,所以如果班级没有小组,那么我将无法将学生添加到班级。我如何为这种情况设计数据库?
答案 0 :(得分:1)
这些应该是数据库中的表格:
上述设计支持属于多个群组或完全没有群组的学生。这假设一个组只与一个类相关联。这也假设学生只与一个班级相关联。
答案 1 :(得分:1)
您的第一个图表没有循环功能依赖关系。阅读"很多"一边走一边"一边#34;侧:
Student -> Group (Belong to)
Student -> Group (Manage)
Group -> Student (Manage)
Group -> Class (Has)
Student -> Class (Belong to)
班级不会确定学生或小组,因此没有循环"参考"。
循环关系可能是一个警告,您需要注意可能的异常 - 在这种情况下,请注意学生可以通过从学生到班级的两条路径与不同的班级相关联。只要您注意您的数据仍然有效,循环关系就不是问题。
对于第二个图,您可以采用每个类至少有一个组的约定(即,如果没有子组,则整个类计为一个组)。通过这种方式,每个学生都可以通过他们的小组与课程相关联,而且您不需要直接记录该关联。