00:00
好,刚才我们说的是一个一般的啊,一个通用的一个原则,但是这个原则也好啊,规则也好,那在实际实践当中呢,它也需要在特定的时候呢,会有所这个变通。像我们生活当中也是一样,举一个最简单的例子,我们的红绿灯啊,这个交通规则呢,它是铁律啊,那大家都应该要遵守啊,哎,红灯停,绿灯行是吧,黄灯亮了等一等,但是呢,她会不会在什么时候会有变通呢?叭如说一个老奶奶,她在走人行横道,他走的很慢啊,绿绿灯都已经变成这个,呃,红灯了,就是别的车都已经准备要通过了啊,对于别的车来说,现在是已经绿灯了,那现在这个老奶奶没过去,那别的车呢,现在出于人道主义,我们都应该在这儿等着,等老奶奶过去我们再过。对吧,那你这个时候这个大家都保持这样一个很高的素质的话,这个也不会说,因为这个就判定你违反这个交通规则,哎,像这样的情况下,是我们觉得是可以去变通的。
01:04
哎,那什么时候不能变通呢?那你交通你明明你你你自己能过去,你非要在中间等一会儿是吧,这个就就不对了啊,所以这个时候是变通的,是肯定是在特定的情况下才有有条件的去变通。那么我们三大范式呢,哎,是值得我们去设计这个表结构的表结构,但是呢,是你我们偶尔的话啊,允许在局部呢,可能会做一些个适当的一些个调整啊,在大方向上肯定都是按三大范式去创建的,但是局部来说呢,有可能会有调整,你比如说我们呃,在员工表里边儿啊,我为了能够快速的拿到部门名称,也可能在我这个项目里边,他用部门名称用的特别的频繁,所以说呢,我就直接把部名名称呢,以冗余数据的形式给它存过去了啊,数据虽然是冗余的啊,这个是重复存储的,但是这时候我查询的时候很方便,不需要再做关联查询了啊,这个偶尔也可能会这样去做,这个就看具体的情况啊。
02:03
另外一个呢,我们实际开发的时候,在项目里边设计数据库表,进行物理的建模的时候,那肯定也是要对接我们的业务功能的,主要就是要对接我们的业务功能,对接业务功能呢,其实别的都好说,你创建数据库啊,创建数库表啊,主要就是说给他们起名字就完了啊,数据库叫什么名,表叫什么名啊,这个表的名字咱们设定一个统一的一个规范,比如说呢,咱们都是以T相关线开头,加这个表现缀啊,这个没有什么太多的要说的,关键呢就是我们要设置哪些字段。根据业务功能,我们去考虑要设置哪些字段的时候呢,诶有的字段呢,是从需求文档或者原型页面上直接能看到的啊,这是看得到的这个字段,那么其实呢,也还会有一些个看不见的字段。哎,其实真正考验我们功力,考验我们开发经验的就是这个看不见的这个字段啊,那比如说我们现在后边咱们搭建完环境,马上要做管理员登录这功能,那么我们就必须得创建出来管理员这个模型,哎,建出来管理员这个表,我们这个表呢,打算让他去叫这个名字,就是叫我们的这个。
03:14
叫T。面诶叫这个面,这是表明表明这个还比较比较好整啊,那现在呢,就是说这个表里边该有哪些个字段,哎,咱们先对照一下我们这个原型来,我这截图是哪来的呢。这也给大家去介绍一下我们这个。呃,这个也给大家去介绍一下,我们这个文档的一个这个结构哈,在这个里边呢,大家看这有一个前端页面,这个里边这儿打开啊就是。我们整个这个项目呢,可以使用的前端页面呢,这在这都已经做好了,找到。哎,这里边儿这个打开以后啊,这是一个首页,这是普通用户登录的地方,这是会员注册的地方啊,普通用户注册的地方,这个是我们的管理员的一个入口啊,这个图呢,就是从这边儿来截的这个图。
04:08
那么我们现在呢?你登录的话呢,肯定是需要账号密码。哎,我们后边维护这个数据的时候呢,就需要用到这个名称和这个,呃,Email地址,诶这些都属于我们看电子的账号密码名称,密码地址名称,还有一个地方会用到,就是我们登录进去以后。登录进去以后,在这儿大家看啊,在我们这个右上角这个地方。会有一个欢迎的信息,你登录进来以后,在这去显示这个欢迎信息啊,相当于是显示用户的一个昵称啊,其实应该叫昵称。呃,这个昵称呢,就不是显示账号,显示账号有点不太安全啊,他再把你密码出来,它这个就就泄密了啊,这个不太好,所以说呢,我们在这要。
05:01
显示这个昵称,哎,它不会就相对来说会更安全一点,哎,这是这个地方啊,所以说我们看得见的就是账号密码名称,呃,邮箱地址这样几个字段,那么看不见的呢,就是我们的主。哎,这个肯定是,虽然说页面上没显示,但是我们是需要把主件给它建出来的,哎,然后呢,这个创建的时间我们要去给它考虑一下,也记录一下啊,让我们能够知道这个账号呢,是什么时候创建的啊,有了这些的分析的话,我们就大致上知道我们这个表里边该有哪些字段,然后呢,有了这些字段以后。有的时候我们可能会设置冗余字段,啥叫冗余字段呢?就是本来吧,就目前看呢,并不是我们业务功能里边需要的字段,但是就怕呢,咱们现在考虑的不周到,万一有些啥什么功能呢,需要用到这个表里边儿再多一些字段,我们没想到,那后期呢,如果里边已经有很多大量的数据了,我们再增加这个字段,改这个表结构,那牵一发而动全身,对整个这个项目会有非常大的这个影响。
06:10
啊,那这个事儿我们说也是要尽可能去避免的啊,那但是我现在想不到怎么办呢?哎,多建几个冗余的字段啊,这个东西谁也说不好,比如说咱们建上三个五个啊,七个八个的,哎万一呢,就将来有一些个特殊的需求,这个表里边我们,哎或者说功能升级或者什么原因,我们需要去调整增加一些字段,那么这些冗余字段直接一用啊,哎,你在这个公司的文档里面记录一下,哪个冗余字段是一个对应哪个新增功能的这个什么字段,哎。我们大家都知道的,这个时候就拿这冗余字段就就来用了,哎,这个时候呢,这个冗余字段呢,呃,你刚开始建的时候,你也不知道该起个什么名字好,所以说呢,像这样的字段呢,也可能我们只能是叫什么。呃,大家看啊,是要的这边这个这里边打字不是不是很方便啊。
07:05
就是比如说哎,起一个通用一点的名字吧,标个1234啊,呃,FIELD1FIELD2啊,FIELD3啊,这个这种字段咱们也提前也预料不到它将来会起什么作用,所以说这个只能是用这样一种看上去不太好的方式来命名了啊,这个时候是我们如果考虑以备不时之需,那么咱们就把这个给建上,如果说你把握比较大,或者说将来你要是万一出问题以后会有别的办法,那么也可以不设置这个种力字段啊,这个是看我们团队的一个风格。还有那实际开发的时候呢,我们怎么去对接呢?哎,除了公共模块哈,就是各个模块需要的公共的表,项目启动的时候呢,就是有项目经理啊,或者说老员工啊,他们给创建好了,其他的呢,各个模块谁负责开发就谁去建表,建好了表以后呢,把这个搜Q语句呢,发给这个运维的工程师,哎,他到生产就是开发环境,测试环境,生产环境啊,那些个环境下边去把这表呢给建出来,因为我们开发工程师呢,通常不会直接有这些服务器的这个操作的权限啊,所以这些呢,是大家去了解一下,我们有了前面这些个说明呢。
08:18
下边大家看我们建库建表的语句都准备好了啊,创建数据库这个后边呢,指定一下这个诶数据库的字符集,然后呢,使用我们刚才创建好的数据库啊,如果说有这个表就删掉drop table if exists,如果有,有就删掉,创建一个新的表,诶这就是我们要建的T友的面这个表啊,这是主件,不用说了,这是我们这个登录的账号,哎,这是登录的密码,这个是我们的这个昵称啊,这是邮件地址,这是创建的时间啊,这是我们这个主件啊,这在这儿设置以ID为主键,哎,这就是我们要呃做物理建模呢,我们所需要去创建的这个SQL语句啊,所以说下边呢,咱们就执行这个SQL语句就好了。
09:07
很C,哎过来呢,我这边我们买这个的客户端,我已经打开了啊。然后呢,过来。CTRLC。站过来。字稍微小一点,哎,然后呢。让他这对齐,虽然说对齐也没有什么用。然后下面呢,咱们行这些个就好。哎,或者说其实不选也行,我们点这个哈。一行受到影响啊,过来在这儿刷新一下F,刷新一下,找一下我们新建的这个国行project。过来以后呢,这提额的面。哎,过来这些个字段都有了哈,所以说这个我们这个表就讲了,哎,我们完成了物理建模。
我来说两句