2

您可以在 SQL 中将一个外键设置为另一个具有 2 列主键的表,该表仅引用 Oracle 的一个主键列吗?

4

2 回答 2

1

PK-FK 关系的规则说,没有列必须相等,数据类型也应该相同。

于 2012-05-11T14:07:05.513 回答
1

外键必须引用整个主键或其他唯一约束。如果父表需要两列来唯一标识一条记录,则其从属表必须在其结构中包含这两列。

通过使用代理或合成主键来避免复合外键的扩散是很常见的,通常使用序列生成。外键引用单列代理键。

复合业务键仍应在具有唯一约束的父表中强制执行。

有时复合主键包含一个也是唯一的列。例如,这是一种执行弧的方式,(超类型和子类型关系)。因此,PERSONS 表将 (PERSON_ID) 作为主键,将 (PERSON_ID, PERSON_TYPE) 作为唯一键。在这种情况下,依赖表可能会引用 (PERSON_ID) 或 (PERSON_ID, PERSON_TYPE),具体取决于特定关系。

于 2012-05-11T14:54:38.907 回答