あなたがGMdbaであり、GMモデルを中心に設計する必要があるとしましょう
これを行う方が良いですか?
- table_model
- タイプ{キャデラック、土星、シボレー}
それともこれ?
- table_cadillac_model
- table_saturn_model
- table_chevrolet_model
ビジネスラインにモデルの同じ列があり、サブタイプごとに100万を超えるレコードがあるとします。
編集:
- CRUDがたくさんあります
- 非常にプロセッサを集中的に使用するレポートがたくさんあります
- どちらのスキーマにも、モデルごとに3〜5個のレコードを含むmodel_detailテーブルがあり、モデルごとに詳細が異なります(土星モデルにキャデラックの詳細を追加することはできません)。
- 開発チームには、データベースの複雑さに関する問題はありません。
- これが正規化の質問であるかどうかはよくわかりません。構造は同じですが、異なるエンティティと見なされる場合があります。
編集:
構造を複数のテーブルに分割する理由-ビジネスラインはパーツに関して異なるビジネスルールを持っている可能性があります-addModelDetail()はビジネスラインごとに異なる可能性があります(データ形式は同じですが)-高い追加/更新アクティビティ-パーティション化されたパフォーマンスの向上単一の構造ではなく構造(私は推測していますが、ここではわかりません)?
これはEAV問題のバリエーションだと思います。EAV設計として提示された場合、単一のテーブル構造は一般的に悪い考えとして投票されます。このようにポーズをとると、通常、単一のテーブル構造が良いアイデアとして投票されます。面白い...
最も興味深い答えは、2つの異なる構造を持つことだと思います。1つはクラッド用、もう1つはレポート用です。レポート用に連結/フラット化されたビューを試し、クラッド用に複数のテーブルを試して、それがどのように機能するかを確認すると思います。