tourism-system/旅游宣传管理系统-数据库设计.md

24 KiB
Raw Blame History

旅游宣传管理系统 - 数据库设计文档

一、数据库规划

  • 数据库名称:tourism_platform
  • 字符集:utf8mb4
  • 排序规则:utf8mb4_unicode_ci

二、表结构设计

2.1 用户相关表

2.1.1 用户表 (user)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
username VARCHAR(50) UNIQUE, NOT NULL 用户名
password VARCHAR(255) NOT NULL 密码(加密存储)
phone VARCHAR(20) UNIQUE 手机号
email VARCHAR(100) UNIQUE 邮箱
avatar VARCHAR(500) 头像URL
nickname VARCHAR(50) 昵称
gender TINYINT DEFAULT 0 性别0-未知1-男2-女
birthday DATE 生日
signature VARCHAR(255) 个人签名
status TINYINT DEFAULT 1 状态0-禁用1-正常
last_login_time DATETIME 最后登录时间
last_login_ip VARCHAR(50) 最后登录IP
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除0-未删除1-已删除

2.1.2 收货地址表 (address)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
user_id BIGINT NOT NULL, INDEX 用户ID
consignee VARCHAR(50) NOT NULL 收货人姓名
phone VARCHAR(20) NOT NULL 联系电话
province VARCHAR(50) NOT NULL 省份
city VARCHAR(50) NOT NULL 城市
district VARCHAR(50) NOT NULL 区县
detail_address VARCHAR(255) NOT NULL 详细地址
postal_code VARCHAR(20) 邮政编码
is_default TINYINT DEFAULT 0 是否默认0-否1-是
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.1.3 收藏表 (favorite)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
user_id BIGINT NOT NULL, INDEX 用户ID
favorite_type TINYINT NOT NULL 类型1-景点2-商品3-游记
favorite_id BIGINT NOT NULL 收藏对象ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间

2.2 管理员相关表

2.2.1 管理员表 (admin)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
username VARCHAR(50) UNIQUE, NOT NULL 用户名
password VARCHAR(255) NOT NULL 密码
name VARCHAR(50) 姓名
phone VARCHAR(20) 手机号
email VARCHAR(100) 邮箱
avatar VARCHAR(500) 头像
status TINYINT DEFAULT 1 状态0-禁用1-正常
last_login_time DATETIME 最后登录时间
last_login_ip VARCHAR(50) 最后登录IP
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.2.2 角色表 (role)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
name VARCHAR(50) UNIQUE, NOT NULL 角色名称
code VARCHAR(50) UNIQUE, NOT NULL 角色代码
description VARCHAR(255) 角色描述
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.2.3 管理员角色关联表 (admin_role)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
admin_id BIGINT NOT NULL, INDEX 管理员ID
role_id BIGINT NOT NULL, INDEX 角色ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间

2.2.4 权限表 (permission)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
name VARCHAR(100) NOT NULL 权限名称
code VARCHAR(100) UNIQUE, NOT NULL 权限代码
type TINYINT NOT NULL 类型1-菜单2-按钮
parent_id BIGINT DEFAULT 0 父级ID
path VARCHAR(255) 路由路径
icon VARCHAR(100) 图标
sort INT DEFAULT 0 排序
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间

2.2.5 角色权限关联表 (role_permission)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
role_id BIGINT NOT NULL, INDEX 角色ID
permission_id BIGINT NOT NULL, INDEX 权限ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间

2.2.6 操作日志表 (operation_log)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
admin_id BIGINT 管理员ID
admin_name VARCHAR(50) 管理员名称
operation VARCHAR(255) 操作描述
method VARCHAR(255) 请求方法
params TEXT 请求参数
ip VARCHAR(50) IP地址
result TEXT 返回结果
status TINYINT 状态0-失败1-成功
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 操作时间

2.3 景点相关表

