【发布时间】:2017-05-03 09:03:48
【问题描述】:
是否可以在一个表中创建一个外键 - FK 来引用另一个表中的正常属性(不是主键 - PK)?
【问题讨论】:
标签: database foreign-keys primary-key foreign-key-relationship rdbms
是否可以在一个表中创建一个外键 - FK 来引用另一个表中的正常属性(不是主键 - PK)?
【问题讨论】:
标签: database foreign-keys primary-key foreign-key-relationship rdbms
如果您在RDBMS 工作:
是的,你可以。但仅如果 FK 目标字段的值是唯一的。
从 FK 指向的列必须具有唯一值以确保 database referential integrity 安全。
确保这一点的一种方法是在其上定义Unique Constraint。
编辑澄清:
Table A 有一个 FK 列指向 table B,列名为 B_anycolumn。
B_anycolumn 没有实际需要从table B PK,但它必须具有唯一约束以确保其中的所有值都不同。
尽管这是可能的,但表之间的正常关系是 PK 列,因为根据定义始终是唯一的。
【讨论】:
是的。 FOREIGN KEY 约束不必只链接到另一个表中的 PRIMARY KEY 约束;它也可以定义为引用另一个表中唯一约束的列。
参考这个:
【讨论】: