Mysql

MySQL - 獨特的約束設計

  • August 16, 2013

我正在使用 MySQL 並希望解決關係數據的問題。我不確定這是否可能,但想問問社區。

請看圖:

在此處輸入圖像描述

我想添加一個唯一約束,這樣每個約束只能User有一個(儲存在表中)。不知道如何解決這個問題?也許有不同的設計?此外,目標不是鍵可能“不同步”的場景,例如使用者角色將指向該角色不存在的事件。Role``Event``UserEventRoles

EventRoles表描述Roles了每個Event.

我確信這個問題在其他數據庫設計之前已經出現過,並且想知道最好的方法可能是什麼。

這裡還有一個指向 sql fiddle 的連結,用於播放模式和一些範例數據。

sqlFiddle

通過對主鍵進行一些更改,這很容易實現。

http://sqlfiddle.com/#!2/8dcdd/1

我將表的主鍵更改為andUserEventRoles的複合鍵。這迫使每個人最多只能擁有一個per 。user_id``event_id``User``Role``Event

我還修改了EventRoles表以使用複合主鍵。如果您想保留EventRoles該表和UserEventRoles.

通過此更改,您可以確保您永遠不會在事件中定義一個角色兩次,並且您可以直接將表中的列連接UserEventRoles到實際包含所需數據的描述性表中。

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