纪念第一次建了一个系统的表
数据表是项目的基础。
数据表,服务于业务,脱离业务的数据表是没有意义的。
数据表,不存在最完美,只存在是否能够满足现有业务。
数据表是需求的体现,根据框图,和需求文档,抽象出合理的数据模型。
根据逐渐积累的建表经验,完成表的创建。
表与表之前,通过逻辑外键来关联关系。
选择合适的表名称,选择合适的字段名称,选择合适的存储类型,做好备注。
表不是一蹴而就的,表创建也是一个逐渐修改和完善的过程。
随着需求的变更,灵活变动。
最好保证表的逻辑是合适的,走的通的。
尽量满足三范式,将表尽量独立化,每个表代表一个对象的抽象。
建表也要灵活,快速迭代。
如果有必要,适度的冗余也是可以的,方便查询。
建表是一件费脑子的事情,建表的过程,是一个整理需求,明确需求的过程。
这一系列的表,不一定是最好的,但是基本也够用了。很多表都大同小异,有些还是重复的。
目前只是1.0版本,后续开发的时候,肯定还会有所补充和扩展。
tf_features_banner表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
banner_img | varchar(255) | 图片 |
status | tinyint(1) | 是否启用 1启用 2 关闭 |
is_del | tinyint(1) | 是否删除 0 未删除 1删除 |
addtime | int | 创建时间 |
tf_banner表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
banner_img | varchar(255) | 图片 |
banner_link | varchar(255) | 图片链接 |
status | tinyint(1) | 是否启用 1启用 2 关闭 |
is_del | tinyint(1) | 是否删除 0 未删除 1删除 |
addtime | int | 创建时间 |
tf_user表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
openid | varchar(255) | openid 唯一 |
tel | char(11) | 手机号 11 位够用了 |
tel_prefix | varchar(10) | +86 |
tel_nation | varchar(20) | 国家 |
nickname | varchar(50) | 昵称 |
sex | char(1) | 性别 1男 2女 |
avatarurl | varchar(255) | 头像 |
exam_date | varchar(50) | 考试日期 |
target_score | varchar(50) | 目标分数 |
has_experience | tinyint(1) | 之前是否考过1考过 2未考过 |
addtime | int(11) | 创建时间 |
varchar(255) | 邮箱 | |
integral | int(11) | 积分 |
city | varchar(30) | 国家,城市 |
identity | tinyint(4) | 身份 1 学生 2 老师(兼有学生功能) |
is_vip | tinyint(4) | 是否是vip 0否 1是 |
vip_deadline | int(11) | 会员到期日期 |
reg_ip | varchar(16) | 注册ip |
status | tinyint(4) | 状态 1 有效 2 冻结 |
tf_apply_material 领取资料
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | uid | 用户 |
varchar(255) | 邮箱 | |
is_send | tinyint(1) | 是否发送 0 未发送 1 发送 |
is_del | tinyint(1) | 是否删除 0 未删除 1 删除 |
addtime | int | 创建时间 |
tf_famous_teacher 名师表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | uid | 关联用户id |
realname | varchar(50) | 姓名 |
avatarurl | varchar(255) | 头像 |
tag1 | varchar(8) | 职称 |
tag2 | varchar(8) | 主攻方向 |
tag3 | varchar(8) | 所在校区 |
desc | varchar(500) | 描述 |
content | text | 详情 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
addtime | int | 创建时间 |
tf_high_score 高分榜
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
number | varchar(11) | 编号 唯一 |
title | varchar(100) | 标题 |
img | varchar(255) | 标图 |
subtitle | varchar(50) | 小标题 |
author | varchar(20) | 录入人 |
tag1 | varchar(8) | 标签1 |
tag2 | varchar(8) | 标签2 |
tag3 | varchar(8) | 标签3 |
addtime | int(11) | 添加时间 |
content | text | 详情 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
tf_offline_activity 最新活动
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(100) | 标题 |
campus | varchar(20) | 校区 |
title_img | varchar(255) | 标图 |
content_img | varchar(255) | 内容图 |
tag1 | varchar(8) | 标签1 |
tag2 | varchar(8) | 标签2 |
tag3 | varchar(8) | 标签3 |
activity_time | int(11) | 活动日期 |
add_time | int(11) | 添加时间 |
content | text | 活动内容 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
is_hot | tinyint(1) | 0 非热门 1热门 |
tf_new_word 生词
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int(11) | 用户id |
word | varchar(50) | 单词 |
addtime | int(11) | 添加时间 |
is_del | tinyint(1) | 0未删除 1删除 |
tf_question_type 题型
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
short_name | varchar(10) | 名称缩写 |
long_name | varchar(50) | 长名称 |
remark | varchar(20) | 中文备注 |
pid | int(11) | 父id |
level | tinyint(1) | 1 根 2 子 |
weight | int | 权重,越大越靠前 |
tf_test_point 考点
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
name | varchar(50) | 名称 |
remark | varchar(50) | 中文备注 |
level | tinyint(1) | 等级 1 国家 2城市 3考点 |
pid | int(11) | 父id |
weight | int(11) | 权重,越大越靠前 默认0 |
tf_memory 回忆
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int(11) | uid |
title | varchar(50) | 标题 |
examtime | int(11) | 考试日期 |
addtime | int(11) | 创建日期 |
country_id | int(11) | 国家 |
city_id | int(11) | 城市 |
point_id | int(11) | 考点 |
is_del | tinyint(1) | 是否删除 0未删除 1删除 |
is_release | tinyint(1) | 是否发布 0未发布 1发布 |
tf_memory_question 回忆题目内容
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
memory_id | int(11) | memory_id |
type_root | int(11) | 根类型 |
type_child | int(11) | 子类型 |
title | varchar(30) | 题目标题 |
content | varchar(500) | 题目内容 |
key_point | varchar(100) | 要点 |
tf_memory_like 回忆点赞
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
memory_id | int(11) | memory_id |
uid | int(11) | uid |
tf_memory_collect 回忆关注
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
memory_id | int(11) | memory_id |
uid | int(11) | uid |
addtime | int(11) | 关注时间 |
tf_memory_comment 回忆评论
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
memory_id | int(11) | memory_id |
uid | int(11) | uid |
nickname | varchar(50) | 昵称 冗余 |
avatarurl | varchar(255) | 头像 冗余 |
content | varchar(500) | 评论内容 |
like_num | int(11) | 点赞数 |
addtime | int(11) | 评论时间 |
tf_memory_comment_like 回忆评论点赞
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
memory_comment_id | int(11) | memory_comment_id |
uid | int(11) | uid |
tf_article 文章
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(100) | 标题 |
title_img | varchar(255) | 标题图 |
tag1 | char(8) | 标签1 |
tag2 | char(8) | 标签2 |
tag3 | char(8) | 标签3 |
part_one | text | 内容一 |
video_url | varchar(255) | 视频链接 |
part_two | text | 内容二 |
audio_url | varchar(255) | 音频链接 |
part_three | text | 内容三 |
addtime | int(11) | 添加时间 |
author | varchar(50) | 作者 |
type | tinyint(1) | 1 考试介绍 2 高分经验 3 词汇专区 4 语法专区 5 发音专区 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
tf_question 题目表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(200) | 标题 |
content | text | 题目内容 文字或图片 |
answer | text | 题目答案或要点 |
question_type_id | int(11) | 题目类型 |
question_type_name | varchar(10) | 题目类型名称 冗余 |
recording | varchar(255) | 题目录音 非必填 |
addtime | int(11) | 添加时间 |
confirm_num | int(11) | 确认考过数量 |
type | tinyint(1) | 1 全局开放 2 练习优先 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
tf_question_answer_record 答题记录表
字段 | 类型 | 备注 |
---|---|---|
id | int(11) | id |
uid | int(11) | uid |
question_id | int(11) | 题目类型 |
addtime | int(11) | 添加时间 |
tf_question_comment 题目评论表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
question_id | int(11) | memory_id |
uid | int(11) | uid |
nickname | varchar(50) | 昵称 冗余 |
avatarurl | varchar(255) | 头像 冗余 |
content | text | 评论内容 |
like_num | int(11) | 点赞数 |
addtime | int(11) | 评论时间 |
tf_question_comment_like 题目评论点赞
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
question_comment_id | int(11) | question_comment_id |
uid | int(11) | uid |
tf_question_confirm 题目确认
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
question_id | int(11) | 题目id |
uid | int(11) | uid |
tf_question_collect 题目收藏
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
question_id | int(11) | 题目id |
uid | int(11) | uid |
addtime | int(11) | 关注时间 |
tf_question_exercise 题目练习
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
question_id | int(11) | 题目id |
uid | int(11) | uid |
recording_url | varchar(255) | 录音地址 |
recording_seconds | int(11) | 录音时长 冗余 |
nickname | varchar(50) | 昵称 冗余 |
avatarurl | varchar(255) | 头像 冗余 |
like_num | int(11) | 点赞数 |
addtime | int(11) | 关注时间 |
tf_question_exercise_like 题目练习点赞
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
question_exercise_id | int(11) | 练习id |
uid | int(11) | uid |
tf_offline_course 线下课程
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(100) | 标题 |
title_img | varchar(255) | 标图 |
content_img | varchar(255) | 内容图 |
discount | varchar(10) | 限时优惠 |
lecturer | varchar(10) | 主讲老师 |
campus | varchar(10) | 校区 |
tag1 | varchar(8) | 标签1 |
tag2 | varchar(8) | 标签2 |
tag3 | varchar(8) | 标签3 |
activity_time | int(11) | 开课日期 |
add_time | int(11) | 添加时间 |
intro_content | text | 简介内容 |
lecturer_content | text | 主讲老师内容 |
discount_content | text | 优惠内容 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
is_hot | tinyint(1) | 0 非热门 1热门 |
tf_practice 随堂练习
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(50) | 标题 |
intro | varchar(500) | 简介 |
addtime | int(11) | 添加时间 |
begintime | int(11) | 开始时间 |
endtime | int(11) | 结束时间 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
weight | int(11) | 权重,数字越大越靠前 |
tf_practice_task 练习任务
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
practice_id | int | 练习id |
title | varchar(50) | 标题 |
addtime | int(11) | 添加时间 |
begintime | int(11) | 开始时间 |
endtime | int(11) | 结束时间 |
is_show | tinyint(1) | 1显示 2不显示 |
is_del | tinyint(1) | 0未删除 1删除 |
weight | int(11) | 权重,数字越大越靠前 |
tf_task_question 练习习题
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
task_id | int | 任务id |
question_id | varchar(50) | 问题id |
weight | int(11) | 权重,数字越大越靠前 |
tf_practice_collect 练习收藏
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
practice_id | int(11) | 题目id |
uid | int(11) | uid |
addtime | int(11) | 添加时间 |
tf_user_integral 用户积分
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int(11) | uid |
val | int(11) | 积分值 |
val_type | int(11) | 1正(增) 2负(减) |
remark | varchar(50) | 描述 |
type | tinyint(1) | 1签到 2评论 3练习 4邀请好友 5创建回忆 6积分兑换 |
addtime | int(11) | 添加时间 |
tf_reserve_consulting 预约咨询
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int(11) | uid |
teacher_id | int(11) | 预约老师id |
realname | varchar(50) | 姓名 |
wechat_id | varchar(50) | 微信号 |
tel | char(20) | 手机号 |
is_test | tinyint(1) | 0未考过pte 1 考过pte |
remark | varchar(500) | 备注 |
status | tinyint(1) | 状态 1未处理 2 已处理 |
addtime | int(11) | 添加时间 |
tf_reserve_consulting_img 图片
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
reserve_consulting_id | int(11) | reserve_consulting_id |
imgurl | varchar(255) | 图片地址 |
tf_reserve_report 预约成绩单
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int(11) | uid |
teacher_id | int(11) | 预约老师id |
realname | varchar(50) | 姓名 |
wechat_id | varchar(50) | 微信号 |
tel | char(20) | 手机号 |
is_test | tinyint(1) | 0未考过pte 1 考过pte |
remark | varchar(500) | 备注 |
status | tinyint(1) | 状态 1未处理 2 已处理 |
addtime | int(11) | 添加时间 |
tf_reserve_report_img 预约成绩单图片
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
reserve_report_id | int(11) | 成绩单图片 |
imgurl | varchar(255) | 图片地址 |
tf_vip_order 购买会员订单表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
order_num | varchar(100) | 订单号 |
uid | int(11) | uid |
amount | decimal(10,2) | 充值金额 |
duration | int | vip时长 单位为月 |
transaction_id | varchar(100) | 支付id |
paytime | int(11) | 支付时间 |
addtime | int(11) | 创建时间 |
status | tinyint(1) | 状态 1 待支付 2 已支付 ... |
tf_vip_exchange_code 兑换码表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
exchange_code | char(8) | 兑换码 |
duration | int | vip时长 单位为月 |
is_use | tinyint(1) | 0未使用 1 已使用 |
uid | int(1) | 使用人 |
usetime | int(11) | 使用日期 |
addtime | int(11) | 创建时间 |
tf_goods 周边商品表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(255) | 名称 |
price | decimal(10,2) | 价格 |
title_img1 | varchar(255) | 宽图 |
title_img2 | varchar(255) | 窄图 |
is_new | tinyint(1) | 是否新品 0 否 1是 |
is_hot | tinyint(1) | 是否热门 0 否 1是 |
is_rec | tinyint(1) | 是否推荐 0 否 1是 |
is_del | tinyint(1) | 是否删除 0 否 1是 |
is_show | tinyint(1) | 是否显示 1是 2否 |
detail | text | 详情 |
addtime | int(11) | 添加时间 |
tf_goods_banner 周边商品轮播表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
goods_id | int | goods_id |
imgurl | varchar(255) | 图片地址 |
weight | int(11) | 权重 数字越大越靠前 |
addtime | int(11) | 添加时间 |
tf_integral_goods 积分商品表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
title | varchar(255) | 名称 |
integral | int(11) | 所需积分 |
title_img1 | varchar(255) | 宽图 |
title_img2 | varchar(255) | 窄图 |
is_new | tinyint(1) | 是否新品 0 否 1是 |
is_hot | tinyint(1) | 是否热门 0 否 1是 |
is_rec | tinyint(1) | 是否推荐 0 否 1是 |
is_del | tinyint(1) | 是否删除 0 否 1是 |
is_show | tinyint(1) | 是否显示 1是 2否 |
expiration_days | int(11) | 兑换后过期天数 0 表示兑换后永不过期 |
detail | text | 详情 |
addtime | int(11) | 添加时间 |
tf_integral_goods_banner 周边商品轮播表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
integral_goods_id | int | integral_goods_id |
imgurl | varchar(255) | 图片地址 |
weight | int(11) | 权重 数字越大越靠前 |
addtime | int(11) | 添加时间 |
tf_integral_order 积分商品订单
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
code | varchar(8) | 兑换码 |
uid | int(11) | uid |
integral_goods_id | int(11) | integral_goods_id |
title | varchar(255) | 商品名称 冗余 |
title_img1 | varchar(255) | 商品图片 宽图 冗余 |
title_img2 | varchar(255) | 商品图片 窄图 冗余 |
integral | int | 支付积分 |
addtime | int(11) | 创建时间 |
expiration_time | int(11) | 过期时间 |
status | tinyint(1) | 状态 1 未使用 2 已使用 3 已过期 |
tf_goods_order 周边商品订单
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
order_num | varchar(100) | 订单号 |
uid | int(11) | uid |
goods_id | int(11) | integral_goods_id |
price | decimal(10,2) | 支付金额 |
transaction_id | varchar(100) | 支付id |
consignee_name | varchar(30) | 收货人姓名 |
consignee_tel | varchar(20) | 收货人电话 |
consignee_address | varchar(255) | 收货人详细地址 |
paytime | int(11) | 支付时间 |
addtime | int(11) | 创建时间 |
status | tinyint(1) | 状态 1 待支付 2 已支付 未发货 3 已发货 ... |
tf_vip_apply_export vip导出
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int | uid |
varchar(255) | 邮箱 | |
content | text | 内容 json存储 |
addtime | int(11) | 申请时间 |
status | tinyint(1) | 1 未处理 2 已处理 |
tf_msg 消息表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
content | varchar(255) | 消息内容 |
uid | int(11) | 收件人id 0表示面向全部用户 |
type | tinyint(1) | 1积分扣除消息2购买周边产品消息3收到评论消息 4开通会员提示 5会员到期提示 6 主动推送消息 |
addtime | int(11) | 消息发送时间 |
tf_msg_mark 消息标记已读表
字段 | 类型 | 备注 |
---|---|---|
id | int | id |
uid | int | uid |
msg_id | int | msg_id |
readtime | int | 阅读时间 |