【问题标题】:Improving my database design using TPH Inheritance使用 TPH 继承改进我的数据库设计
【发布时间】:2012-12-27 03:55:21
【问题描述】:

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

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

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

  • 身份证,
  • 全名,
  • EnrollmentDate(针对学生),
  • 电子邮件(学生),
  • HireDate(教师)

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

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

不得不提的是,每个学生只能上一个班级,而不是很多。教师可以根据需要开设许多课程。

【问题讨论】:

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


    【解决方案1】:

    我认为您没有正确建模域:

    首先你必须有学生,不管他们有没有课,
    在当前模型中,Student 似乎是一个弱实体并且依赖于类。

    课程也独立于学期课程,学期课程可能在今年开课,明年不会开课。

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

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

    【讨论】:

    • 因此,(Students & Teachers 是一张名为 Person 的表)和 Classes(或课程)应该是独立的表。从属表将是 CourseIntructor(对于教师)和 Enrollment 对于学生作为联接表。你怎么看?
    • 看看这个链接:file:///Users/jani/Downloads/ER%20Model%20for%20the%20University%20Database.doc,如果你在谷歌上搜索,你会查找更多示例。
    猜你喜欢
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多