2.3.1 景点分类表 (attraction_category)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
name VARCHAR(50) NOT NULL 分类名称
parent_id BIGINT DEFAULT 0 父级ID
level TINYINT DEFAULT 1 层级
sort INT DEFAULT 0 排序
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.3.2 景点表 (attraction)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
name VARCHAR(100) NOT NULL 景点名称
category_id BIGINT INDEX 分类ID
city VARCHAR(50) NOT NULL 所在城市
address VARCHAR(255) NOT NULL 详细地址
latitude DECIMAL(10,6) 纬度
longitude DECIMAL(10,6) 经度
cover_image VARCHAR(500) 封面图片
images TEXT 图片列表JSON数组
video_url VARCHAR(500) 宣传视频
description TEXT 景点介绍
open_time VARCHAR(100) 开放时间
play_time VARCHAR(100) 建议游玩时长
traffic_info TEXT 交通信息
tags VARCHAR(255) 标签(逗号分隔)
is_hot TINYINT DEFAULT 0 是否热门0-否1-是
is_recommend TINYINT DEFAULT 0 是否推荐0-否1-是
status TINYINT DEFAULT 1 状态0-下架1-上架
view_count INT DEFAULT 0 浏览次数
favorite_count INT DEFAULT 0 收藏次数
score DECIMAL(3,2) DEFAULT 5.00 评分
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.3.3 门票表 (ticket)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
attraction_id BIGINT NOT NULL, INDEX 景点ID
name VARCHAR(100) NOT NULL 票种名称
type TINYINT NOT NULL 类型1-成人票2-儿童票3-老人票4-学生票
price DECIMAL(10,2) NOT NULL 价格
original_price DECIMAL(10,2) 原价
stock INT DEFAULT 0 库存
daily_limit INT DEFAULT 0 每日限购
valid_days INT DEFAULT 1 有效天数
refundable TINYINT DEFAULT 1 是否可退0-否1-是
description VARCHAR(255) 说明
sort INT DEFAULT 0 排序
status TINYINT DEFAULT 1 状态0-下架1-上架
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.3.4 景点订单表 (attraction_order)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
order_no VARCHAR(32) UNIQUE, NOT NULL 订单编号
user_id BIGINT NOT NULL, INDEX 用户ID
attraction_id BIGINT NOT NULL, INDEX 景点ID
ticket_id BIGINT NOT NULL 门票ID
attraction_name VARCHAR(100) 景点名称
ticket_name VARCHAR(100) 票种名称
quantity INT NOT NULL 数量
unit_price DECIMAL(10,2) NOT NULL 单价
total_price DECIMAL(10,2) NOT NULL 总价
visit_date DATE NOT NULL 游玩日期
visit_time VARCHAR(50) 游玩时段
contact_name VARCHAR(50) NOT NULL 联系人姓名
contact_phone VARCHAR(20) NOT NULL 联系人电话
status TINYINT DEFAULT 1 状态1-待支付2-已支付3-已使用4-已取消5-退款中6-已退款
pay_time DATETIME 支付时间
use_time DATETIME 使用时间
cancel_time DATETIME 取消时间
cancel_reason VARCHAR(255) 取消原因
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.4 商品相关表

2.4.1 商品分类表 (product_category)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
name VARCHAR(50) NOT NULL 分类名称
parent_id BIGINT DEFAULT 0 父级ID
level TINYINT DEFAULT 1 层级
icon VARCHAR(255) 图标
sort INT DEFAULT 0 排序
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.4.2 商品表 (product)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
name VARCHAR(200) NOT NULL 商品名称
category_id BIGINT INDEX 分类ID
cover_image VARCHAR(500) 封面图片
images TEXT 图片列表JSON数组
video_url VARCHAR(500) 商品视频
description TEXT 商品描述
detail TEXT 商品详情(富文本)
tags VARCHAR(255) 标签
is_hot TINYINT DEFAULT 0 是否热销
is_new TINYINT DEFAULT 0 是否新品
is_recommend TINYINT DEFAULT 0 是否推荐
status TINYINT DEFAULT 1 状态0-下架1-上架
view_count INT DEFAULT 0 浏览次数
sale_count INT DEFAULT 0 销量
favorite_count INT DEFAULT 0 收藏次数
score DECIMAL(3,2) DEFAULT 5.00 评分
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.4.3 商品规格表 (sku)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
product_id BIGINT NOT NULL, INDEX 商品ID
name VARCHAR(100) NOT NULL 规格名称(如:颜色、尺寸)
value VARCHAR(255) NOT NULL 规格值红色、L
price DECIMAL(10,2) NOT NULL 价格
stock INT DEFAULT 0 库存
image VARCHAR(500) 规格图片
sort INT DEFAULT 0 排序
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.4.4 购物车表 (cart)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
user_id BIGINT NOT NULL, INDEX 用户ID
product_id BIGINT NOT NULL, INDEX 商品ID
sku_id BIGINT 规格ID
quantity INT NOT NULL 数量
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.4.5 商品订单表 (product_order)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
order_no VARCHAR(32) UNIQUE, NOT NULL 订单编号
user_id BIGINT NOT NULL, INDEX 用户ID
total_quantity INT NOT NULL 商品总数量
total_price DECIMAL(10,2) NOT NULL 订单总金额
discount_amount DECIMAL(10,2) DEFAULT 0.00 优惠金额
actual_amount DECIMAL(10,2) NOT NULL 实付金额
freight_amount DECIMAL(10,2) DEFAULT 0.00 运费
address_id BIGINT 收货地址ID
consignee VARCHAR(50) 收货人
phone VARCHAR(20) 联系电话
province VARCHAR(50) 省份
city VARCHAR(50) 城市
district VARCHAR(50) 区县
detail_address VARCHAR(255) 详细地址
order_type TINYINT DEFAULT 1 订单类型1-普通订单
status TINYINT DEFAULT 1 状态1-待支付2-已支付3-待发货4-已发货5-待收货6-已完成7-已取消8-退款中9-已退款
pay_time DATETIME 支付时间
delivery_time DATETIME 发货时间
receive_time DATETIME 收货时间
cancel_time DATETIME 取消时间
cancel_reason VARCHAR(255) 取消原因
remark VARCHAR(500) 订单备注
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.4.6 订单商品表 (order_item)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
order_id BIGINT NOT NULL, INDEX 订单ID
order_no VARCHAR(32) NOT NULL 订单编号
product_id BIGINT NOT NULL 商品ID
product_name VARCHAR(200) NOT NULL 商品名称
sku_id BIGINT 规格ID
sku_name VARCHAR(255) 规格名称
cover_image VARCHAR(500) 商品图片
unit_price DECIMAL(10,2) NOT NULL 单价
quantity INT NOT NULL 数量
total_price DECIMAL(10,2) NOT NULL 小计
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间

