3

データベース設計の問題があります。私の問題を説明するために、次のことを想像してください。

単純な親子関係:

[Parent] 1-----* [Children]

現在、すべての親 (母親または父親) には、子供がいる場合、最初に生まれた子供がいます。親から長子への強力な関係がデータベースに必要です

[Parent] 1-----1 [Children]

FirstbornChildId を親テーブルに単純に追加することもできますが、データの一貫性が失われる可能性があるため、このアプローチは好きではありません。(FirstbornChildId は Child にリンクし、ParentId は別の親にリンクします...)

Entity Framework は、すべての Parent-Entity が特定の Child にリンクする FirstbornEntity プロパティを持つように、関係をマップする必要があります。

Microsoft SQL 2008 R2 でこれを達成する良い方法はありますか?

4

2 に答える 2

2

2つの可能な解決策

3つのテーブル:

  • 親テーブル
  • 子供のテーブル
  • FirstBornsテーブル
    • 親のID
    • 子供のID

また

子テーブルの列WasFirstBorn(Y / Nまたは1/0)

于 2012-06-20T12:32:37.237 に答える
2

あなたのアプローチはいいと思います。アプリケーション層でのデータ破損を防ぐ必要があります。データベースの制約でできることは限られています。(親に関係なく) 子が実際に存在することを確認するために、少なくとも FirstbornChildId の外部キーを持つことができます。

とにかく、この「firstborn」属性は非正規化です。これは、子供に「birthdate」属性を持つことから派生できます。パフォーマンス上の理由から明示的に保存することをお勧めします。問題はありません。しかし、データベースに整合性を完全に処理させたい場合、これは厄介なことになります。

于 2012-06-20T12:44:12.143 に答える