WEB开发那点事:数据库表的建立

这几天来回出差忙着项目上的事,终于今天可以继续写写了。在以前的文章中,我曾经提到过数据类型、怎么创建一个合适的用户表。今天我就以实际的例子来与大家讨论讨论这个问题。很多面试者都没有给出我想要的答案。

进入正题,我就以用户表的建立抛砖引玉。

首先来看看我在项目中设计的用户表的样子(当然可以把账号与用户资料分表存储)。

WEB开发那点事:数据库表的建立

看出了什么呢?(以上为EasyCoderX易码者平台的库表操作界面)

在这个表中,涉及到了一个架构问题,你需要具数据库、前端、后台等多方面的技术能力。接下来我阐述一下我认为关键的点。

一、账号的设计:问了很多人,如果我们的账号是手机号码,你怎么设置,答案:varchar,My GOD怎么这样子,你这不是表明自己简直连数据类型的基础都没有入门嘛。

真正看你是不是一个基础扎实的开发者了,或者叫DBA,或者是架构师吧。

在我们这里账号的设计是bigint,why?

1、字符串与数值的存储空间(为什么不用varchar、int而要用bigint,你们自己想想吧);

2、数值类型查询速度快于字符串;

二、密码:必须必须是密文啊(不用我多说吧),如果你还不知道为什么(简直是天杀的了、*一千年啊。。。。),长度32、记住是32位定长(你可以说,可以用char啊,当然可以,不过因为我在系统中没有使用密码列查询,所以就varchar了)

很多人直接对输入的密码进行了MD5,建议在增强一点,比如:md5(账号+密码+**)

三、手机号码,与账号的设计原理一样

四、性别:why,为啥不直接是男女(字符串)?

主要还是为了少占用空间吧,在后续的文章中我们逐步来介绍通过JS字典全方位的架构设计系统。

虽然现在的硬件很便宜了,如果我是说如果,你的项目真达到很大量的时候,还是能节省不少的存储费用的(价值不菲哦、真是一个有良心的人啊,为老板着想。)

五、身份证号:why,为什么又是bigint。

认真想想,再来看看身份证号是怎么样的一种格式。18位数字或17位数字+X;这下你应该明白为什么了吧(只存数值、不理解,不要急,看后续的文章)。

六、其他以数字表示的与性别原理相同。后续文章会给出设计原理。

OK,到此,我想你已收获不少了。

PS:

建库时要选择utf8mb4字符集,支持表情符。

一些敏感数据如果需要可以使用密文存储,比如:以上的身份证号、电话号码,当然这时候你得选择合适的加密方式了。