Database-Design
這些實體的正確表關係是什麼?
我想儲存以下實體的所有數據:
- 使用者
- 項目
- 角色
一個使用者可以在多個項目中工作,並且可以有多個角色,但是每個項目中應該只允許一個使用者的一個角色,例如:
Jhon 只能在項目#1 中擔任開發人員,也可以在項目#2 中擔任設計師
我認為關係應該是:
表 User_Project 的位置:
- 使用者身份
- 項目編號
- 角色 ID
user_id,project_id 組合是主鍵,role_id 欄位是角色表的外鍵,每個欄位對應一行:
role_id 角色 1 項目經理 2 開發人員 3 設計師
這是描述實體之間關係的正確方法嗎?
起初我考慮了每個使用者的多對多關係 - 項目,項目 - 角色和使用者 - 角色,但我不認為它描述了“每個使用者在每個項目中只有一個角色”。
我只會有:
使用者 - 角色 - 項目
我認為沒有角色的使用者不能成為項目的一部分?ROLE 表有助於您在使用者和項目之間進行多對多映射:一個使用者可以映射到多個項目(每個映射都需要一個角色記錄),反之亦然:一個項目可以映射到多個使用者。
只需在 ROLE 表的 (user_id, project_id) 列上添加 UNIQUE 約束,以確保使用者在 ROLE 表中的每個項目僅存在一次。
如果您需要標準化一個選項列表來描述角色,那麼您的第二個圖表最適合 - 這與我的相同,還有一個額外的表格來描述角色。