将相同的数据值放入多个数据库表中

时间:2012-11-17 21:38:21

标签: sql database database-design relational-database

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

Students是主键表

StudentProfiles存储了“个人档案”元素:

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

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

许多外部操作中使用了一些重要的配置文件元素,如Count(StudentSiblings)GuardianEmail,而很少使用其他配置文件元素。

为了获得更好的性能,如果我们还将这3或4个配置文件属性保存为主Students表中的列,是否有任何问题?

这只是一个例子,我还有另一种情况,我想在另一个表中保存一个表的聚合函数的结果,以便更容易和更快地访问,比如在学生表中存储学生的付款总和作为专栏,那种反规范化打破了数据库设计标准。

1 个答案:

答案 0 :(得分:0)

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