我的数据模型中有四个表,即
学生表包含学生ID为主键的学生列表。
选修表包含选修ID作为主键的大学提供的选修课程列表。
“选择性值”表包含每个选修的可能值列表。此表的主键是选择性ID和值id(复合主键)的组合,因此对于下一个选项,该值从1开始。
学生选课表包含学生ID,选修ID和值id作为主键。但我被要求做以下更改,
拥有选择值表的id而不是复合主键,并使用学生选课表中的主键(id)。所以选修表和学生选修课之间的联系就打破了。我可以知道前者或后者的最佳方法是什么?
答案 0 :(得分:1)
第二种方式通常被认为是“更好”的方式,因为它是标准化的,并且允许选择性值在未来以更少的中断进行更改,并允许数据库引擎在运行中优化查询。如果值是一个字符串,您实际上可以在db中节省一些空间。这是我认为你描述过的模型:
Student
StudentID
Elective
ElectiveID
ElectiveValue
ElectiveValueID
FK_ElectiveID
Value
StudentElective
StudentElectiveValueID
FK_StudentID
FK_ElectiveValueID