【问题标题】:SQL - Multiple inheritanceSQL - 多重继承
【发布时间】:2014-08-02 05:03:39
【问题描述】:

我有一个“子表”(C)和两个“超表”(A,B):

  • A (id PRIMARY KEY)
  • B (id PRIMARY KEY)
  • C (id1 , id2, c_col)

为了进行多重继承,我可以通过创建 FOREIGN KEY 轻松声明 C.id1 引用 A.id 和 C.id2 引用 B.id。但是,由于我的模型(实际上因为 A 和 B 也是另一个超级表的继承),id1 和 id2 将始终具有相同的值一次出现。我的问题是,您认为除了“id1”和“id2”外键之外,我还需要在 C 表中创建一个附加的“id”列作为 PRIMARY KEY 吗?更容易的是,我可以随意选择 id1 或 id2 列并将其定义为 PRIMARY KEY 吗?

我不知道我是否很清楚。如果没有,请告诉我您通常如何在 SQL 中建模多重继承。

【问题讨论】:

  • id1 == id2 一直都需要表 C 吗?
  • 您的问题不清楚。 “A和B也是另一个超级表的继承”是什么意思?它们是否代表另一个类的重叠子类?为什么不回复@Barmar 的评论问题?

标签: sql database inheritance modeling


【解决方案1】:

您不应随意选择 id1 或 id2 列并将其定义为 PRIMARY KEY。 最好在 C 表中使用不同的 id 作为主键。 希望你清楚,如果不是请更新。

【讨论】:

  • “不同的 id 作为 C 中的主键”是什么意思?您如何强制 C 的行需要 A 和 B 中的相应行?
  • @NicolasCanac 这篇文章可能会阐明prashant回答背后的原因→stackoverflow.com/questions/337503/…
猜你喜欢
  • 2010-09-27
  • 2012-03-07
  • 2012-06-02
  • 2017-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多