数据库工程:可扩展配置文件表等场景的许多行或额外备份列

时间:2012-10-17 15:28:11

标签: sql database database-design entity-attribute-value

我决定建立一个拥有20,000多个学生档案的数据库,每个学生档案都有超过120个属性,

在许多企业项目中,如DOTNETNUKE CMS,使用的方法是两个表,一个是 UserProfile:

[ProfileID],[UserID],[PropertyDefinitionID],[PropertyValue]

,另一个是:ProfilePropertyDefinition

[PropertyDefinitionID],[DataType] ,[PropertyCategory],[PropertyName]

如果我使用这种方法,我将有20,000 x 120 = 240万行!

我知道这是正确的方法,拥有一个规范化的数据库,我知道,数据库服务器是为处理数百万条记录而创建的,但我想知道,为什么我们不创建一个120列+的配置文件表足够的备份列可扩展性?如果表现很重要,那么弊大于利吗?

1 个答案:

答案 0 :(得分:1)

  

为什么我们不为可扩展性创建一个包含100列+足够备份列的配置文件表?

您的其他设计更具可扩展性。你不限于120行。

就性能而言,您必须测试两种不同的数据库设计,但是您所讨论的是ProfilePropertyDefinition表,可能有240万个100字节行,而不是2万个50千字节行。

除非您一直在阅读所有行,否则较短的行通常会表现得更好。