0

私は20万人の学生の記録を持つデータベースを持っており、各学生は拡張可能なプロファイルを持っています。

Students主キーテーブルです。

StudentProfilesプロファイル要素を格納します。

[ProfileID],[StudentID],[PropertyDefinitionID],[PropertyValue]

各プロファイルには約120のプロパティが含まれているため、StudentProfiles私には20万人の学生がいます*120のプロファイルプロパティ=2400万行。

Count(StudentSiblings)のようないくつかの重要なプロファイル要素GuardianEmailは、多くの外部操作で使用されますが、他のプロファイル要素はめったに使用されません。

パフォーマンスを向上させるために、この3つまたは4つのプロファイルプロパティもマスターStudentsテーブルの列として保存した場合、問題はありますか?

これは単なる例です。また、テーブルの集計関数の結果を別のテーブルに保存して、学生の支払いの合計を列として学生テーブルに保存するなど、より簡単かつ迅速にアクセスしたい場合もあります。この種の非正規化は、DBの設計基準に違反します。

4

1 に答える 1

0

これらの頻繁に使用されるプロファイル要素がアトミックである場合(つまり、各学生がGuardianEmailの値を1つだけ持っている場合)、学生の電子メールまたは名前をに保存するのと同じ方法で、これらの値を学生テーブルに保存しない理由はわかりません。学生のテーブル。

于 2012-11-18T06:35:58.683 に答える