首页新闻招聘找找看知识库
  • 浏览:1907 2010-02-07 16:56 来自 syqclove

    现假设有一在线商品预订的平台,该平台可以提供全国每个城市所加盟到平台中的商家的产品,若有个栏目为"指定商家的商品"的栏目,有以下要求:

    1.该栏目显示的商品都为用户自己所设置为收藏的商家产品,

    2.买家用户注册到平台的时候,平台中所有的商家都是默认为被收藏进来的(这样有利于平台的推广,可以让后来加入到平台的商家可以默认加入到该栏目中)

    3.若用户有不需要收藏的商家,则用户可以自行取消收藏,这样这家商家的产品就不会在这个栏目显示了

    我现在的设计是:使用1个表来存储被取消收藏的商家,这样这个栏目在取商品数据的时候,再把这个表中的商家的商品给排除掉.但这样的设计有个不好的情况就是sql查询效率就不高了,因为查询是用来排除数据的,要使用到 not in 或 not exitis  ,索引等就无法使用了

    需要求助的就是有什么好的设计方案可以避免这样的设计.

    表结构主要字段设计如下:

    商品表(tbl_Product):

    ID  商品编号  char(36),

    CompanyID 商家的公司ID

    .......

    取消收藏的关联表(tbl_CancelFav):

    BuyUserId  int   买家用户ID

    CompanyID  被取消收藏的商家公司ID

     

    查询sql语句大致为:

    select * from tbl_Product where CompanyID  not in (select CompanyID from tbl_CancelFav where BuyUserId=@BuyUserId)

登录后才能评论,请先登录注册