【问题标题】:Create a Foreign Key from an attribute that is not Primary Key?从不是主键的属性创建外键?
【发布时间】:2017-05-03 09:03:48
【问题描述】:

是否可以在一个表中创建一个外键 - FK 来引用另一个表中的正常属性(不是主键 - PK)?

【问题讨论】:

    标签: database foreign-keys primary-key foreign-key-relationship rdbms


    【解决方案1】:

    如果您在RDBMS 工作:

    是的,你可以。但如果 FK 目标字段的值是唯一的。

    从 FK 指向的列必须具有唯一值以确保 database referential integrity 安全。

    确保这一点的一种方法是在其上定义Unique Constraint

    编辑澄清:

    Table A 有一个 FK 列指向 table B,列名为 B_anycolumn

    B_anycolumn 没有实际需要从table B PK,但它必须具有唯一约束以确保其中的所有值都不同。

    尽管这是可能的,但表之间的正常关系是 PK 列,因为根据定义始终是唯一的。

    【讨论】:

    • 好的,如果我理解的话,我想引用的正常属性不能有重复值。是这样吗?
    【解决方案2】:

    是的。 FOREIGN KEY 约束不必只链接到另一个表中的 PRIMARY KEY 约束;它也可以定义为引用另一个表中唯一约束的列。

    参考这个:

    Foreign Key to non-primary key

    【讨论】:

    • 感谢您的回复!
    猜你喜欢
    • 2021-03-17
    • 2013-09-09
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    相关资源
    最近更新 更多