Database-Design

這些實體的正確表關係是什麼?

  • October 15, 2020

我想儲存以下實體的所有數據:

  • 使用者
  • 項目
  • 角色

一個使用者可以在多個項目中工作,並且可以有多個角色,但是每個項目中應該只允許一個使用者的一個角色,例如:

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 表中的每個項目僅存在一次。

如果您需要標準化一個選項列表來描述角色,那麼您的第二個圖表最適合 - 這與我的相同,還有一個額外的表格來描述角色。

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