100を超える属性を含むEmployeeテーブルのような大きなエンティティを設計するためのベストプラクティスは何でしょうか。
それらを100列の単一のテーブルとして保持する必要がありますか、それともそれらを1..1リレーションに分割してから、コードでEmployeeオブジェクトを作成する必要がありますか?
何か意見はありますか?各方法の長所と短所は?
100を超える属性を含むEmployeeテーブルのような大きなエンティティを設計するためのベストプラクティスは何でしょうか。
それらを100列の単一のテーブルとして保持する必要がありますか、それともそれらを1..1リレーションに分割してから、コードでEmployeeオブジェクトを作成する必要がありますか?
何か意見はありますか?各方法の長所と短所は?
ここでの答えは、Employeesテーブルではなく、より広範なデータベース設計にあります。すべての属性が間違いなく1-1である場合、私は間違いなく1つのエンティティを持ちます。SQL Serverには、多くのNULL値を持つ列のSPARSE列など、物理設計に到達するときに採用できる最適化があります。
現在、正規化と実体関連図のプロセスを実行していると思います。もしそうなら、私はSuperType / SubTypeアプローチを検討することをお勧めします。これは、通常、従業員が優れた候補です。
このアプローチ(例として)では、名、姓、電話番号などを含む「連絡先」テーブルがあります。これにより、従業員テーブル、顧客テーブル、ベンダーテーブルなどにリンクされます。従業員テーブルには、スタッフ番号、開始日など、従業員に固有の属性のみが含まれます。
これにはいくつかの利点があります。
Star-SchemaとSnowflake-Schemaを試して読んでください。これらは、データウェアハウジングスキーマの設計に関して使用される用語であり、長所と短所は、おそらくここで直面しているものと非常に似ています。
http://en.wikipedia.org/wiki/Star_schema
http://en.wikipedia.org/wiki/Snowflake_schema
http://www.diffen.com/difference/Snowflake_Schema_vs_Star_Schema