簡體   English   中英

數據庫設計最佳實踐-具有多個引用的鏈接/連接表

[英]Database design best practices - linking/junction table with multiple references

我有多對多關系中的Membership和Person表與Membership_person鏈接表鏈接在一起(列:person_id和Membership_id)

每個人可以擁有一個或多個地址,電話和電子郵件。 這些存儲在單獨的表中,例如地址,電話和電子郵件表。

我現在面臨的新情況是擁有多個成員資格的人,但他/她希望為每個成員資格使用不同的地址,電話號碼和電子郵件。

這是一個例子:

M1 => P1 
   => address-1 
   => phone-1 
   => Email-1

M2 => P1 
   => address-2 
   => phone-2 
   => Email-2

M3 => P1 
   => address-3 
   => phone-3 
   => Email-3

解決上述問題的最佳數據庫是什么? 我應該創建一個單獨的鏈接表,例如Membership_address,membership_phone和Membership_email嗎? 還是僅將address_id,phone_id,email_id添加到現有的membership_person表中?

謝謝 :)

這稱為關聯數據 -有關兩個實體之間的關聯的數據 -並將其存儲在關聯表中。

諸如此類(使用mysql語法):

create table membership_person (
    person_id int not null references person,
    membership_id int not null references membership,
    address_id int not null references address,
    phone_id int not null references phone,
    email_id int not null references email,
    primary key (person_id, membership_id)
)

額外的3列定義每個成員的人員聯系實體。

擴展,以下是一個建議。

:Membership_Person

復合主鍵 (membership_id,person_id,table_id,優先級)

領域

  • Membership_id-引用成員資格表
  • person_id-引用人員表
  • table_id-表示電話,地址或電子郵件表作為該行的參考表
  • table_entry_id-所引用表的主鍵
  • 優先級 -此人的首選條目+成員身份+(電話,地址或電子郵件)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM