テーブル設計
kawaii_user_id | not_kawaii_user_id | company_id |
---|---|---|
ForeignKey-> UserTable | ForeignKey-> UserTable | ForeignKey-> companyTable |
上記のような、「あるUser」が「あるUser」を持つことが出来るテーブルがあります。
また、Userが属するCompanyテーブルがあります。
User間の関係を持てるのは同一Companyのみです。
今回のテーブルでは、userAがkawaii_user_id
でUserBをnot_kawaii_user_id
としていても、userBがkawaii_user_id
としてuserAをnot_kawaii_user_id
という状態を同時に持つことが可能ということを想定しています。
現状
最初の設計として、このユーザ間の関係性を一意に保つためにkawaii_user
とnot_kawaii_user
を複合主キーとして設計しました。
しかし、最初に気付いたのは上記の複合主キーであると、属する会社に関係しない一意性になってしまいます。
(CompanyA
でUserA→UserBの関係を持つと、CompanyB
ではUserA→UserBの関係が持てない。)
そのため、複合主キーをkawaii_user_id
、not_kawaii_user_id
、company_id
の3つ設定すれば、回避出来ると考えたのですが、今度は
今回のテーブルでは、userAが
kawaii_user_id
でUserBをnot_kawaii_user_id
としていても、userBがkawaii_user_id
としてuserAをnot_kawaii_user_id
という状態を同時に持つことが可能ということを想定しています。
という、UserA→UserBとなっていてもUserB→UserAという関係を持てるという関係性を保つ事が厳しくなってしまいました。
こういった場合、どういう制約の掛け方をするのがベストでしょうか?
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/22 17:23
2018/10/22 17:41
2018/10/24 03:09