web-dev-qa-db-ja.com

サブクラスに2つの親(それに接続されている2つのエンティティタイプ)を含めることはできますか?

私はERDなどに慣れていないので、(概念的な)エンティティ関係図に2つのエンティティタイプが1つのサブクラスに接続されている場合(サブクラスは両方からデータを継承する)、正しいかどうか疑問に思っています。

screenshot

ここでの私の質問は次のようになります:このサブラスに接続するエンティティタイプごとに、それは独自のインスタンスを持っていますか?だから:私の部屋のエンティティタイプは記録しますか?スタンダードルームまたはエグゼクティブルームの場合、予約エンティティタイプは、その特定の予約に装飾があるかどうかを記録できますか?

申し訳ありませんが、私はこの質問を言葉で表現するのに苦労しています。

1
James

「サブクラスに2つの親(それに接続する2つのエンティティ)を含めることはできますか?」はい。ただし、ERDでの冗長な関係は避けてください。特定のシナリオの場合:BOOKINGエンティティがROOMを介してSTANDARD/EXECUTIVEに接続されている場合、後で、どのタイプの部屋が予約されているかをユーザーに通知するクエリを作成できます。

あなたの質問について: "このサブラスに接続するエンティティごとに、独自のインスタンスがありますか?したがって、私の部屋のエンティティは、スタンダードルームかエグゼクティブルームかを記録し、予約しますか?エンティティは、その特定の予約に装飾があるかどうかを記録できますか? "回答:はい、ROOMには、「標準」か「エグゼクティブ」かを決定する属性を含めることができます(を参照)。以下のモデル)。予約によって部屋の「装飾」が変わることはありません。 enter image description here

ROOM- <BOOKINGをモデル化するだけで十分です(各部屋には、これまでと同じように1つ以上の予約がある場合があります)。 「部屋の種類」については、ARC、つまり排他的論理和OR(XOR)を使用します。その背後にある理由:各部屋は標準部屋として装備されています(必要なすべての属性を備えています)または、EXECUTIVE「パッケージ」(必要なすべての属性を含む)が含まれています。

STANDARD/EXECUTIVEとBOOKINGの間に(a)関係を描く必要はありません。 ROOMが予約されます(各部屋はSTANDARDまたはEXECUTIVEのいずれかですが、これはそれぞれの属性/列に記録されます->図を参照してください(上のERD、下のリレーショナルモデル)。

enter image description here

単一の(一意の)予約IDを使用して複数の部屋を予約できる場合は、ROOM間にM:Mの関係があります。と予約。 (交差点が必要になります。)

(XOR-これはずっと後になります:部屋を「標準」または「エグゼクティブ」にするために、ROOMSテーブルでCHECK制約を使用できます。 。)

1
stefan