我决定建立一个拥有20,000多个学生档案的数据库,每个学生档案都有超过120个属性,
在许多企业项目中,如DOTNETNUKE CMS,使用的方法是两个表,一个是 UserProfile:
[ProfileID],[UserID],[PropertyDefinitionID],[PropertyValue]
,另一个是:ProfilePropertyDefinition
[PropertyDefinitionID],[DataType] ,[PropertyCategory],[PropertyName]
如果我使用这种方法,我将有20,000 x 120 = 240万行!
我知道这是正确的方法,拥有一个规范化的数据库,我知道,数据库服务器是为处理数百万条记录而创建的,但我想知道,为什么我们不创建一个120列+的配置文件表足够的备份列可扩展性?如果表现很重要,那么弊大于利吗?
答案 0 :(得分:1)
为什么我们不为可扩展性创建一个包含100列+足够备份列的配置文件表?
您的其他设计更具可扩展性。你不限于120行。
就性能而言,您必须测试两种不同的数据库设计,但是您所讨论的是ProfilePropertyDefinition表,可能有240万个100字节行,而不是2万个50千字节行。
除非您一直在阅读所有行,否则较短的行通常会表现得更好。