一个商品有如下基础属性,价格属性、名称属性、物品池属性,物品池中可以灵活添加许多赠送物品,每种商品包含的物品池不同。商品可以定义如下附加属性,物品池赠送物品次数属性、用户属性,用户属性分为新用户、老用户、首次购买的用户,全体用户,还有时间属性,时间属性包含商品售卖的开始时间和结束时间。并且这些附加属性可以灵活扩展,不限于上述属性。附加的每个属性可以单独配置,每个商品可以动态组合这些属性。怎么设计数据库表结构,并举例。
可以设计如下的数据库表结构:
- 商品表(product)
字段名 | 类型 | 描述 ------|-----|----- id | int | 商品ID,主键 name | varchar | 商品名称 price | decimal | 商品价格 pool_id | int | 物品池ID,外键,关联物品池表
- 物品池表(item_pool)
字段名 | 类型 | 描述 ------|-----|----- id | int | 物品池ID,主键 name | varchar | 物品池名称
- 物品池物品表(item_pool_item)
字段名 | 类型 | 描述 ------|-----|----- id | int | 自增ID,主键 pool_id | int | 物品池ID,外键,关联物品池表 item_name | varchar | 赠送物品名称
- 商品属性表(product_property)
字段名 | 类型 | 描述 ------|-----|----- id | int | 自增ID,主键 product_id | int | 商品ID,外键,关联商品表 property_name | varchar | 属性名称 property_value | varchar | 属性值
- 用户属性表(user_property)
字段名 | 类型 | 描述 ------|-----|----- id | int | 自增ID,主键 user_id | int | 用户ID,外键,关联用户表 property_name | varchar | 属性名称 property_value | varchar | 属性值
- 时间属性表(time_property)
字段名 | 类型 | 描述 ------|-----|----- id | int | 自增ID,主键 product_id | int | 商品ID,外键,关联商品表 start_time | datetime | 商品售卖开始时间 end_time | datetime | 商品售卖结束时间
举例:
- 添加一个商品,商品名称为“华为手机”,价格为999元,物品池ID为1,赠送物品为“手机壳”和“充电器”,赠送次数为2次,用户属性为“新用户”,时间属性为售卖时间为2022年1月1日00:00:00到2022年1月31日23:59:59。
在商品表中添加一条记录,字段值为(1,“华为手机”,999,1)。
在物品池表中添加一条记录,字段值为(1,“赠品物品池”)。
在物品池物品表中添加两条记录,字段值为(1,“手机壳”)和(1,“充电器”)。
在商品属性表中添加五条记录,字段值为(1,“物品池赠送物品次数属性”,“2”)、(1,“用户属性”,“新用户”)和(1,“时间属性-开始时间”,“2022-01-01 00:00:00”)、(1,“时间属性-结束时间”,“2022-01-31 23:59:59”)。
- 添加一个商品,商品名称为“小米手机”,价格为888元,物品池ID为2,赠送物品为“手机壳”,赠送次数为3次,用户属性为“老用户”,时间属性为售卖时间为2022年2月1日00:00:00到2022年2月28日23:59:59。
在商品表中添加一条记录,字段值为(2,“小米手机”,888,2)。
在物品池表中添加一条记录,字段值为(2,“赠品物品池”)。
在物品池物品表中添加一条记录,字段值为(2,“手机壳”)。
在商品属性表中添加四条记录,字段值为(2,“物品池赠送物品次数属性”,“3”)、(2,“用户属性”,“老用户”)和(2,“时间属性-开始时间”,“2022-02-01 00:00:00”)、(2,“时间属性-结束时间”,“2022-02-28 23:59:59”)。
原文地址: https://www.cveoy.top/t/topic/zxW 著作权归作者所有。请勿转载和采集!