Database 是否可能有一个非';是否覆盖引用表的整个主键?

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)

我有两张桌子:

表A:使用复合主键

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中的唯一条目,因为。。。你能澄清你问题的那一部分吗?