【问题标题】:One table used in multiple hasmany relationships一张表用于多个hasmany关系
【发布时间】:2014-04-02 01:27:35
【问题描述】:

我正在为我正在开发的网站开发我的表,在过去几年没有做太多 SQL 之后,我有点生疏了。我理解规范化等概念,但这有点令人困惑:

我在网站中有几个部分将列出联系人,主要是在活动页面和网站的联系人页面上。我会有一个类似于(仅作为示例)eventlisting hasmany contacts 的关系表,这很好,因为至少我可以将许多联系人附加到事件列表中。

如果有一个表只有一个指向我的主要联系人表的外键,并用它来列出我的主要联系人,这会很好吗?

【问题讨论】:

    标签: mysql sql normalization foreign-key-relationship has-many


    【解决方案1】:

    如果一个活动只能有一个主要联系人,您可以通过两种方式进行:

    1. Events 表中添加一个primary_contact_id 列,作为Contacts 表的FK。

    2. 使用关系表 Event_Primary_Contacts,包含两个 FK:Event_idContact_id。这些应该是表中的唯一键。

    您还可以在Event_Contacts 表中添加一个布尔值Primary 列。但是,这不允许数据库实现每个事件只能有一个主要联系人的约束。

    【讨论】:

      【解决方案2】:

      通常在一对多关系中,包含 FK 的是“多”。这样,许多事件列表可以映射到同一个联系人列表。

      因此,在您的情况下,联系人表将具有您的事件列表表的 FK。

      如果出于某种原因您需要建立多对多关系,您可能希望创建一个联接表,您的事件列表和联系人表都将具有 FK。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-11-08
        • 2021-07-31
        • 1970-01-01
        • 2014-07-24
        • 2015-11-22
        • 2021-07-11
        • 1970-01-01
        • 2016-03-13
        相关资源
        最近更新 更多