Database-Design

數據庫設計:4 種類型的使用者,但具有不同的功能,單獨的還是一張表?

  • November 1, 2014

我有 4 種類型的使用者:

Admins, normal user, company,service provider

管理員和普通使用者共享一些屬性 ( id .first name ,last name ,phone ,mail) 公司和服務提供商也共享一些屬性 ( id .company name ,phone ,fax ,mail)。

他們也與應用程序中的其他實體互動以訪問某些功能,如發布工作或事件或申請它

將它們全部放在一個像 tbl_users 這樣的使用者表中更好還是為每個使用者創建單獨的表更好?或添加到兩個表中,一個用於(管理員和普通使用者),另一個用於(公司和服務提供商)

您可以選擇的一個簡單設計是選擇三張桌子

桌子MasterUser

UserId - PK - Identity(auto increment) 
phone
mail

桌子AdminNormalUser

UserId -- Pk of this table and UserId of `MasterUser`
FirstName
LastName

桌子CompanyPorviderUser

UserId -- Pk of this table and UserId of `MasterUser`
CompanyName
Fax 

這種設計將為每個使用者提供一個唯一的 ID,無論是 Admin、Normal、Company 還是提供者使用者,這是使用這些表的應用程序的要求,並且它將擺脫帶有NULL值的列。

如果您保留單獨的表,如果兩種類型的使用者都與相同的數據進行互動,您可能會面臨參照完整性問題,但是您不希望使用者表中出現不必要的空值,所以我建議為非普通使用者創建一個單獨的使用者屬性表屬性

所以 1) tbl_user 包含所有帶有標誌的公共列以指定使用者類型 2) tbl_AdminAttribute 包含相關的 UserID + Extra Filed 3) tbl_CompanyAttribute 包含相關的 UserID + Extra Filed 4) tbl_ServiceProviderAttribute 包含相關的 UserID + Extra Filed

希望這是有道理的

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