从不是主键的属性创建外键?
Create a Foreign Key from an attribute that is not Primary Key?
是否可以在一个 table 中创建一个外键 - FK,它将引用另一个 table 中的普通属性(不是主键 - PK)?
如果您在RDBMS工作:
是的,你可以。但是 ONLY 如果 FK 目标字段的值是唯一的。
FK 指向的列必须 具有唯一值以确保 database referential integrity 安全。
确保如此的一种方法是在其上定义 Unique Constraint。
编辑澄清:
Table A
有一个 FK 列指向 table B
,列名为 B_anycolumn
.
实际上没有必要 B_anycolumn
从 table B
进行 PK,但它必须具有唯一约束以确保其中的所有值都不同。
尽管这是可能的,但表之间的正常关系是 PK 列,因为根据定义总是唯一的。
是的。 FOREIGN KEY 约束不必仅链接到另一个 table 中的 PRIMARY KEY 约束;它也可以定义为在另一个 table.
中引用 UNIQUE 约束的列
参考这个:
Foreign Key to non-primary key
是否可以在一个 table 中创建一个外键 - FK,它将引用另一个 table 中的普通属性(不是主键 - PK)?
如果您在RDBMS工作:
是的,你可以。但是 ONLY 如果 FK 目标字段的值是唯一的。
FK 指向的列必须 具有唯一值以确保 database referential integrity 安全。
确保如此的一种方法是在其上定义 Unique Constraint。
编辑澄清:
Table A
有一个 FK 列指向 table B
,列名为 B_anycolumn
.
实际上没有必要 B_anycolumn
从 table B
进行 PK,但它必须具有唯一约束以确保其中的所有值都不同。
尽管这是可能的,但表之间的正常关系是 PK 列,因为根据定义总是唯一的。
是的。 FOREIGN KEY 约束不必仅链接到另一个 table 中的 PRIMARY KEY 约束;它也可以定义为在另一个 table.
中引用 UNIQUE 约束的列参考这个:
Foreign Key to non-primary key