2010-08-18 51 views
0

我正在设计一个数据库,我碰到一个地方,我不确定哪个是最好的设计,所以我决定在这里得到一些输入。数据库设计:很多丑陋的列,或者分成若干行

的问题是,我对列的数据的几个重复件,沿

第1页的行:

aName, aSize, aColor 
bName, bSize, bColor 
cName, cSize, cColor 

第2页:

aName, aSize, aColor 
bName, bSize, bColor 
cName, cSize, cColor 

所以我可以有这样的设计:

[pageId] [aName] [aSize] [aColor] [bName] [bSize] [bColor] etc. 

或者,而后者显得更加干净它拆分成排

[pageId] [letter] [name] [size] [color] 

前者获得更好的性能。有没有比这两种方案更好地解决问题的方法?我正在使用PHP和MySQL,但我对任何解决方案都感兴趣,不管平台如何。

+5

“显得更干净”?你应该阅读规范化并修改你的问题。 http://en.wikipedia.org/wiki/Database_normalization – 2010-08-18 18:09:02

+0

我知道正常化。我在这里没有重复数据的问题(对不起,如果我不清楚)。每个页面上有相同类型的数据(名称,大小,颜色)的固定数量的部分(a,b,c等),但都可以在一行中无冗余地存储。在多行中,行可以由该部分标识并直接访问各个属性,而不必重复添加列名。这就是我所说的“更干净”。 – 2010-08-18 18:11:34

+1

重复数据是违反第一范式。请更新您的问题,以表明您**知道** First Normal Form的含义。 – 2010-08-18 18:20:42

回答

0

我会使用选项2,因为您现在可以遍历该字母,因此很可能最终会出现更干净的代码。

也许这在生产站点没有用,但可能在脚本或管理站点中派上用场。

此外,性能不应该太差,因为到服务器的往返将超过获取3个较小的行。

3

正常化

如果你有A,B和C部分的今天,你可能有d和e部分的明天。或者c部分可能会消失。