【问题标题】:Composite primary key question in MySQLMySQL中的复合主键问题
【发布时间】:2009-08-08 14:24:04
【问题描述】:

我是数据库的新手。我正在使用 MySQL,并且我有一个表 A,它使用三个属性来形成一个复合主键:

答: [key1, key2, key3], dateCreated, createdBy, ...

现在我有另一个表 B,它需要引用上表中的记录。现在,再次重用上述所有三个属性来形成密钥似乎很痛苦。是否可以使用表 A 的附加自动递增虚拟“id”属性作为主键,并将其用作表 B 中的引用?哪个是正确的做法?

【问题讨论】:

    标签: mysql database database-design


    【解决方案1】:

    确实如此。它被称为surrogate key:代理键不是从应用程序数据派生的。

    [关于代理键的使用存在争议。链接到列出优点/缺点的 wiki 文章。]

    正如@Scharrels 指出的那样,如果您使用代理键,则应将唯一约束应用于您的 3 个字段。

    【讨论】:

      【解决方案2】:

      最好对集合 (key1, key2, key3) 设置唯一约束,并将单个“虚拟” id 作为主键,因为它将用作其他表的参考。

      如果您想加快查找速度,您可以在集合上添加额外的索引 (key1, key2, key3)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 2013-11-22
        • 2013-03-05
        • 2011-07-28
        • 1970-01-01
        • 2011-08-01
        • 2011-06-30
        相关资源
        最近更新 更多