2.4.7 物流表 (logistics)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
order_id BIGINT NOT NULL, UNIQUE 订单ID
order_no VARCHAR(32) NOT NULL 订单编号
logistics_company VARCHAR(50) 物流公司
tracking_no VARCHAR(100) 物流单号
current_status VARCHAR(100) 当前状态
traces TEXT 物流轨迹JSON
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.5 游记相关表

2.5.1 游记表 (travel_note)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
user_id BIGINT NOT NULL, INDEX 用户ID
user_nickname VARCHAR(50) 用户昵称
user_avatar VARCHAR(500) 用户头像
attraction_id BIGINT INDEX 关联景点ID
attraction_name VARCHAR(100) 景点名称
title VARCHAR(200) NOT NULL 游记标题
cover_image VARCHAR(500) 封面图片
content TEXT NOT NULL 游记内容(富文本)
images TEXT 图片列表JSON数组
video_url VARCHAR(500) 视频URL
tags VARCHAR(255) 标签
view_count INT DEFAULT 0 浏览次数
like_count INT DEFAULT 0 点赞次数
comment_count INT DEFAULT 0 评论次数
favorite_count INT DEFAULT 0 收藏次数
status TINYINT DEFAULT 0 状态0-待审核1-已发布2-已下架
reject_reason VARCHAR(255) 审核拒绝原因
publish_time DATETIME 发布时间
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.5.2 评论表 (comment)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
user_id BIGINT NOT NULL, INDEX 用户ID
user_nickname VARCHAR(50) 用户昵称
user_avatar VARCHAR(500) 用户头像
target_type TINYINT NOT NULL 目标类型1-景点2-商品3-游记
target_id BIGINT NOT NULL, INDEX 目标ID
parent_id BIGINT DEFAULT 0 父评论ID
content TEXT NOT NULL 评论内容
images TEXT 评论图片
like_count INT DEFAULT 0 点赞次数
reply_count INT DEFAULT 0 回复次数
status TINYINT DEFAULT 1 状态0-隐藏1-显示
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间
is_deleted TINYINT DEFAULT 0 逻辑删除

2.5.3 点赞表 (like)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
user_id BIGINT NOT NULL, INDEX 用户ID
target_type TINYINT NOT NULL 目标类型1-景点2-商品3-游记4-评论
target_id BIGINT NOT NULL, INDEX 目标ID
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间

2.6 内容管理表

