【问题标题】:Why do you need a junction table to implement a many-to-many relationship?为什么需要联结表来实现多对多关系?
【发布时间】:2013-06-27 09:32:06
【问题描述】:

这一直困扰着我,也许有人可以帮助澄清。

假设我有书和作者:一本书可以写很多作者,而一个作者可以写很多书。

为什么我不能使用以下架构捕获它?为什么需要连接表?

图书 -------- BookID (PK) 作者 ID (PK) 书名 作者 -------- 作者 ID (PK) 作者姓名

【问题讨论】:

    标签: database many-to-many junction-table


    【解决方案1】:

    因为要拥有多位作者的图书,您必须在 Books 表中创建一个重复行。在您的示例中,这还不错,但想象一下 Books 表是否有 10 列,或者 20 列或更多列。所有这些数据都将被复制,从而增加了数据完整性随着时间的推移而失控的风险。

    【讨论】:

    • 但是,严格来说,虽然我的示例是非规范化的,并且存在重复数据的问题,但仍然可以捕获多对多关系,对吗?
    • 是的。您可以通过多种方式做到这一点,不同的设计会有自己的优缺点。
    • 但是 Jason,我正在阅读的所有书籍和资源都指出,要解决多对多关系,您需要第三张表。
    • 我假设您正在阅读的书籍和资源正在鼓励您使用最佳实践 - 这将是使用 Join 表。没有一个也不是绝对不可能做到的,但这也不是一个普遍接受的好设计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2011-07-22
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    相关资源
    最近更新 更多