この図は再帰的であり、1つのエンティティセット「Person」から関係タイプ「Parent's」に至る3つの「ルート」があります(したがって、関係タイプに向かう3本の線があります)。
私たちに与えられた質問は、この三項関係を取り、それを二項関係、おそらく3つに分割することです。
私は「person」をエンティティセットとして取り、別のエンティティセットの親とのリレーショナルタイプの子を各親の属性で持つことを考えていました。
誰かが私を少し助けてくれませんか?
この図は再帰的であり、1つのエンティティセット「Person」から関係タイプ「Parent's」に至る3つの「ルート」があります(したがって、関係タイプに向かう3本の線があります)。
私たちに与えられた質問は、この三項関係を取り、それを二項関係、おそらく3つに分割することです。
私は「person」をエンティティセットとして取り、別のエンティティセットの親とのリレーショナルタイプの子を各親の属性で持つことを考えていました。
誰かが私を少し助けてくれませんか?
したがって、私が正しく理解している場合、各 Person には Parent テーブルへの 3 つの外部キー参照があり、それを正規化する必要があります。
私のアプローチは、この関係を相互参照エンティティである PersonParent に抽象化することです。PersonParent には 3 つのフィールドがあります。Person の ID、Parent の ID、およびこの Parent が Person に対する親の「タイプ」です (この最後の情報は、古いスキーマの 3 つの参照のそれぞれのフィールドに暗黙的に含まれていました)。親は多くの人にとって非常に多くなる可能性がありますが、PersonID と ParentType の組み合わせを一意として指定し、有効な ParentType の最大数を指定することにより、1 人の Person は 0 から有限の N (おそらく 3) の間の親しか持つことができません。ParentType は、これらの型を含むエンティティへの参照にすることも、有効な値をチェック制約として組み込むこともできます (前者を強くお勧めします)。