膳逸:数据库设计思路

数据库设计思路

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: 活动id
    • text: 打卡文案
    • 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: 用户ID
    • uuid: 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
  1. 关系描述

  • 15
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值