Database 是否可能有一个非';是否覆盖引用表的整个主键?
我有两张桌子: 表A:使用复合主键Database 是否可能有一个非';是否覆盖引用表的整个主键?,database,composite-primary-key,Database,Composite Primary Key,我有两张桌子: 表A:使用复合主键 CommonID (PK) | Month (PK) | some data... ----------------------------------------- 1 | May 2011 | ... 1 | June 2011 | ... 2 | May 2011 | ... 2 | June 2011 | ... 表B:参考表A ID (PK)
CommonID (PK) | Month (PK) | some data...
-----------------------------------------
1 | May 2011 | ...
1 | June 2011 | ...
2 | May 2011 | ...
2 | June 2011 | ...
表B:参考表A
ID (PK) | A_CommonID (FK)| some data...
-----------------------------------------
... | 1 | ...
... | 2 | ...
正如您所看到的,表B
没有引用整个主键,但它肯定会始终引用表a
中的唯一条目,因为在SQL查询中,指定的已用月份有一个全局值,将用于a.month
现在我的问题是,这是允许的还是我违反了数据库设计的几个规则
我真的很感激你能给我一个好的答案,因为我会在我的学士学位论文中用到它
提前多谢 否,这是不允许的 如果复合主键包含多个列,则外键也必须是复合的,并引用主键中涉及的所有列
CommonID (PK) | Month (PK) | some data...
-----------------------------------------
1 | May 2011 | ...
1 | June 2011 | ...
2 | May 2011 | ...
2 | June 2011 | ...
外键必须引用主键、整个键以及除键以外的所有键(因此请帮助您使用Codd):-)
您可以在
表a
中的a_CommonID
列上单独设置一个唯一索引,以便表B
可以引用该唯一索引(而不是PK)。我不理解这句话,但它肯定会引用表a中的唯一条目,因为。。。你能澄清你问题的那一部分吗?