【问题标题】:MySQL DB Foreign KeyMySQL 数据库外键
【发布时间】:2014-09-02 11:06:36
【问题描述】:

与使用外键和参照完整性约束的 DDL 相比,使用查询 (JOINS) 在 MySQL 数据库中创建表关系的优缺点是什么?我收到了一个在其表上没有关系(无 FK)的数据库,以识别表之间的关系。查询数据时,将在 JOINS 上创建关系。

【问题讨论】:

    标签: mysql sql foreign-keys referential-integrity


    【解决方案1】:

    使用外键的主要原因是数据库中的数据总是一致的。这与连接“独立” - 当您使用外键时,您仍然需要使用连接。

    在 MySQL 中它还有一个很好的副作用:如果使用外键,则必须定义索引,这可能会加快查询速度。

    但是使用外键,您可以确保您所引用的行必须存在于数据库中。见https://en.wikipedia.org/wiki/Foreign_key。

    【讨论】:

    • 感谢 MrTux 的及时回复。我知道您仍然在带有 FK 的表上使用 JOINS。我也知道用 FK 定义表可以保持数据完整性。我想我想要得到的是......在不使用外键来定义表关系的情况下设计数据库是否,还是没那么重要?除了数据完整性之外,以这种方式设计数据库的主要缺点是什么,即没有 FK?谢谢。
    • 我不会再设计任何没有 FK 的数据库了。唯一的缺点是插入子表可能会慢一些,因为必须完成父表中键的存在。但我认为与“干净”和一致的数据库相比,它是可以忽略的。 FK 仅支持 MySQL 中的 InnoDB 表,这也可能是许多 DB 不使用 FK 的原因,因为这些只是 MyISAM(我也不建议这样做 - InnoDB 具有基于行的锁定并支持事务)。
    • 谢谢 MrTux。正是我想要的那种回应。
    猜你喜欢
    • 2018-11-08
    • 2013-07-16
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2011-04-23
    • 2014-01-13
    相关资源
    最近更新 更多