Erd
基本 ERD 問題:使用多少個實體
假設有買家、賣家和評論者,它們都有共同的屬性,例如:
- name
- 地址
- 登錄資訊(使用者名、密碼、電子郵件)
而且這三個人都有各自角色獨有的能力。
例如買家可以購買,賣家可以出售,評論者可以評論
假設一個人只能是三個角色之一,那麼為這種情況設計 ERD 的最佳方法是什麼?
每個角色有 3 個單獨的實體 + 一個與所有 3 個角色實體有關係的 LoginInfo 實體會好嗎?
如果是這樣,在所有 3 個角色實體中都有名稱、地址是否是多餘的?
通常在這些情況下,最好有一個帶有該人類型標誌的單一實體。在許多情況下,當您使用您的系統時,您可能會發現有人可以是這些的任意組合。如果他們更新了他們的姓名/地址/使用者名/密碼,您希望同時為他們的所有角色更新它。這有助於使用帶有標誌的單個實體來表示它們的類型:
Person ------- PersonID FirstName Surname ... AddressLine1 AddressLine2 ... Username Password ... Seller Boolean Buyer Boolean Reviewer Boolean
編輯:
或者,正如 John M 所建議的那樣,根據您是否要創建更多人員角色,您可以有 2 個實體,在它們之間進行查找,以確定人員能夠執行的角色類型:
Person ------- PersonID FirstName Surname ... AddressLine1 AddressLine2 ... Username Password
角色表
Role ------------ RoleID RoleDescription
(此表將包含賣家/評論者/買家開始)
然後這個連結表:
PersonRole ------------ PersonID RoleID
這將使您能夠在將來輕鬆添加角色,而無需修改您的 Person 表。因此,如果您創建了諸如“編輯器”之類的角色,則只需在角色表中創建行,並為要添加為編輯者的人員插入到 PersonRole 表中。