摸鱼君统一用户中心的数据表和字段设计
数据库创建&表字段设计
这些要根据需求来了,在设计字段的时候,尽量不要用关键字,比如说order顺序,这个很常用,但是它是个关键字,用也没关系,错多了,就知道了。
找对象
- 用户(不含用户信息)
- 注册信息
- 用户信息
- 敏感词(可以直接用文本)
- token
- 设置
- 应用列表
- 图片(用户icon和应用icon)
- 粉丝/关注表
- 黑名单
用户
用户和信息分开了,通常来说,开始的时候可以不分开,数据多了,拆表的时候,纵向拆表。
纵向拆表的话,肯定会考虑数据的使用频率的。展示的数据肯定是频度最高的,然后到逻辑上使用的,计算的。
而比较使用,比较少查的,可以拆到另外一张表。这个时候我们可以分成用户表和用户信息表。
- id ID
- user_name 用户名
- password 密码
- salt 盐
- lev 等级
- sex 性别
- avatar 头像
- sign 签名
- deleted 逻辑删除标记 1表示删除,0表示正常
- status 状态,0表示正常,1表示禁止用户
- create_time 创建时间
- update_time 更新时间
用户信息表
作为用户表的一个扩展表,比如说邮箱地址呀,电话之类的,当然,如果你要把电话号码作为注册的号,可以放到用户表里针对使用频度来看,如果电话号码/邮箱号码只是登录,修改密码之类的使用,还不算频繁,可以联立查询一下就好。
- id ID
- user_id 用户ID
- phone_num 电话号码
- email 邮箱地址
- compony 公司名称
- position 职位
- good_at 擅长领域
- birthday 生日
- cover 封面
- location 所在地
- create_time 创建时间
- update_time 更新时间
注册信息
当用户注册的时候,我们需要记录一些信息以便于后期统计,当然啦,这个一般是从需求来的。比如说我们要知道用户的注册来源(pc,安卓客户端,iphone客户端,自定义渠道),注册时间,注册地点,全网站排名之类的。就可以在这个时候记录了。
- id ID
- user_id 用户ID
- reg_time 注册时间
- reg_from 注册来源
- reg_ip 注册IP
- top 全站注册排名
- create_time 创建时间
- update_time 更新时间
应用表
为什么会有应用表呢?当我们在做接入微信开发的时候,我们需要注册账号,创建应用。做淘宝开发的时候也是需要创建应用。会有app_id和app_key,也就是会有app的ID和秘钥。这是一个标识,便于后期的控制,特别是开放API。
- id ID
- app_name 应用名称
- user_id 创建人
- app_type 应用类型 normal普通类型,own 自己的应用
- state 状态 0表示可用,1表示审核中,3表示禁用
- deleted 逻辑删除标记 0表示正常,1表示删除
- app_key 应用唯一标识
- app_secret 应用秘钥
- callback_url 回调地址
- app_icon 应用图标
- app_description 应用描述
- create_time 创建时间
- update_time 更新时间
Token
- id ID
- user_id 用户ID
- refresh_token 刷新的token
- token_key token的MD5值
- login_from 来源
- app_id 应用ID
- create_time 创建时间
- update_time 更新时间
登录记录
对于用户中心来说,安全也是一个比较重要的问题,我们可以通过记录登录的信息,以便让用户查询自己的登录记录,是否有被别人异地登录。
- id ID
- user_id 用户ID
- login_ip 登录IP
- login_from 登录来源
- create_time 创建时间
- update_time 更新时间
图片表
我们用户中心也会上传一些图片,比如说用户头像,应用的icon,用户中心的封面图片
- id ID
- user_id 用户ID,谁上传的
- md5 MD5值
- name 图片名称
- url 图片地址
- type 图片类型(avatar,app_icon,cover)
- create_time 创建时间
- update_time 更新时间
粉丝表
粉丝表我们关系的有查询粉丝列表,查询关注的人列表,给出两个用户ID,判断两个人的关系:相互关注,A已关注B,互不关注,B已关注A,当然,还有拉黑的关系,哈哈。
- id ID
- user_id 用户ID(被关注人的ID)
- follow_id 关注者的ID(关注user_id的用户ID)
- create_time 创建时间
- update_time 更新时间
黑名单列表
根据用户就可以查出这个用户的黑名单,需要什么信息可以联立用户表进行查询。
- id ID
- user_id 用户ID
- black_user_id 黑名单用户ID
- create_time 创建时间
- update_time 更新时间
用户个人数据统计
- id ID
- user_id 用户ID
- login_day 登录天数
- register_time 时间(可以计算注册天数)
- fans_count 粉丝数量
- follows_count 关注数量
- on_time 在线时间
- create_time 创建时间
- update_time 更新时间
设置表
设置表,一般我们以k-v的形式来保存数据
大概我们会设置管理员的邮箱地址,设置每个人账号创建应用的个数
- id ID
- key 键
- value 值
- create_time 创建时间
- update_time 更新时间