小程序表设计
阿里云:云数据库RDS/实例列表。
要实现 “每日思维挑战”小程序,数据库表和 API 需要支持 用户答题、题目管理、分享裂变、排行榜 等核心功能。
📌 数据库表设计
1️⃣ users(用户表)
- 记录用户信息,支持微信授权登录
字段名 | 类型 | 说明 |
---|---|---|
id | INT(PK) | 用户ID |
openid | VARCHAR | 微信openid(唯一) |
nickname | VARCHAR | 昵称 |
avatar | VARCHAR | 头像URL |
created_at | DATETIME | 注册时间 |
2️⃣ questions(题目表)
- 存储每日思维挑战的题目
字段名 | 类型 | 说明 |
---|---|---|
id | INT(PK) | 题目ID |
title | VARCHAR | 题目内容 |
image | VARCHAR | 题目图片(可选) |
options | JSON | 选项列表(A/B/C/D) |
correct_answer | CHAR(1) | 正确答案(A/B/C/D) |
explanation | TEXT | 题目解析 |
category | VARCHAR | 题目分类 |
created_at | DATETIME | 创建时间 |
3️⃣ user_answers(用户答题记录)
- 记录用户的答题情况,计算答题率和排行榜
字段名 | 类型 | 说明 |
---|---|---|
id | INT(PK) | 记录ID |
user_id | INT | 用户ID(关联 users) |
question_id | INT | 题目ID(关联 questions) |
answer | CHAR(1) | 用户选的答案 |
is_correct | BOOLEAN | 是否答对 |
answered_at | DATETIME | 答题时间 |
4️⃣ shares(分享记录表)
- 记录用户分享行为,解锁解析
字段名 | 类型 | 说明 |
---|---|---|
id | INT(PK) | 记录ID |
user_id | INT | 分享人ID(关联 users) |
question_id | INT | 题目ID(关联 questions) |
shared_at | DATETIME | 分享时间 |
shared_to | JSON | 分享对象(微信好友/群) |
5️⃣ leaderboard(排行榜表)
- 记录用户的答题积分,用于排行榜
字段名 | 类型 | 说明 |
---|---|---|
id | INT(PK) | 记录ID |
user_id | INT | 用户ID(关联 users) |
score | INT | 答对题目数(得分) |
rank | INT | 排名 |
updated_at | DATETIME | 最后更新 |
📌 API 设计(V1.0 MVP 核心功能)
1️⃣ 用户相关
API | 方法 | 说明 |
---|---|---|
/auth/login | POST | 用户登录(微信授权) |
/user/profile | GET | 获取用户信息 |
2️⃣ 题目相关
API | 方法 | 说明 |
---|---|---|
/questions/today | GET | 获取今日题目 |
/questions/{id} | GET | 获取题目详情 |
3️⃣ 答题相关
API | 方法 | 说明 |
---|---|---|
/answers/submit | POST | 提交答题(记录答案) |
/answers/stats | GET | 获取题目答题统计(A/B/C/D 选择占比) |
4️⃣ 分享 & 解析解锁
API | 方法 | 说明 |
---|---|---|
/shares/create | POST | 记录分享行为 |
/questions/{id}/unlock | GET | 查看解析(需分享后解锁) |
5️⃣ 排行榜
API | 方法 | 说明 |
---|---|---|
/leaderboard/top | GET | 获取排行榜(前50名) |
/leaderboard/user/{id} | GET | 获取某个用户的排名 |
📌 逻辑流程
- 用户进入小程序,微信授权登录(
/auth/login
) - 获取今日题目(
/questions/today
) - 用户作答(
/answers/submit
),返回答对/答错反馈 - 显示“好友选了什么?”(
/answers/stats
) - 解析内容默认隐藏,用户分享后(
/shares/create
)解锁(/questions/{id}/unlock
) - 记录用户分数,更新排行榜(
/leaderboard/top
)
🔥 为什么这样设计?
✅ 数据最小化,避免冗余(用户、题目、答题、分享、排行榜)
✅ API 结构清晰,核心功能明确(答题 + 社交裂变)
✅ 支持裂变增长,提升用户留存(“分享解锁解析” + 排行榜激励)
这样设计,既保证了核心功能,又能最大化社交传播,满足 MVP 版本 的快速上线需求!🚀