[求助]数据库设计,多属性表设计问题现在想设计一个手机信息发布的表结构,如下:分为三块信息:基本信息,硬件配置信息,软件配置信息基本信息有5条属性(信息名称:价格描述:商品过期天数:交货地点:量产时间)
硬件配置信息有20个属性(整机参考尺寸,网络频率,平台,结构形态,屏幕材质, 屏幕大小等二十个属性)
软件配置有六大类(网络工具, 联络聊天 ,多媒体类 等),每大类里面有不同的软件信息:网络工具:V浏览器 ,UC浏览器 等硬件配置信息里的属性,都是基础数据,有张属性表专门用来存储的,如网络频率:联通3G(WCDMA) ,GSM ,GSM+CDMA2000(双网)等值现在的设计是,基本信息是主表,里面包括与硬件配置与软件配置关联字段,硬件和软件各为一张表硬件配置信息里,有20个属性字段,每个字段里存ID(取属性表里的字段,二级结构的)以“,”号分隔的,
如网络频率选择二个属性:联通3G(WCDMA) ,GSM ,那对应这个字段的值是:2001001,2001002(属性表里的ID值)软件配置信息与硬件存储一样(略)。现在问题是,在前台进行搜索的时候,硬件信息这块,都是用只得用like来处理,会很影响性能,故想办法来重新设计这表。
有两个方案,
1:增加一中间表,硬件信息所有属性都存在这表里,通过属性ID的进行关联(那这里的ID和上面讲到的ID“,”分隔就不一样,需要重新生成一个),中间表的另一个字段staff_id为之前属性里“,”分隔里的值,如网络频率值是:2001001,2001002,那这里就对应二条数据,ID是一样的,staff_id分别为:2001001,2001002。
这样设计的话,前台搜索的时候,如果传入网络频率的值进来,判断不了中间表哪个字段是网络频率的。
硬件信息属性和中间表就是多对一的关系,查询的时候就只能用子查询来处理了,2:为每个属性增加一张表,如网络频率增加一张表,里面和中间表里存值是一样的,但这样设计的话,就有20多张表,在搜索和查询的时候,都要关联20多张表,这样的话,性能会有很大的影响,有没有高手帮忙想到更新的方案不?在线求助中

解决方案 »

  1.   

    基本信息与硬件配置信息设置为一对多就行了。
    硬件配置信息,就两个主要字段,一个配置ID,一个是对应的值。
      

  2.   


    你这样是可行,但如何查询硬件配置信息的时候,你不知道这条信息下面硬件配置到底有哪些,是什么属性哦,如果只想查询一个属性,如网络频率,根本就查询不出来哦