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

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

8个回答

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

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

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

xuxuan_csd
AntonyXux 不是等级对某一商品有特定的折扣,而是VIPid对某一商品有特定的折扣,最后一想,只能把它单独设置一个表,vipid,折扣,商品号
接近 6 年之前 回复

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

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

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

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

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

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

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

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

 create table discount ( 
    userid int, 
    goodId int , 
    discount double ,
    primary key (userid,goodId)
)

userid   goodId   discount
-------- -------- ---------
会员A          0      0.50
会员A      商品1      0.40


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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问