2 つのエンティティが定義されています。
Product:
ProductId (PK)
Name (not null)
Parts:
PartId (PK)
Name (not null)
これらの間には多対多の関係が定義されています。私の要件では、複合製品/部品項目と他の複合製品/部品との間の別の 1 対多の関係をモデル化する必要があります。場合によっては、部品のない製品を製品/部品アイテムにリンクできるようにする必要もあります。私はそれをこのようにモデル化しました:
ProductPartLink:
ProductPartLinkId (PK)
ProductId (not null)
PartId (null)
ParentId (null)
何らかの理由で、これはこの設計をモデル化する最良の方法とは思えません。多対多のクロス リファレンス テーブルはまだ存在しない可能性があるため、詳しく説明しなければリンクできません (製品とパーツの間には他の関係が定義されています)。
誰かが別のより効率的な方法を提案できますか?
更新: この ProductPartLink は単なる統計/研究目的の関係であり、製品と部品の間の関係を変更するものではありません。これをモデル化した方法に疑問を持っている理由は、実際には階層ではなく、2 つのレベルしか持たない項目間に階層を (ProductPartLink .ParentId を使用して) 実装しているためです。