数据库设计思路
文章目录
- 数据库设计思路
- 1. 概述
- 2. 表结构设计
- 3. 设计思路
- 1. 概述
- 2. 表之间的关系
- 2.1 用户表 (`user`) 与 用户详细信息表 (`user_info`)
- 2.2 用户表 (`user`) 与 用户活动关系表 (`user_activity`)
- 2.3 用户表 (`user`) 与 用户关注关系表 (`user_follow`)
- 2.4 用户表 (`user`) 与 打卡记录表 (`check_in`)
- 2.5 用户表 (`user`) 与 活动打卡记录表 (`check_in_activity`)
- 2.6 活动表 (`activity`) 与 用户活动关系表 (`user_activity`)
- 2.7 活动表 (`activity`) 与 活动打卡记录表 (`check_in_activity`)
1. 概述
该数据库设计用于管理一个活动和用户参与的系统。主要包括活动信息、用户信息、用户打卡记录、用户关注关系等。数据库设计采用MySQL,字符集为utf8mb4,存储引擎为InnoDB。
2. 表结构设计
2.1 活动表 (activity
)
- 表名:
activity
- 描述: 存储活动的基本信息。
- 字段:
id
: 主键,自增长name
: 活动名description
: 活动简介requirements
: 活动要求start_time
: 活动开始时间end_time
: 活动结束时间participants_count
: 活动参与人数reward
: 活动奖励机制status
: 活动状态(0未开始,1进行中,2已结束)picture
: 活动图片链接count_day
: 活动打卡要求时间
2.2 打卡记录表 (check_in
)
- 表名:
check_in
- 描述: 存储用户的打卡记录。
- 字段:
id
: 主键,自增长user_id
: 外键,关联用户信息表text
: 打卡文案time
: 打卡时间images
: 打卡图片(最多9张)analysis
: AI智能分析
2.3 活动打卡记录表 (check_in_activity
)
- 表名:
check_in_activity
- 描述: 存储用户在活动中的打卡记录。
- 字段:
id
: 主键,自增长user_id
: 外键,关联用户信息表activity_id
: 活动idtext
: 打卡文案time
: 打卡时间images
: 打卡图片(最多9张)analysis
: AI智能分析
2.4 管理用户表 (mis_user
)
- 表名:
mis_user
- 描述: 存储管理用户的信息。
- 字段:
id
: 主键,自增长username
: 用户名password
: 密码name
: 姓名sex
: 性别phone
: 电话号码email
: 电子邮件status
: 用户状态
- 索引:
idx_username
: 用户名索引idx_phone
: 电话号码索引idx_email
: 电子邮件索引idx_status
: 用户状态索引
2.5 用户表 (user
)
- 表名:
user
- 描述: 存储普通用户的信息。
- 字段:
id
: 主键,自增长open_id
: 唯一授权字符串nick_name
: 微信昵称avatar
: 微信头像sex
: 性别status
: 状态(1正常,0禁用)create_time
: 创建日期
2.6 用户活动关系表 (user_activity
)
- 表名:
user_activity
- 描述: 存储用户与活动的关系。
- 字段:
id
: 主键,自增长user_id
: 外键,关联用户信息表activity_id
: 外键,关联活动信息表
2.7 用户关注关系表 (user_follow
)
- 表名:
user_follow
- 描述: 存储用户之间的关注关系。
- 字段:
id
: 主键,自增长user_id
: 外键,关联用户信息表follow_user_id
: 外键,关联用户信息表pin
: 置顶状态(0为未置顶,1为置顶)
2.8 用户详细信息表 (user_info
)
- 表名:
user_info
- 描述: 存储用户的详细信息。
- 字段:
id
: 主键,自增长user_id
: 用户IDuuid
: UUID,当做用户信息卡的编号name
: 姓名sex
: 性别phone
: 手机号码email
: 电子邮箱birthday
: 出生日期address
: 居住地址height
: 身高(m)weight
: 体重(kg)bmi
: BMI指数(kg/m²)likes
: 饮食偏好dislikes
: 忌口与过敏原goal
: 目标diseases
: 疾病
3. 设计思路
1. 概述
该数据库设计涉及多个表之间的关系,包括用户、活动、打卡记录等。以下是详细的表之间的联系。
2. 表之间的关系
2.1 用户表 (user
) 与 用户详细信息表 (user_info
)
- 关系类型: 一对一
- 描述: 每个用户在
user
表中有一条记录,在user_info
表中也有一条对应的详细信息记录。 - 外键:
user_info.user_id
关联user.id
2.2 用户表 (user
) 与 用户活动关系表 (user_activity
)
- 关系类型: 多对多
- 描述: 一个用户可以参与多个活动,一个活动也可以有多个用户参与。
- 外键:
user_activity.user_id
关联user.id
user_activity.activity_id
关联activity.id
2.3 用户表 (user
) 与 用户关注关系表 (user_follow
)
- 关系类型: 多对多(自关联)
- 描述: 用户之间可以互相关注,一个用户可以关注多个其他用户,一个用户也可以被多个其他用户关注。
- 外键:
user_follow.user_id
关联user.id
user_follow.follow_user_id
关联user.id
2.4 用户表 (user
) 与 打卡记录表 (check_in
)
- 关系类型: 一对多
- 描述: 一个用户可以有多条打卡记录。
- 外键:
check_in.user_id
关联user.id
2.5 用户表 (user
) 与 活动打卡记录表 (check_in_activity
)
- 关系类型: 一对多
- 描述: 一个用户可以在多个活动中打卡,每个打卡记录对应一个活动。
- 外键:
check_in_activity.user_id
关联user.id
check_in_activity.activity_id
关联activity.id
2.6 活动表 (activity
) 与 用户活动关系表 (user_activity
)
- 关系类型: 多对多
- 描述: 一个活动可以有多个用户参与,一个用户也可以参与多个活动。
- 外键:
user_activity.activity_id
关联activity.id
user_activity.user_id
关联user.id
2.7 活动表 (activity
) 与 活动打卡记录表 (check_in_activity
)
- 关系类型: 一对多
- 描述: 一个活动可以有多条打卡记录,每条打卡记录对应一个用户。
- 外键:
check_in_activity.activity_id
关联activity.id
- 关系描述