想做一个代理系统,我大体说一下,我自己有货,然后我的代理在我这里拿货,卖给他自己的会员,数据表应该怎么设计呢?我自己供货的 商品数据表(goods)字段如下:id(商品编号) ,name(商品名称),price(我给代理的价格)
10001         海尔手机M765        123

代理商要在另一个商品数据表,数据表用代理的id来取名,保证唯一性(例如:laowang),字段如下:
id(商品编号),name(商品名称),price(代理给会员的价格)
10001         海尔手机M765        168
刚刚开始给代理增加数据表(也就是laowang)的时候,数据是直接复制的goods,然后代理自己设置价格,会员购买东西的时候,按照代理设置的价格168元扣会员的,我按照123元扣代理的,这个样子。
现在我想问的是:如果我的商品有变动,比如说 10001号 商品 海尔手机M765删除了,怎么做到laowang数据表的这个商品也删除。这是我第一次做东西,不知道思路对不对,麻烦大家给点意见,如果我的思路不对,这种东西应该怎么设计?谢谢各位

解决方案 »

  1.   

    用触发器可以做到10001号 商品 海尔手机M765删除了,laowang数据表的这个商品也删除。 
      

  2.   

    如果下面的代理有很多 ,有很多像laowang这样的数据表呢? 触发器我就没有成功过,在网上复制代理也执行不成功
      

  3.   

    你可以把代理商品表的id作为商品表的外键,加上for delete级联删除。
      

  4.   

    上面写错了,是on delete cascade。呵呵!
      

  5.   

    lz,你这个需求,在业务端php程序做不就行了?
    你如果使用的是mysiam就别考虑foreign key了,innodb才支持,看你的需求,也没必要弄个trigger.
    程序中两个sql也可以,一条联表删除的sql也可以,类似
    delete g.*,l.* from goods g,laowang l where l.id=g.id && g.id='10001';
    还有,代理商表应该多一个字段代理商id,关联用户表,表明到底是哪个代理商代理的。
      

  6.   

    你可以建一个代理设置表嘛,所有代理设置的东西都在这个表里,肯定不能是一个代理就建一个商品表的。
    表结构类似:
    ==========================
    代理商user_id(与用户表关联)  代理产品goods_id(与产品表关联) 产品价格表明哪个代理商                表明代理哪个产品              给会员的价格
    =========================
      

  7.   

    其实不用如上设计,你在代理表加两个字段agent_id(主键) id(商品编号),name(商品名称),price(代理给会员的价格)代理商user_id 
    自增id           10001        海尔手机M765        168                      代理商id然后代理设置就两个字段agent_setting_id(与代理表agent_id关联)  price
      

  8.   

    可以在应用级别上实现
    厂商有个主表 products
    有个单独的表用来存代理名称 agents
    每个代理有自己的数据表 根据代理名称进行命名 agent_products_1
    在增加代理时会同步一份主表到新增的代理表并使用默认的代理价格 syncProductsToAgent(1);
    在增加一个商品时会同步增加到每一个代理表中 addProduct(...){addToProducts();$as=getAgents();foreach($as as $a){addToAgentProduct($a,...);}}
    删除时同理删除每一个代理表中的记录 
    交易时同主表进行通信 确保商品在主表中可用
    做一个后台计划任务 没一个周期自动比对一下主表和代理表之间的数据是否一致,自动对不一致的数据进行同步大概思路就这样了,使用后期自动检测的方式可以用数据的准确性换来一部分效率 ,当然如果不考虑效率你可以用事务来确保数据的一致性
      

  9.   

    这个没看懂什么意思?
    恩 ,这设计很不错。看到很多可以租用的网站。
    代理商给公司一年的使用费,他就给你开一个网站,名字和网址logo代理自己的,代理可以销售自己自有的产品(可能是通过网页写入数据表),也可以销售他们公司的产品(复制公司产品数据表到另一个数据表,然后增加两个字段,代理商id和给会员的价格)然后就可以经营了。
    公司数据表:
    good_id(商品编号),good_name(商品名称),price(代理给会员的价格) 
      10001        海尔手机M765        123  代理数据表:
    good_id商品编号good_name(商品名称price(代理给会员的价格)代理商user_id 
      10001        海尔手机M765        168                      A代理
      10001        海尔手机M765        180                      B代理
    他们的数据表是这样设计的吗? 比如会员在A代理的网站购买,就设置sql语句为:
    select price form goods where id='10001' AND user_id='A代理'
    然后扣费就按照168元来扣了。
    问题一:以上这样设计对吗?
    代理商的商品数据表 设置外键,把good_id与公司数据表的good_id关联起来,这样才能做到 公司删除商品10001时候,代理商数据表10001也都被删除。但是我还想做到,代理商可以添加自己的商品,销售自己的商品,存在外键的话,好像就不能向代理数据表中插入数据了,只能是从公司商品数据表复制数据过来,就是用这个句子(INSERT INTO goods_agent(good_id,good_name,user_id) 
    SELECT good_id,good_name,'A代理'
    FROM goods where goods.id='10001')
    问题二:我试验了十几次,都是可以这样写入数据,不可以直接插入的,是我的问题,还是建立外键的数据表就是这个样子?
    问题三:如果要代理商可以添加自有商品,是不是要取消这个外键,通过php网页里面的程序来做到同时删除呢?这次问的有点多,也没分数了,但希望好人能帮我分析下