设计一个工厂采购产品的数据库,产品种类约有200多种,每个种类都有各自不同的性能指标,考虑到用户的采购种类变化的可能性,因此对每个种类都单独设计一个表的做法就不可取。    因此设计数据库时,采用了这样的解决办法:
    表1:每个产品的共有信息(产品名称 价格 产地  供应商等)
    表2:产品分类表 记录每个分类的相关信息  如 电阻线圈 二极管等
    表3:一个性能指标表  字段 为 ID  性能名称  产品分类,这样可以为每个产品种类都能方便的添加、修改任意多的性能指标。    现在出现的问题是,要在每个在产品显示页面上,如显示所有的二极管的信息页面上,增加一个查询,根据 名称、价格或者其它任意的某些性能指标的值进行查询。    这个查询要如何做了? 最直接也是最笨的方法,就是手工添加指定的查询表单,然后在后台程序中一一处理,但这样工作量就太大了! 有200多种产品啊。。而且这个方法极不方便,客户的产品种类稍有变化、或者是要求的查询参数有变化,就要修改程序,对于后期维护也是很不方便。
   
    想问一下,这个查询的生成、后台有没有一个简便的方法啊?
    不知道有没有朋友也遇这样的问题呢?
    

解决方案 »

  1.   

    把字段作为ComboBox选项
    string sql = "Select * from t where "+ComboBox1.Text+" like '%aa%';
      

  2.   

    用数据库模拟Hashtable吧,wrox的电子商务高级编程里面有实现,这样你的可变的属性部分就有
    可扩展性了.
      

  3.   

    我大概明白一点。你遇到的可能是行转列的问题,如果你是SQL SERVER的数据库,我有个办法,就是通过逆规范化操作,实现行转列,这样生成视图,然后前台对视图查询。<SQL SERVER宝典>机械工业出版的,非常经典的SQL SERVER书,里面有详细的说明。
      

  4.   

    www.sanhaoonline.com
    你看这里的商品栏目,和你说的应该是一个意思。建议使用这样的表结构1.产品基本信息(通用)表
    产品ID
    产品名称 
    价格 
    产地 
    供应商2.产品特殊信息列表(处别产品的特殊信息)
    特殊信息ID
    名称(产品的属性名,比如 电阻线圈 二极管等)存放的内容:
    1  电阻线圈 
    2  二极管
    ......
    3.产品的特殊信息的配置表 —— 产品有哪些特殊属性
    ID(唯一)
    产品ID(索引) 
    特殊信息ID  
    4.产品的特殊属性表
    产品ID(外键,索引)
    特殊信息ID  
    内容
    这里没有考虑到分级的情况。另外要注意索引,没有索引的话速度会比较慢。
      

  5.   

    a
    id,pid,name priceb
    pid,name  ==b 是分类表c  ==性能表,id为查品id,性能应该和每种产品有关吧
    specialInfo为特殊性说明,可用多个,但查询出的只有一个
    sid,id,specialInfoSELECT a.name, t.*
    FROM 
    (select id,specialInfo from  c where  id in  (select id from a where a.pid=2) ) AS t, a
    WHERE a.price>10 And
     a.id=t.id And 
    t.specialInfo='low';
    以上查询的表单是
    价格text 性能select 分类 select
    不知可以不?