web-dev-qa-db-ja.com

ERDで親からその2つの子エンティティタイプへの多対1の必須関係のオプションを表す方法は?

2つのParentエンティティを持つChildエンティティタイプがあり、関係カーディナリティはmany-to-one(またはM:1)from ParentからChildへ。

ビジネスルールによれば、

  1. Parentエンティティタイプは、任意のプロセスでChild AまたはChild Bのいずれかに接続する必要がありますが、それも…
  2. Parentを両方に接続することも、そのプロセス中にどちらにも接続することもできません。

ここでオプション性を表現する方法に困惑しています。これはParent側では必須の関係ですが、Child側でも同じように必須ではありません。 少なくとも1つChildが関係に存在する必要がありますが、Childからこれを必須と呼ぶのは正しいとは思いませんまた、Childとのオプションの関係で両方のParentエンティティを表すことが正しいとは思わない。

そう:

image

Childエンティティは、Parentと必須またはオプションの関係にありますか?

これは理論的には頭の中での質問ですが、「親の好きな子は誰ですか?」一致する私の図の例:子は多くの親を支持することができ、親はどちらかの子を現在のお気に入りとして持つことができ、親は特定の瞬間に1つの子を優先することはできません。残酷ですが、私の例ではうまくいきます!

私はDB設計までは行きませんが、Child_AまたはChild_Bのいずれかから外部キーを受け入れることができる親テーブルに列を設定できると想定していましたが、Not Null制約。それとも私の想定はずれていますか?そのため、これは上記のERDをデータベースにそのように実装できないことを意味しますか?

3
Shaneydev

Child_1とchild_2は単一のエンティティタイプの2つのインスタンスであるかのように見えます。

もしそうなら、あなたはそのような(2番目の)関係を持っています

  1. すべての親は1つだけのお気に入りの子を持っている必要があります
  2. すべての子供は0人以上の親のお気に入りです。

(最初の)関係は

  1. 親は0個以上の子を持つことができます(もちろん、「親」を定義して、子が親であることの前提条件である場合を除きます;-))
  2. 子供はちょうど2人の親を持つ必要があります(基本的な人間の生物学では;-))

もちろん、最初の関係はコンテキストによって異なる場合があります。

2
Hugh Lapham