表结构应该改一下客户性质表:
  客户性质ID,描述...
产品表:
  产品ID,客户性质ID,价格列  (关两个字段做为联合主键)

解决方案 »

  1.   

    那种方法当然不太好.照我的理解,我个人的看法是这样设置.产品表:
    产品ID,产品名称,产品其他信息客户性质表:
    性质id,客户性质名称产品客户性质关系表:
    产品id,性质id,对应价格
      

  2.   

    en,我明白了这应该是为了消除对列的增减操作的一个方法。
    但是是否有利于操作呢。
    一个主要的问题是一开始我的产品ID就是从别人的表中直接拿过来的,似乎不太方便做成非主键的形式。
    谢谢。
      

  3.   

    zjcxc(邹建) 的方法好像不错哎。。
      

  4.   

    调整表结构,一般没有没事增删列的吧?纵向表用交叉主键变为横向表增删列所用的sql语句比增删行的语句复杂,且不灵活而且增删列的速度相比之下要慢很多吧。
      

  5.   

    上面的这个问题,我最后是遍历了一下客户性质表,做一个循环,循环里面是生成诸如以下的列: 客户性质1价格
      5.00
     4.00每生成这样一个列,我就把这个列添加到客户端的表(DataGrid)中,当然,这主要是在程序部分实现。
    但问题又来了。如果在产品客户信息价格关系表中缺少任意一个产品与客户性质的对应行,比如,产品3没有对应的客户性质2应有的价格,那么,每次生成的列,长度就不一样,当把这些列并进最终显示的表的时候,就会造成错乱。就又涉及到添加客户性质时必须把每个产品对应于这个性质的价格都添加,哪怕是置0也成。这在产品比较多的时候,又有点麻烦了。
    最后的结果是。。我第一次说的多列的设计方法有没有明显缺陷,如果没有,我还是用那个吧,虽然那样的设计显得不专业。