我正在为我正在开发的网站开发表格,在过去几年没有做太多SQL之后,我有点生疏了。我理解规范化的概念等等,但这有点令人困惑:
我在网站上有几个部分会列出联系人,主要是在活动页面和网站的联系页面上。我会有一个关系表(就像一个例子)eventlisting hasmany contacts
,这很好,因为至少我可以将一些联系人附加到事件列表。
有一个表只有一个指向我的主要联系人表的外键,并使用它来列出我的主要联系人吗?
答案 0 :(得分:1)
通常在一对多的关系中,包含FK的是“很多”。这样,许多事件列表可以映射到相同的联系人列表。
因此,在您的情况下,联系人表格会为您的事件列表提供一个FK。
如果由于某种原因你需要有多对多的关系,你需要创建一个连接表,你的事件列表和联系人表都有FK。
答案 1 :(得分:1)
如果某个活动只能有一个主要联系人,您可以通过两种方式进行:
在primary_contact_id
表格中添加Events
列,作为FK到Contacts
表。
使用包含两个FK的关系表Event_Primary_Contacts
:Event_id
和Contact_id
。这些应该是表格中的唯一键。
您还可以在Primary
表中添加布尔Event_Contacts
列。但是,这不允许DB实现约束,即每个事件只能有一个主要联系人。