Mysql
MySQL - 獨特的約束設計
我正在使用 MySQL 並希望解決關係數據的問題。我不確定這是否可能,但想問問社區。
請看圖:
我想添加一個唯一約束,這樣每個約束只能
User
有一個(儲存在表中)。不知道如何解決這個問題?也許有不同的設計?此外,目標不是鍵可能“不同步”的場景,例如使用者角色將指向該角色不存在的事件。Role``Event``UserEventRoles
EventRoles
表描述Roles
了每個Event
.我確信這個問題在其他數據庫設計之前已經出現過,並且想知道最好的方法可能是什麼。
這裡還有一個指向 sql fiddle 的連結,用於播放模式和一些範例數據。
通過對主鍵進行一些更改,這很容易實現。
http://sqlfiddle.com/#!2/8dcdd/1
我將表的主鍵更改為and
UserEventRoles
的複合鍵。這迫使每個人最多只能擁有一個per 。user_id``event_id``User``Role``Event
我還修改了
EventRoles
表以使用複合主鍵。如果您想保留EventRoles
該表和UserEventRoles
.通過此更改,您可以確保您永遠不會在事件中定義一個角色兩次,並且您可以直接將表中的列連接
UserEventRoles
到實際包含所需數據的描述性表中。