问题是这样的:
有N种产品,比如电灯、桌子、电脑。。
他们都有各自的属性:电灯是灯丝、功率、电压等
                    桌子是高度、宽度、长度等
                    电脑是显示器、键盘、CPU等。并且这些产品是可以随时增加的。
请问我要怎么设计这个数据库呢?不可能N钟产品就建立N张表吧?字段应该设置成什么呢?还有一点就是他们的属性个数还是不一样的。怎么办呢?望达人给与解答。

解决方案 »

  1.   

    要么一张表要么2张表吧
    1张表的就不说了
    2张表的就是:
    一张放这个电器的名字和ID
    一张表放这个电器的ID(第一张表里面的ID),功能、形状、电压。这些
    这是我的想法~希望后面的能有更好的办法
      

  2.   

    To YOYOOOP():
    不行吧,因为每个商品的字段都不一样,那后面一种设计方法的话,第二张表的字段岂不是很大了?而且冗余数据也很多,电灯有的属性桌子不一定有的,
    感觉就应该多少商品多少表吧.
    啊哦,楼下来.
      

  3.   

    其实应该很好解决,提供一种方案:一张表搞顶,三个字段  goodsid,goodsname,goodsspecs
    其中goodsspecs存储各个goodsid的属性,多个属性用*号隔开,方便存储和读取
      

  4.   

    TO caimaohua(杨白劳)
    那这样的话,不是好像也不符合数据库的那个什么范式来着.
    goodsspecs里面,重复数据和冗余数据不是挺多的么.
    而且,如果数据量比较大的情况下,会不会慢的多?
      

  5.   

    产品表一张, 描述产品公共属性, 如名字, 价格,重量等等.属性定义表一张, 描述产品有哪些属性, 不想太多字段可以用Map的形式,三个字段就可以了产品ID 属性名  属性值
      

  6.   

    to:hmilyld
    其实数据库范式只是一种建议,并不是所有设计都会按照这种方式来实现,同时也要考虑程序的性能,然后,适当的冗余是允许的,现在存储介质允许这样做·想想范式出来时存储介质是有限的,而且现在一张表的速度肯定会比多表快,而且方便