下面是一个类似的(和简化的)例子来设计问题,我面对:关系数据库设计(正火许多一对多映射)
假设你有学生,类和档次。学生可以有很多不同的课程。每个班级都有许多不同的学生。每个(学生,班级)对都有一个等级。
我应该布局数据库(MySQL数据库),如:
选项1)
students table - (student_id, student_name)
classes table - (class_id, class_name)
students_classes table - (student_class_id, student_id, class_id)
grades table - (student_class_id, grade)
选项2)
students table - (student_id, student_name)
classes table - (class_id, class_name)
grades table - (student_id, class_id, grade)
还是应设计成别的东西吗?选项2现在看起来更简单了,但在将来,我可能需要与每个(student_id,class_id)对相关的其他统计信息(在这种情况下,选项1似乎更好一些?但选项1仍然感觉有点过于复杂)。
你有什么建议?谢谢。
在你的榜样,是不是成绩的学生的属性? – JNK 2010-11-19 20:26:16
假设它也可以是一个数字等级 – Peter1491 2010-11-19 20:27:40
@JNK:是的,但它也是班级的一个属性 - 学生可能在数学中获得A,在英语中获得F. – 2010-11-19 20:35:45