0

我的数据模型中有四个表,即

  • 学生,
  • 选修课,
  • 选修价值,和
  • 学生选修课。

Student 表包含以学生 ID 作为主键的学生列表。

Elective 表包含大学提供的选修课列表,其中选修课 ID 作为主键。

选修课值表包含每个选修课的可能值列表。该表的主键是可选 id 和值 id 的组合(复合主键),因此对于下一个可选的值从 1 开始。

学生选修表包含学生id、选修id和值id作为主键。但我被要求进行以下更改,

具有选修值表的 id 而不是复合主键,并使用学生选修表中的主键(id)。因此,选修课表和学生选修课之间的联系中断了。我可以知道前者或后者的最佳方法是什么?

4

1 回答 1

1

第二种方式通常被认为是“更好”的方式,因为它是规范化的,并且允许可选值在未来以更少的中断发生变化,并允许数据库引擎动态优化查询。如果该值是一个字符串,您实际上可能会在数据库中节省一些空间。这是我认为您描述的模型:

Student
    StudentID

Elective
    ElectiveID

ElectiveValue
    ElectiveValueID
    FK_ElectiveID
    Value

StudentElective
    StudentElectiveValueID
    FK_StudentID
    FK_ElectiveValueID
于 2013-01-18T07:56:39.623 回答