家政预约小程序数据库设计

目录

  • [1 如何设计表结构](#1 如何设计表结构)
    • [1.1 用户表](#1.1 用户表)
    • [1.2 服务分类表](#1.2 服务分类表)
    • [1.3 服务表](#1.3 服务表)
    • [1.4 服务规格表](#1.4 服务规格表)
    • [1.5 订单表](#1.5 订单表)
    • [1.6 服务人员表](#1.6 服务人员表)
    • [1.7 评价表](#1.7 评价表)
    • [1.8 促销活动表](#1.8 促销活动表)
    • [1.9 投诉表](#1.9 投诉表)
    • [1.10 年卡表](#1.10 年卡表)
    • [1.11 派单表](#1.11 派单表)
    • [1.12 支付记录表](#1.12 支付记录表)
    • [1.13 通知记录表](#1.13 通知记录表)
    • [1.14 优惠券表](#1.14 优惠券表)
    • [1.15 用户优惠券表](#1.15 用户优惠券表)
    • [1.16 消息模板表](#1.16 消息模板表)
    • [1.17 积分记录表](#1.17 积分记录表)

经过一系列的设计,我们现在对于用户的需求,整体的模块划分已经有了基本的把握。基于模块结合工作量的评估也给出了工时的评估。现实中用户关心的核心三问,能不能做,多少钱做,什么时间交付。把这三个问题回答好了,客户经过比价之后基本上就成交了,剩下的事情就是开发的事情了。

本篇我们介绍进入开发阶段后第一件要做的事情,数据库的设计。

1 如何设计表结构

表拆分的思路,一般是结合我们的需求,和客户确认的原型,在满足业务的基础上,方便用户后续录入和维护数据进行设计。

一般我们是要做表拆分,把不同阶段的数据放入到不同的表中。比如我们要管理用户的数据和员工的数据,所以我设计顾客表和员工表,有如下的表结构

1.1 用户表

表名:Users

描述:存储顾客的基本信息,在用户下单时候显示

字段说明:

字段名 数据类型 是否主键 是否必填 描述
id INT 用户唯一标识
name VARCHAR(50) 用户姓名
phone VARCHAR(20) 用户手机号
email 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 变化时间

设计思路与使用场景

  • 记录用户积分的变动情况,通过外键关联用户表,确保积分与用户绑定,同时支持多种积分变动类型(奖励、扣除)。
  • 用于用户激励(如消费奖励、评价奖励)和积分商城兑换,是用户成长体系的重要组成部分。
相关推荐
安静的_显眼包O_o2 小时前
locate() 在MySQL中的用法
数据库·mysql
总爱写点小BUG2 小时前
【小程序开发】解决 HBuilder X 提示“本项目类型无法运行到小程序模拟器”
小程序
鄃鳕2 小时前
扩充vmware磁盘大小以及分区
数据库·postgresql
CT随2 小时前
MySQL三大日志(binlog、redo log和undo log)详解
数据库·mysql
web150850966412 小时前
【MsSQL】数据库基础 & 库的基本操作
前端·数据库·sqlserver
Run Out Of Brain2 小时前
MYSQL无法被连接问题
数据库·mysql
qianmoQ3 小时前
DataCap 2024.4.1 版本发布:MongoDB 驱动支持、工作流引擎升级
数据库·mongodb·开源
努力的小雨3 小时前
KES的执行计划分析与索引优化
数据库·后端
安静的_显眼包O_o3 小时前
SUBSTRING_INDEX()在MySQL中的用法
android·数据库·mysql
滚雪球~3 小时前
mysql 报错 ERROR 1396 (HY000) Operation ALTER USER failed for root@localhost 解决方案
数据库·mysql