私は実存的な疑問を持っています:私の論理には3つの概念的なエンティティタイプがあります:
- distributors
- business_groups
- clients
3つすべてが"companies"
であり、同じ列になります。関係は次のとおりです。
- 1 distributor => N business_group
- 1 business_group => N clients
逆に:
- 1 business_group => 1 distributor
- 1 client => 1 business_group
私の質問
エンティティタイプごとに1つずつ、合計3つの「等しい」テーブルを作成するか、またはdistributor_id
およびbusiness_group_id
外部キー(同じテーブルを参照)を使用して3つに1つ作成する方がよいでしょうか?
考慮事項
type
にはさらに1列あります。これは非常に一般的な質問です。人々は良い結果を得るために何を検索すればいいのかわからないだけです。 テーブル継承の実装に関する提案を確認する必要があります(多態性の関連付け)リレーショナルデータベースの場合。
その問題に対する一般的な答えはありません。あなたが言及したようないくつかの状態があり、それはすべてあなたのニーズと後のクエリ(書き込みと読み取り)の焦点に依存します。各オプションには長所と短所があります。たとえば、一貫性を犠牲にして読み取りパフォーマンスを向上させることができます。しかし、それを解決するためのツールを知るためには、このパターンを特定する必要があります。
あなたは他の人々がそれについて書いたものを読むことができます:
より詳細な分析については、BillKarwinとMartinFowlerによる文献を確認してください。