使用TPH继承改进我的数据库设计

时间:2013-01-12 19:48:37

标签: c# sql database database-design table-per-hierarchy

这是我目前的数据库设计,暂时只看学生,老师和班级表。

enter image description here

我正在尝试使用TPH继承将一些表转换为新闻。例如。

创建一个名为Person的新表,其中包含:

  • 标识,
  • 全名,
  • EnrollmentDate(针对学生),
  • 电子邮件(针对学生),
  • HireDate(老师)

但是剩下一个名为ClassId的字段,它包含在Student表中。在这个问题上,我不知道是否应该创建一个连接表来存储ClassIdPersonId,或者只是将ClassId放入Person表中。这是我最大的疑问。

我必须在哪里放置ClassId字段?

我必须提到每个学生只能在一个班级,而不是很多。教师可以根据自己的需要开设多门课程。

1 个答案:

答案 0 :(得分:0)

我认为你没有正确地对域进行建模:

首先,无论学生是否上课,都必须有学生 在当前模型中,似乎学生是一个弱实体并依赖于课程。

课程也独立于今年可能会发生的学期课程,明年不会发生。

但是如果您想要TPH策略来建模数据库,那么link可能会对您有所帮助。

您将拥有一个Person表,然后是一个引用Person的Teacher表,以及一个也引用Person表的Student。 最后,学生表通过联合表提及学期课程。