0

我有一个包含 20 万学生记录的数据库,每个学生都有一个可扩展的个人资料。

Students是主键表,

StudentProfiles是存储 Profiles 元素:

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

每个配置文件包含大约 120 个属性,因此StudentProfiles我有 20 万学生 * 120 个配置文件属性 = 2400 万行。

一些重要的 Profile 元素喜欢Count(StudentSiblings)GuardianEmail在许多外部操作中使用,而其他 Profile 元素很少使用。

为了获得更好的性能,如果我们也将这 3 个或 4 个 Profile Properties 保存为主表中的列,会有什么问题Students吗?

这只是一个示例,我还有另一种情况,我想将一个表的聚合函数的结果保存在另一个表中以便更轻松快捷地访问,例如将学生表中的学生付款总和存储为列,是那种非规范化打破了数据库设计标准。

4

1 回答 1

0

如果这些常用的配置文件元素是原子的——即每个学生只有一个 GuardianEmail 值——那么我认为没有理由不将这些值存储在学生表中,就像将学生的电子邮件或姓氏存储在学生表。

于 2012-11-18T06:35:58.683 回答