用户信息表在很多情况下都需要有,属于一个项目开篇的基础。这个不搞好以后就会给自己带来麻烦。
我参考该博文设计:浅谈数据库用户表结构设计
只是有些地方我实践之后需要补充一下:
-
user表字段:
-
user_auth表:
要补充说明的是,“nickname”是唯一不重复的,所以他可以作为主键,这样有好处:
- 减少一个字段,简化表
- “user_auth”表里直接关联“nickname”,查询的时候不需要先去“user”表查个“user_id”再到“user_auth”表里根据“user_id”去查密码什么的。
有什么坏处暂时没想到。
nickname的唯一性
在大多数应用中,“nickname”都是唯一的。也有例外,例如QQ,但是QQ有他的特点,他登录只有QQ账号的方式,不会有用昵称登录的方式,也不会有第三方登录。但现在很多地方都是用昵称登录的方式,所以昵称的唯一性还是有必要的。
我以及我参考的博文都在提第三方登录,那我就假设项目有这个功能,那么就会存在这么一种情况:一个新用户,他选择第三方登录,如QQ,那么数据库里并没有他的信息,那么就需要为他注册,本着人性化的特点,第三方登陆时不需要他填写任何信息,那么我就简单的拿他的第三方昵称和头像作为基础信息注册,而如果改昵称已被人注册呢?我看到有人的做法是给昵称后面加上本站的标识,这样也不错。后期用户还可以改昵称嘛。那么如果昵称本来就很长,再加个标识超出长度呢?可以考虑下怎么处理更人性化。当然,加了标识之后也要检验唯一性,万一有人自己手动给名字加本站标识呢,所以这种方法也不完全好使。可以再想想有没有更好的。