Database-Design
數據庫設計:4 種類型的使用者,但具有不同的功能,單獨的還是一張表?
我有 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
希望這是有道理的