一个表用于多个hasmany关系

时间:2014-02-28 20:43:08

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

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

我在网站上有几个部分会列出联系人,主要是在活动页面和网站的联系页面上。我会有一个关系表(就像一个例子)eventlisting hasmany contacts,这很好,因为至少我可以将一些联系人附加到事件列表。

有一个表只有一个指向我的主要联系人表的外键,并使用它来列出我的主要联系人吗?

2 个答案:

答案 0 :(得分:1)

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

因此,在您的情况下,联系人表格会为您的事件列表提供一个FK。

如果由于某种原因你需要有多对多的关系,你需要创建一个连接表,你的事件列表和联系人表都有FK。

答案 1 :(得分:1)

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

  1. primary_contact_id表格中添加Events列,作为FK到Contacts表。

  2. 使用包含两个FK的关系表Event_Primary_ContactsEvent_idContact_id。这些应该是表格中的唯一键。

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