您是否可以将SQL中的表中的外键设置为具有2列主键的另一表中的外键仅引用其中一个主键列Oracle?具有包含2列的主键的表的外键引用
2
A
回答
1
外键必须引用整个主键或其他唯一约束。如果父表需要两列来唯一标识一条记录,那么它的依赖者必须在其结构中包含两列。
通过使用替代或合成主键(通常用序列生成)来避免复合外键的扩散是非常常见的。外键引用单列代理键。
复合商业密钥仍应在父表中使用唯一约束强制执行。
有时候复合主键包含一个也是唯一的列。例如,这是一种强制执行弧的方式(超类型和子类型关系)。因此,PERSONS表将具有(PERSON_ID)作为主键和(PERSON_ID,PERSON_TYPE)作为唯一键。在这种情况下,依赖表可能会根据特定关系引用(PERSON_ID)或(PERSON_ID,PERSON_TYPE)。
1
PK-FK关系规则规定,列的数量必须相同,数据类型也应该相同。
+1
关于搜索引擎的事情是他们可以很容易地找到剽窃答案的原始来源:technet.microsoft.com/en-us/library/cc917573.aspx请不要试图通过批发报价来争取代表:这不是SO的精神。 – APC
相关问题
- 1. 外键的表2列主键(CompositeId)
- 2. Laravel将外键引用移动到具有两列的主键?
- 3. 创建具有复合主键的表引用两个外键
- 4. 跨2个表引用2个主键的外键?
- 5. Ebean - 包含外键的组合主键
- 6. 具有相同唯一列的表的主键或外键
- 7. 更改其他表中外键引用的表的主键列
- 8. 将外键约束添加到包含现有数据的表的主键列
- 9. 包含具有2个主键的ManyToOne对象的实体
- 10. LinqToSql - 。从包含主键的内存列表中包含多列主键
- 11. SQL包含与主键相关的外键的表的返回列表
- 12. 引用的外键具有错误的列号。应该是2
- 13. 如何引用具有多个主键列的一个外键列
- 14. Nhibernate:外键必须与引用的主键具有相同的列数
- 15. 外键必须与引用的主键具有相同的列数
- 16. SQL Server从表中选择主键包含多列的主键
- 17. 如何查找表A的主键具有外键约束的表的列表?
- 18. 休眠 - 复合主键包含外键
- 19. nhibernate外键必须与引用主键具有相同的列数
- 20. 被引用表'PayRoll'中没有与外键'fk_EmployeeNumber'中的引用列表匹配的主键或候选键'
- 21. 有在引用表上没有主或候选键的引用列列表中的外键
- 22. 使用多列(复合)主键包含外键关系
- 23. 从多列主键中包含的一列到另一列的外键
- 24. 如何更新2个表中具有外键的2列
- 25. 对外键的两个主键引用
- 26. 如何构建具有复合主键的表的外键?
- 27. 外键必须与引用的主键具有相同的列数。但我没有使用复合键
- 28. 加入3和表2具有主键和第三个具有两个外键
- 29. JPA 2 - 仅包含复合主键中的一个字段的外键?
- 30. MySQL:使用引用由外键组成的主键的外键创建表
你的意思是一个两列主键吗?你不能在一个表上有两个主键...... –
是的,这就是我的意思 – Spektor
外键可以定义为多列。但是,复合外键必须引用具有相同列数和相同数据类型的复合主键或唯一键。因为复合主键和唯一键限制为32列,所以组合外键也限制为32列。 (在9i中,但我认为它不同于更高版本。http://docs.oracle.com/cd/B10500_01/server.920/a96524/c22integ.htm) –