关系数据库场景建模例子(by GPT)
场景
一个买卖应用,商品A/B/C,商品价格,运营活动,普通优惠券,活动特别优惠券,有效期等等。请根据这种场景,设计一个典型的数据库表设计。
设计
商品 (products) 是核心,活动 (campaigns) 和优惠券 (coupons) 都可以作用于商品。
通过活动商品关联表 (campaign_products) 和活动特别优惠券表 (campaign_coupons),实现了对不同场景的灵活支持。
订单表和订单商品表确保了用户的购买行为能够被详细记录。
数据库表建模
数据库表设计
1. 商品表(products
)
用于存储商品的基本信息。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 商品唯一标识 |
name |
VARCHAR(255) | 商品名称 |
description |
TEXT | 商品描述 |
price |
DECIMAL(10,2) | 商品原价 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
2. 运营活动表(campaigns
)
存储运营活动的信息。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 活动唯一标识 |
name |
VARCHAR(255) | 活动名称 |
description |
TEXT | 活动描述 |
start_date |
DATE | 活动开始日期 |
end_date |
DATE | 活动结束日期 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
3. 活动商品关联表(campaign_products
)
用于关联商品和活动。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 记录唯一标识 |
campaign_id |
INT (外键) | 关联的活动ID |
product_id |
INT (外键) | 关联的商品ID |
discount_price |
DECIMAL(10,2) | 活动特价 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
4. 普通优惠券表(coupons
)
存储普通优惠券的信息。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 优惠券唯一标识 |
code |
VARCHAR(50) | 优惠券代码 |
discount_type |
ENUM | 优惠类型(percentage 或 fixed ) |
discount_value |
DECIMAL(10,2) | 优惠金额或折扣比例 |
min_spend |
DECIMAL(10,2) | 最低消费金额(可为空) |
valid_from |
DATE | 有效期开始 |
valid_to |
DATE | 有效期结束 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
5. 活动特别优惠券表(campaign_coupons
)
存储活动中特别优惠券的信息。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 特别优惠券唯一标识 |
campaign_id |
INT (外键) | 关联的活动ID |
code |
VARCHAR(50) | 特别优惠券代码 |
discount_value |
DECIMAL(10,2) | 优惠金额 |
valid_from |
DATE | 有效期开始 |
valid_to |
DATE | 有效期结束 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
6. 订单表(orders
)
存储用户的订单信息。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 订单唯一标识 |
user_id |
INT | 用户ID |
total_amount |
DECIMAL(10,2) | 订单总金额 |
discount_amount |
DECIMAL(10,2) | 优惠金额 |
final_amount |
DECIMAL(10,2) | 实际支付金额 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
7. 订单商品表(order_items
)
存储订单中商品的详情。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 记录唯一标识 |
order_id |
INT (外键) | 关联的订单ID |
product_id |
INT (外键) | 关联的商品ID |
quantity |
INT | 购买数量 |
price |
DECIMAL(10,2) | 单价 |
total_price |
DECIMAL(10,2) | 商品总价 |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
8. 用户优惠券表(user_coupons
)
记录用户领取的优惠券。
字段名 | 数据类型 | 描述 |
---|---|---|
id |
INT (主键) | 记录唯一标识 |
user_id |
INT | 用户ID |
coupon_id |
INT (外键) | 关联的优惠券ID |
is_used |
BOOLEAN | 是否已使用 |
used_at |
TIMESTAMP | 使用时间(可为空) |
created_at |
TIMESTAMP | 创建时间 |
updated_at |
TIMESTAMP | 更新时间 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix