数据库建模

时间:2013-01-18 07:26:40

标签: database database-design

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

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

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

选修表包含选修ID作为主键的大学提供的选修课程列表。

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

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

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

1 个答案:

答案 0 :(得分:1)

第二种方式通常被认为是“更好”的方式,因为它是标准化的,并且允许选择性值在未来以更少的中断进行更改,并允许数据库引擎在运行中优化查询。如果值是一个字符串,您实际上可以在db中节省一些空间。这是我认为你描述过的模型:

Student
    StudentID

Elective
    ElectiveID

ElectiveValue
    ElectiveValueID
    FK_ElectiveID
    Value

StudentElective
    StudentElectiveValueID
    FK_StudentID
    FK_ElectiveValueID