私はデータベースの専門家ではないので、これは私のためには複雑ですが、多くの人にとってはそうではないかもしれません。私は、次のしている:データベース内の複雑な関係のための最良のスキーマ
quiz
:多対多の関係テーブルプロジェクト - クイズ
team
:いくつかのプロジェクト
project_has_quiz
が含まれています。表:いくつかのクイズ
project
が含まれている表表は、いくつかのチームが含まれています
event
:いくつかのイベントが含まれているテーブル(プロジェクトには日付とその他のf ields)
event_has_team
:多くの多の関係テーブル・イベント・チーム
さて、私はイベントでの各チームのクイズのための順序を割り当てる必要があります。たとえば:
は、あなたが5つのクイズa
、b
、c
、d
、e
を持っていると言います。
projectA
プロジェクトを作成し、a
,b
およびc
のクイズで作成します。
次の2つのチームが持っている:あなたが作成し、イベントeventA
projectA
とし、teamA
とteamB
とあなたの関係をteamA
とteamB
を。
は今、私はteamA
とeventA
がクイズの順序c, a, b
を持っている必要があり、クイズの順序a, b, c
とteamB
とeventA
を持たなければならないことをどこかに配置する必要があります。
これを行うにはどのような方法が最適ですか?プログラミングコードa, b, c
とc, a, b
を介して挿入した列quizOrder
で、event_has_team_has_quizOrder
:私が持っている
最初のアイデアは、別のテーブルを構築することです。しかし、これを達成するための最も純粋な方法ではないと思うし、確かに非正規化の問題もある。
ありがとうございました。
を行うことができますしかし、どのような良い方法はありませんでしょうか?つまり、 'event_has_team_has_quizOrder''Quiz'列の値を、イベントに関連するプロジェクトの' quiz'列の値で定義された範囲で、データベースによって強制的にしたいと思います。あなたの答え、おそらく唯一の可能性として、私は 'quiz'カラムが決して' d'または 'e'ではないことをプログラムで保証しなければなりません。ありがとうございました。 –
良い質問です。外部キーを(イベント、クイズ)することができる現在のテーブルはありません。うまくいけば経験豊富な人がチェック制約/トリガーを使う以外の方法を提案してくれることを願っています。 – goat
ありがとう@chris。私は待っていて、それ以外の場合はあなたの答えを正しいものに設定します。 –