サード パーティの Web サービス ポータルとの間で送受信される情報を格納するデータベースを作成する必要があります。送信する情報のフィールドは約 150 ありますが、そのうちの約 50 フィールドは正規化することで削除できます (たとえば、アドレス テーブルに保存できるアドレスは 3 セットあります)。ただし、これでも 100 列になる可能性のあるテーブルが残ります。
どちらを使用すればよいかわかりませんが、これを処理する2つの方法を思いつきました。
1 . 100 列のテーブルとアドレス テーブルへの 3 つの参照があります。
2 . おそらく 15 ~ 20 の個別の専用テーブルに分割します。
オプション 1は、結合が最も少ないため最も高速に思えますが、100 列のテーブルという考えは適切ではありません。
オプション 2の方が適切で、より管理しやすいチャンクに分割できますが、データベース スペースを節約することはできず、結合の数が増加します。データベース内のほぼすべての列に値があり、これらの列をこれ以上正規化することはできません。
私の質問は、この状況では、c.100 列を含むテーブルを使用することは許容できるのでしょうか、それともプレゼンテーションのために複数のテーブルに分割してみる必要があるのでしょうか?
注意:テーブル構造は、使用中に変更されることはありません。Web サービス ポータルの新しいバージョン用に新しいデータベースが作成されます。Web サービスのデータ構造を制御できません。
編集:以下の@Odedの回答により、データへのアクセス方法についてもう少し考えさせられました。実際には、部分的にではなく、全体にしかアクセスできません。たとえば、列 5 ~ 20 を定期的に返す必要はありません。
回答: Oded が投稿したコメントに基づいて、Oded の回答を受け入れ、決心するのに役立ちました。オプション 1 を使用することにしました。たとえば、テーブルの行全体ではなく、列 5 ~ 20 に定期的にアクセスしたい場合は、パフォーマンス上の理由から、列を個別のテーブルに分割することを検討します。