2.6.1 轮播图表 (banner)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
title VARCHAR(100) NOT NULL 标题
image_url VARCHAR(500) NOT NULL 图片地址
link_type TINYINT DEFAULT 1 链接类型1-无链接2-景点3-商品4-游记5-外部链接
link_id BIGINT 链接ID
link_url VARCHAR(500) 外部链接URL
sort INT DEFAULT 0 排序
status TINYINT DEFAULT 1 状态0-禁用1-启用
start_time DATETIME 开始时间
end_time DATETIME 结束时间
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.6.2 公告表 (announcement)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
title VARCHAR(200) NOT NULL 标题
content TEXT NOT NULL 内容
type TINYINT DEFAULT 1 类型1-系统公告2-活动通知
cover_image VARCHAR(500) 封面图片
status TINYINT DEFAULT 1 状态0-下架1-上架
sort INT DEFAULT 0 排序
publish_time DATETIME 发布时间
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.7 支付相关表

2.7.1 支付记录表 (payment)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
payment_no VARCHAR(64) UNIQUE, NOT NULL 支付单号
order_type TINYINT NOT NULL 订单类型1-景点订单2-商品订单
order_id BIGINT NOT NULL 订单ID
order_no VARCHAR(32) NOT NULL 订单编号
user_id BIGINT NOT NULL 用户ID
amount DECIMAL(10,2) NOT NULL 支付金额
payment_method TINYINT NOT NULL 支付方式1-微信2-支付宝3-银行卡
payment_status TINYINT DEFAULT 0 支付状态0-待支付1-支付中2-已支付3-支付失败4-已退款
transaction_id VARCHAR(64) 第三方交易单号
pay_time DATETIME 支付时间
callback_time DATETIME 回调时间
callback_content TEXT 回调内容
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.7.2 退款记录表 (refund)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
refund_no VARCHAR(64) UNIQUE, NOT NULL 退款单号
payment_id BIGINT NOT NULL 支付记录ID
order_type TINYINT NOT NULL 订单类型1-景点订单2-商品订单
order_id BIGINT NOT NULL 订单ID
order_no VARCHAR(32) NOT NULL 订单编号
user_id BIGINT NOT NULL 用户ID
refund_amount DECIMAL(10,2) NOT NULL 退款金额
refund_reason VARCHAR(255) 退款原因
refund_status TINYINT DEFAULT 0 退款状态0-待审核1-审核通过2-退款中3-已退款4-审核拒绝
reject_reason VARCHAR(255) 拒绝原因
process_time DATETIME 处理时间
complete_time DATETIME 完成时间
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

2.8 统计数据表

2.8.1 每日统计表 (daily_statistics)

字段名 类型 约束 说明
id BIGINT PK, AUTO_INCREMENT 主键
stat_date DATE UNIQUE, NOT NULL 统计日期
new_user_count INT DEFAULT 0 新增用户数
active_user_count INT DEFAULT 0 活跃用户数
page_view INT DEFAULT 0 页面浏览量
attraction_order_count INT DEFAULT 0 景点订单数
attraction_gmv DECIMAL(12,2) DEFAULT 0.00 景点订单金额
product_order_count INT DEFAULT 0 商品订单数
product_gmv DECIMAL(12,2) DEFAULT 0.00 商品订单金额
create_time DATETIME DEFAULT CURRENT_TIMESTAMP 创建时间
update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE 更新时间

三、索引设计

3.1 联合索引

表名 索引名 字段 说明
favorite idx_user_type user_id, favorite_type, favorite_id 用户收藏查询
cart idx_user_product user_id, product_id 用户购物车查询
order_item idx_order_product order_id, product_id 订单商品查询
comment idx_target target_type, target_id 评论查询
like idx_target user_id, target_type, target_id 点赞查询

四、表关系图

┌─────────┐     ┌──────────┐     ┌──────────┐
│  user   │────→│ address  │     │ favorite │
└────┬────┘     └──────────┘     └──────────┘
     │                                   │
     ├────→┬──────────┐     ┌─────────────┴──┐
     │     │  admin   │────→│ admin_role     │
     │     └──────────┘     └───────┬────────┘
     │                              │
     ├───────→ role ◅──────────────┘
     │
     ├────→ attraction_order
     ├────→ product_order ──────→ order_item
     │          │
     │          └────→ logistics
     │
     ├────→ cart
     │
     ├────→ travel_note
     │
     ├────→ comment
     │
     ├────→ like
     │
     └────→ payment ──────→ refund

┌─────────────────┐
│    attraction   │←──→ ticket
└────────┬────────┘
         │
         └──→ travel_note
         └──→ comment

┌─────────────────┐
│    product      │←──→ sku
└────────┬────────┘
         │
         └──→ cart
         └──→ order_item
         └──→ comment