我有2个表:Student
和Class
many-to-many
与Student_Class(StudentID, ClassID) table.
的关系
我还需要表Payment(StudentID, ClassID, Fee...)
和Request(StudentID, ClassID, Request,...).
我应该像上面那样创建Student_Class表,或者像这样:(StudentClassID,StudentID, ClassID)
然后删除Payment
和Request
中的2个PK和新PK:StudentClassID
?哪一个更好,为什么?
答案 0 :(得分:2)
在这个答案中可能需要考虑两件事,一个是技术数据库方面(诸如性能,存储和完整性之类的东西),另一个是业务问题。
所以,重申一下,给出以下内容:
Student (StudentID, ...)
Class (ClassID, ...)
目前其他表有两种选择:
A 的
Student_Class (StudentID, ClassID, ...)
Payment (StudentID, ClassID, Fee, ...)
Request (StudentID, ClassID, Request, ...)
乙
Student_Class (Student_ClassID, StudentID, ClassID, ...)
Payment (Student_ClassID, Fee, ...)
Request (Student_ClassID, Request, ...)
第二种方案使用较少的存储空间(+),查询( - )的性能可能略低,而且更复杂( - )。
如果企业想跟踪学生的付款或与班级( - )无关的请求,则选项B会使事情变得棘手。
在大多数情况下,我可能会推荐选项A.