繁体   English   中英

如何修复引用多个表的列?

[英]How can i fix A column referencing multiple tables?

我有4张桌子:

  • ConditionalOffer (PK ID、描述等)
  • UnconditionalOffer (PK ID、描述、...)
  • Offer (PK ID、报价外键参考条件有条件的Offer.ID、报价外键参考无条件的Offer.ID)
  • Applicant (ID, Offer FOREIGN KEY REFERENCES Offer.ID,...)

我知道我的代码在表Offer是错误的,因为一列不能引用多个表。 我怎样才能解决这个问题?

一列可以是多个外键约束的一部分,但您的语法不正确,因为您两次指定源列。

相反,要么使用像这样的内联约束:

create table Offer (
    ID int primary key, 
    Offer int 
       FOREIGN KEY (offer) REFERENCES ConditionalOffer (ID), 
       FOREIGN KEY (offer) REFERENCES UnconditionalOffer (ID)
);

或者使用明确命名的约束(这可能更干净):

create table Offer (
    ID int primary key, 
    Offer int,
    constraint fk_cond   FOREIGN KEY (offer) REFERENCES ConditionalOffer (ID), 
    constraint fk_uncond FOREIGN KEY (offer) REFERENCES UnconditionalOffer (ID)
);

虽然这是可能的,但它确实引发了关于数据库设计的问题: ConditionalOffer 和 UnconditionalOffer 中的 ID 真的相同吗? 它们是如何保持同步的? 如果这些表共享主键(将差异重构为其他表),它们不应该是一个实体吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM