Erd

基本 ERD 問題:使用多少個實體

  • November 30, 2016

假設有買家、賣家和評論者,它們都有共同的屬性,例如:

  • 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 表中。

引用自:https://dba.stackexchange.com/questions/156829