私は20万人の学生の記録を持つデータベースを持っており、各学生は拡張可能なプロファイルを持っています。
Students主キーテーブルです。
StudentProfilesプロファイル要素を格納します。
[ProfileID],[StudentID],[PropertyDefinitionID],[PropertyValue]
各プロファイルには約120のプロパティが含まれているため、StudentProfiles私には20万人の学生がいます*120のプロファイルプロパティ=2400万行。
Count(StudentSiblings)のようないくつかの重要なプロファイル要素GuardianEmailは、多くの外部操作で使用されますが、他のプロファイル要素はめったに使用されません。
パフォーマンスを向上させるために、この3つまたは4つのプロファイルプロパティもマスターStudentsテーブルの列として保存した場合、問題はありますか?
これは単なる例です。また、テーブルの集計関数の結果を別のテーブルに保存して、学生の支払いの合計を列として学生テーブルに保存するなど、より簡単かつ迅速にアクセスしたい場合もあります。この種の非正規化は、DBの設計基準に違反します。