如一开始的我商品表有标签
ID 
Name 
OnSale  是否特价
IsNew   是否最新
Isrecommend 是否建议那如果查询特价或者为建议的我就为Select * from table where onsale = 1 or isrecommend=1
------------------------------------
但现在双有了新的需求要添加一个标示“是否为过季”
这个时候,因为这些东西都是对商品的一个特性进行描述,如果再加多一个字段的话
我的程序从我的Model到Dao到前台,我都得改,而且要是以后他又要添加一个字段怎么办
所以在新设计的这种需求的话我就想把他们放在一个字段比发
Propertys = 0111
这里的0111对应
是否特价,是否最新,是否建议,是否过季
然后查询为,如上面的要求
Select * from table where substring(Propertys,1,1)='1' or  substring(Propertys,2,1)='1' 这样可否还是有更好的设计办法,
谢谢

解决方案 »

  1.   

    是啊,就是要or来or去的感觉效率不好
    所以问大家有没有更好的设计方案谢谢
      

  2.   

    OR 的改UNION ALL来试试呀
      

  3.   

    建议加个表,存放一些属性。
    例如:
    id , px , shuxing
    这里的ID对应你原表的ID。
    PX为序号
    属性为各种属性。当然属性也许有很多类型,可以考虑把shuxing设置为varchar型字段,里面存放各种内容。
    如:'是否为过季',日期'2010-01-07 10:10:10' , 数值'0'等。然后关联两表进行查询。这样貌似灵活些.
      

  4.   

    要我的话,商品表就是一个栏位,类似你说的 0000101001表示什么就可以了,预设长度可以10或者20,这样可以符合以后的扩展。
    当然,这只是 1 or 0 两种status的情况。
    另一个状态表,有10笔基本资料(假设预设长度为10)
    status     description
    -----------------------
    0000000001  新品
    0000000010  过季
    0000000100  特价