例如有两张三个字段的数据库表,一个是(column1,column2,column3),另外一个是(column4,column5,column6),两张表的字段属性都不一样。我现在设计一个表把两个合并,为(columnname1,columnvalue1,columnname2,columnvalue2,columnname3,columnvalue3),每个字段存放进去的时候,是按照(属性名,属性值)的方式存进去,这种设计如何?最大的问题是什么?

解决方案 »

  1.   

    如果对一个对象进行描述,每个对象可能具有一定的属性,而且很不统一,不妨采用这种方式:
    举例:
    表一 product
    id 、 title price  这些是产品的共同属性,都要的,放在主表里面。但我们还有许多非共同属性,比如颜色、形状、面料,有些产品有这些属性,有些没有,我们不可能把所有属性都列在一张表里面,特别是客户动态增加商品种类表的时候。
    所以再建立一张表:
    props
    productid propname propvalue    (分别是 产品号、属性名称、属性值)这样两个表联查询就可以解决所有问题了。如果主表过于庞大、同时属性表也庞大。建议在查询的时候先查询主表,得到你想要的结果集后在查询属性表可以提高速度和效率,包括分页查询你也只需要查询本页的属性)这种方式的优点是便于扩展,缺点是查询费时。所以在字段比较固定的时候最好一个表完成,除非是大系统面对各种各样的用户,比如淘宝系统的商品描述就是这种模式。