xuxuan_csd
AntonyXux
采纳率100%
2015-01-05 07:33 阅读 1.7k
已采纳

数据库设计问题,在线等,求回答

1

有这么一种情况,会员根据充钱的多少会有相应的折扣,问题来了,比如会员A所享有的折扣是5折,但是会员A对某一特定的商品享有4折,请问会员和商品的表该怎么设计,两种情况,一种是商品比较少,另一种是商品很多的情况,分别该怎么搞,求回答,谢谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

8条回答 默认 最新

  • 已采纳
    tarenahuangdw david_yellow 2015-01-06 09:50

    1 根据充钱多少来判断享受多少折扣-----可以看成VIP等级, 不同等级的VIP对应不同折扣。。
    2 A对某一特定的商品享有4折------可以理解为:商品对不同VIP有不同的折扣。

    所以这里有3张表
    1 会员表 (字段包括vip等级)
    2 折扣表 (字段包括:vip等级, 折扣率, 商品号)
    3 商品表 (商品ID)

    这里可以根据VIP等级找到商品对应的折扣率。。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-01-05 08:30

    不要用数据库的表来表示规则,数据库应该只存储必要的数据。比如说通用的折扣、专有折扣、专有折扣应用的用户等等。

    逻辑放在程序中实现。因为规则是无穷变化的,而数据库的表不能随意变动。所以规则应该放在程序中。

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2015-01-05 08:32

    具体是某个折扣不和别的折扣同时享受,还是允许折上折还是哪个优先权高,这个需要和用户商量,而不是说你的程序做死了只能按照一种方式行事,那样用户不骂你才怪。

    点赞 评论 复制链接分享
  • q107770540 兔子党-督察 2015-01-05 08:38

    有一种设计模式,叫 策略模式

    你可参考一下: http://blog.csdn.net/zsp_skyer/article/details/20698851

    点赞 评论 复制链接分享
  • xuzuning xuzuning 2015-01-05 08:48

    会员根据充钱的多少会有相应的折扣,显然折扣是计算和保存在用户表中的
    对某一特定的商品享有更多的折口,显然这个折扣是保存在商品表中该商品上的
    A 享有 5 折,商品本身 8 折,则 A 对该商品享有 4 折。0.5 * 0.8 = 0.4

    所以,不要把简单的事情弄复杂了

    点赞 评论 复制链接分享
  • xiangde1997 xiangde1997 2015-01-05 09:19

    会员肯定有会员表,商品有商品表,对于折扣这个对象而言他应该有自己的表,这张表里面肯定有不同的折扣种类以及具体的折扣信息,最后对于会员商品折扣三者关系,需要特别的一张表,不同的会员对不同 的商品有什么样的折扣的问题了,其实和权限划分是一样的

    点赞 评论 复制链接分享
  • ACMAIN_CHM ACMAIN_CHM 2015-01-05 09:40
     create table discount ( 
        userid int, 
        goodId int , 
        discount double ,
        primary key (userid,goodId)
    )
    
    userid   goodId   discount
    -------- -------- ---------
    会员A          0      0.50
    会员A      商品1      0.40
    
    
    
    点赞 评论 复制链接分享
  • z404904728 z404904728 2015-01-06 04:08

    往简单的来想, 商品多少都应该把商品单独的抽一张表(T1),会员一张表(T2)
    T2 包括 唯一标识 姓名 本身折扣(会员根据充钱的多少会有相应的折扣)等
    T1 包括 唯一标识 商品名称 类型等
    如若会员A对某一特定的商品享有特殊折扣 再起一张映射表 对应会员 商品 的相应折扣即可

    点赞 评论 复制链接分享

相关推荐