目录
- 1 如何设计表结构
- 1.1 用户表
- 1.2 服务分类表
- 1.3 服务表
- 1.4 服务规格表
- 1.5 订单表
- 1.6 服务人员表
- 1.7 评价表
- 1.8 促销活动表
- 1.9 投诉表
- 1.10 年卡表
- 1.11 派单表
- 1.12 支付记录表
- 1.13 通知记录表
- 1.14 优惠券表
- 1.15 用户优惠券表
- 1.16 消息模板表
- 1.17 积分记录表
经过一系列的设计,我们现在对于用户的需求,整体的模块划分已经有了基本的把握。基于模块结合工作量的评估也给出了工时的评估。现实中用户关心的核心三问,能不能做,多少钱做,什么时间交付。把这三个问题回答好了,客户经过比价之后基本上就成交了,剩下的事情就是开发的事情了。
本篇我们介绍进入开发阶段后第一件要做的事情,数据库的设计。
1 如何设计表结构
表拆分的思路,一般是结合我们的需求,和客户确认的原型,在满足业务的基础上,方便用户后续录入和维护数据进行设计。
一般我们是要做表拆分,把不同阶段的数据放入到不同的表中。比如我们要管理用户的数据和员工的数据,所以我设计顾客表和员工表,有如下的表结构
1.1 用户表
表名:Users
描述:存储顾客的基本信息,在用户下单时候显示
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 用户唯一标识 |
name | VARCHAR(50) | 否 | 是 | 用户姓名 |
phone | VARCHAR(20) | 否 | 是 | 用户手机号 |
VARCHAR(100) | 否 | 否 | 用户邮箱 | |
address | TEXT | 否 | 否 | 用户地址 |
created_at | DATETIME | 否 | 是 | 用户注册时间 |
设计思路与使用场景
- 用户表是系统的基础表,用于存储所有顾客的基本信息。为防止用户重复注册,可对手机号添加唯一约束。
- 在用户注册、登录、订单下单、查看订单等功能中需要关联用户表。
1.2 服务分类表
表名:Service_Category
描述:存储服务的分类信息,用于在首页及分类页显示家政公司开展的具体业务
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 分类唯一标识 |
name | VARCHAR(50) | 否 | 是 | 分类名称 |
description | TEXT | 否 | 否 | 分类描述 |
created_at | DATETIME | 否 | 是 | 创建时间 |
设计思路与使用场景
- 家政服务通常有多种分类,例如“清洁”、“月嫂服务”、“家电维修”等。分类表方便前端页面按照分类展示。
- 在首页的分类展示及用户筛选服务时,分类表作为基础数据被频繁使用。
1.3 服务表
表名:Service
描述:存储服务的详细信息,用于在服务的详情页显示具体的内容
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 服务唯一标识 |
category_id | INT | 否 | 是 | 所属分类 ID(外键) |
name | VARCHAR(50) | 否 | 是 | 服务名称 |
description | TEXT | 否 | 否 | 服务描述 |
price | DECIMAL(10,2) | 否 | 是 | 服务价格 |
image | VARCHAR(255) | 否 | 否 | 服务图片 |
sales | INT | 否 | 否 | 销量 |
rating | DECIMAL(3,2) | 否 | 否 | 服务评分 |
created_at | DATETIME | 否 | 是 | 创建时间 |
设计思路与使用场景
- 服务表记录具体的服务信息,通过分类表的 category_id 字段与分类表关联,方便按分类查询服务。
- 在用户浏览服务详情、下单或参与促销活动时,服务表是数据的来源。
1.4 服务规格表
表名:Service_Specification
描述:存储服务的规格信息,方便用户下单的时候选择具体的规格信息
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 规格唯一标识 |
service_id | INT | 否 | 是 | 服务 ID(外键) |
duration | INT | 否 | 是 | 服务时长(单位:小时) |
num_people | INT | 否 | 是 | 服务人数 |
price | DECIMAL(10,2) | 否 | 是 | 对应规格的价格 |
设计思路与使用场景
- 某些服务可能有不同的规格(如“基础清洁2小时”、“深度清洁4小时”),因此需要通过服务规格表存储规格信息。
- 用户下单时选择具体规格,订单表会通过 specification_id 字段关联服务规格。
1.5 订单表
表名:Order
描述:存储订单信息,记录用户的订单的具体情况
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 订单唯一标识 |
user_id | INT | 否 | 是 | 用户 ID(外键) |
service_id | INT | 否 | 是 | 服务 ID(外键) |
specification_id | INT | 否 | 是 | 服务规格 ID(外键) |
total_price | DECIMAL(10,2) | 否 | 是 | 总价格 |
status | ENUM | 否 | 是 | 订单状态(待支付、已支付、已取消) |
notes | TEXT | 否 | 否 | 订单备注 |
address | TEXT | 否 | 是 | 服务地址 |
contact_phone | VARCHAR(20) | 否 | 是 | 联系电话 |
service_time | DATETIME | 否 | 是 | 服务时间 |
created_at | DATETIME | 否 | 是 | 下单时间 |
设计思路与使用场景
- 订单表记录用户的订单信息,通过外键关联用户表、服务表和服务规格表,确保订单数据的完整性。
- 在订单管理、支付功能及订单历史记录展示中,订单表是主要数据源。
1.6 服务人员表
表名:Service_Staff
描述:存储员工信息,用于在订单分配时候选择具体的人员
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 服务人员唯一标识 |
name | VARCHAR(50) | 否 | 是 | 服务人员姓名 |
phone | VARCHAR(20) | 否 | 是 | 联系电话 |
skills | TEXT | 否 | 否 | 擅长技能 |
rating | DECIMAL(3,2) | 否 | 否 | 评分 |
is_available | BOOLEAN | 否 | 是 | 是否接单 |
created_at | DATETIME | 否 | 是 | 创建时间 |
设计思路与使用场景
- 记录服务人员的基本信息及其工作状态,通过字段记录所属部门和擅长服务类型等信息,支持服务人员的管理与调度。
- 用于服务派单、服务质量管理和服务人员考核,是服务体系的重要数据支撑。
1.7 评价表
表名:Review
描述:存储评价信息,用于在服务完成后由用户进行评价
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 评价唯一标识 |
order_id | INT | 否 | 是 | 订单 ID(外键) |
user_id | INT | 否 | 是 | 用户 ID(外键) |
staff_id | INT | 否 | 否 | 服务人员 ID(外键) |
rating | DECIMAL(3,2) | 否 | 是 | 用户评分 |
content | TEXT | 否 | 否 | 评价内容 |
created_at | DATETIME | 否 | 是 | 评价时间 |
设计思路与使用场景
- 记录用户对服务的反馈信息,通过外键关联订单表、用户表和服务表,确保评价与具体服务和用户的对应关系,同时支持评价内容的多样化(评分、文字、图片等)。
- 用于服务质量分析、用户满意度调查、用户评价展示,帮助平台优化服务。
1.8 促销活动表
表名:Promotion
描述:存储促销信息,用于在首页展示具体的活动
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 活动唯一标识 |
service_id | INT | 否 | 是 | 服务 ID(外键) |
original_price | DECIMAL(10,2) | 否 | 是 | 原价 |
discounted_price | DECIMAL(10,2) | 否 | 是 | 优惠价 |
start_time | DATETIME | 否 | 是 | 活动开始时间 |
end_time | DATETIME | 否 | 是 | 活动结束时间 |
设计思路与使用场景
- 记录平台提供的各种活动信息,通过优惠券或活动规则字段实现促销策略的灵活配置。
- 在活动推广中,为用户提供限时优惠、满减、折扣等促销信息,是订单结算中计算优惠的重要依据。
1.9 投诉表
表名:Complaint
描述:存储投诉信息,用于在用户对服务不满意时进行投诉
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 投诉唯一标识 |
order_id | INT | 否 | 是 | 订单 ID(外键) |
user_id | INT | 否 | 是 | 用户 ID(外键) |
staff_id | INT | 否 | 否 | 服务人员 ID(外键) |
content | TEXT | 否 | 是 | 投诉内容 |
status | ENUM | 否 | 是 | 投诉状态(处理中、已完成) |
created_at | DATETIME | 否 | 是 | 投诉时间 |
设计思路与使用场景
- 用于记录用户对订单或服务的投诉,通过外键关联用户表、订单表和服务人员表,确保投诉有据可查,同时记录处理状态和反馈结果。
- 在客服处理投诉、提升用户体验以及监控服务质量中,投诉表是客服系统的核心数据来源。
1.10 年卡表
表名:Membership_Card
描述:存储年卡信息,用于在我的页面购买年卡
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 年卡唯一标识 |
user_id | INT | 否 | 是 | 用户 ID(外键) |
service_id | INT | 否 | 是 | 对应服务 ID(外键) |
total_times | INT | 否 | 是 | 总次数 |
used_times | INT | 否 | 是 | 已使用次数 |
expire_date | DATETIME | 否 | 是 | 到期日期 |
设计思路与使用场景
- 记录用户购买的年卡信息,包括有效期、权益和消费限制,通过外键关联用户表,确保年卡与用户绑定。
- 用于用户年卡权益管理和验证,在下单时判定用户是否可享受年卡优惠或免单权益。
1.11 派单表
表名:Assignment
描述:存储派单信息,用于记录派单的过程
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 派单唯一标识 |
order_id | INT | 否 | 是 | 订单 ID(外键) |
staff_id | INT | 否 | 是 | 服务人员 ID(外键) |
assigned_at | DATETIME | 否 | 是 | 派单时间 |
status | ENUM | 否 | 是 | 派单状态(已派单、服务中、已完成) |
设计思路与使用场景
- 记录订单的服务分配情况,通过外键关联订单表、服务人员表,确保每个订单都有明确的服务责任人。
- 在服务派发和服务人员管理中,用于分配任务、记录服务进度,派单表是服务调度的重要工具。
1.12 支付记录表
表名:Payment
描述:存储订单支付相关信息,包括支付时间、金额和状态等。
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 支付记录唯一标识 |
order_id | INT | 否 | 是 | 关联的订单 ID(外键) |
user_id | INT | 否 | 是 | 用户 ID(外键) |
amount | DECIMAL(10,2) | 否 | 是 | 支付金额 |
payment_method | ENUM | 否 | 是 | 支付方式(微信、支付宝、银行卡) |
payment_status | ENUM | 否 | 是 | 支付状态(成功、失败、处理中) |
created_at | DATETIME | 否 | 是 | 支付时间 |
设计思路与使用场景
- 记录订单的支付信息,通过外键关联订单表和用户表,确保支付与订单对应,同时记录支付状态,支持多种支付方式。
- 用于支付验证、退款处理、账单记录等功能,是支付功能的核心表。
1.13 通知记录表
表名:Notification
描述:记录用户接收到的系统通知,比如订单状态变化、活动推送等。
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 通知记录唯一标识 |
user_id | INT | 否 | 是 | 用户 ID(外键) |
title | VARCHAR(100) | 否 | 是 | 通知标题 |
content | TEXT | 否 | 是 | 通知内容 |
type | ENUM | 否 | 是 | 通知类型(订单、活动、系统) |
is_read | BOOLEAN | 否 | 是 | 是否已读(默认未读) |
created_at | DATETIME | 否 | 是 | 通知时间 |
设计思路与使用场景
- 记录用户接收到的系统通知,通过外键关联用户表,确保通知针对特定用户,同时支持已读状态标记和多种通知类型。
- 用于用户提醒(如订单状态更新、活动推广等),支持在系统通知页面展示和提醒用户操作。
1.14 优惠券表
表名:Coupon
描述:存储优惠券信息,用于用户领取和下单时抵扣。
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 优惠券唯一标识 |
name | VARCHAR(50) | 否 | 是 | 优惠券名称 |
description | TEXT | 否 | 否 | 优惠券描述 |
discount_type | ENUM | 否 | 是 | 优惠类型(满减、折扣) |
discount_value | DECIMAL(10,2) | 否 | 是 | 优惠金额或折扣率 |
min_order_amount | DECIMAL(10,2) | 否 | 否 | 最低使用金额限制 |
expire_date | DATETIME | 否 | 是 | 到期时间 |
created_at | DATETIME | 否 | 是 | 创建时间 |
设计思路与使用场景
- 存储平台创建的优惠券信息,包括使用规则和有效期,通过字段支持多种优惠类型(满减、折扣)。
- 用于营销活动和下单时的优惠抵扣,是用户优惠计算的重要数据来源。
1.15 用户优惠券表
表名:User_Coupon
描述:记录用户领取的优惠券及使用情况。
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 用户优惠券唯一标识 |
user_id | INT | 否 | 是 | 用户 ID(外键) |
coupon_id | INT | 否 | 是 | 优惠券 ID(外键) |
is_used | BOOLEAN | 否 | 是 | 是否已使用 |
used_at | DATETIME | 否 | 否 | 使用时间 |
created_at | DATETIME | 否 | 是 | 领取时间 |
设计思路与使用场景
- 记录用户领取的优惠券及其使用情况,通过外键关联用户表和优惠券表,确保优惠券的领取和使用有据可查。
- 在用户领取优惠券、下单使用优惠券以及优惠券过期提醒时使用。
1.16 消息模板表
表名:Message_Template
描述:存储系统自动通知或提醒的模板内容,支持不同场景下的通知。
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 模板唯一标识 |
title | VARCHAR(100) | 否 | 是 | 模板标题 |
content | TEXT | 否 | 是 | 模板内容 |
type | ENUM | 否 | 是 | 模板类型(短信、公众号、系统通知) |
created_at | DATETIME | 否 | 是 | 创建时间 |
设计思路与使用场景
- 存储系统的通知模板,包括内容和通知类型,通过字段支持不同渠道(短信、公众号推送、系统通知)的消息发送。
- 在订单状态变更提醒、活动推广和积分奖励通知中,消息模板表提供自动化消息内容生成。
1.17 积分记录表
表名:Points_Record
描述:记录用户积分的变化,用于激励用户消费和评价。
字段说明:
字段名 | 数据类型 | 是否主键 | 是否必填 | 描述 |
---|---|---|---|---|
id | INT | 是 | 是 | 积分记录唯一标识 |
user_id | INT | 否 | 是 | 用户 ID(外键) |
change_type | ENUM | 否 | 是 | 积分变化类型(消费奖励、评价奖励、活动奖励、扣除) |
change_amount | INT | 否 | 是 | 积分变化数量 |
current_points | INT | 否 | 是 | 当前积分总数 |
created_at | DATETIME | 否 | 是 | 变化时间 |
设计思路与使用场景
- 记录用户积分的变动情况,通过外键关联用户表,确保积分与用户绑定,同时支持多种积分变动类型(奖励、扣除)。
- 用于用户激励(如消费奖励、评价奖励)和积分商城兑换,是用户成长体系的重要组成部分。