00:00
嗯,好,各位同学,那咱现在呢,就来看一下我们的第一种这个键盘方法论,就是在这我们提到的这个所谓的ER模型对吧?好,那现在我们来看一下ER模型下面这段话,看看他是怎么去介绍它的啊来一起把这句话读一下,他说数据仓库支付比尔伊盟提出的建盟方法是从全企业的高度,然后呢,用实体关系模型来描述企业业务,并用规范化的方式表示出来啊然后呢,在范式理论上应当符合3NF啊,是这样的啊OK,那这段话虽然字儿不多,一共就两行对吧?呃,两行多一点对吧?那完之后呢,但是里边的说实话信息量还是比较大的,对吧?大家读完这段话之后是不是感觉不太理解呀,对吧?之所以不理解,说实话是因为这段话当中就是有比较多的大家不太熟的概念,呃,比如说哪个概念咱们不熟呢?比如说首先实体关系模型,可能大家现在还不太清楚到底啥叫实体关系模型啊,对吧?哎,不知道,那接下来往下一个这。
01:00
还有一个所谓的用规范化的方式表达出来啊,对吧?这个规范化是什么可能大家也不太清楚,像这个规范化,这说全了之后应该是数据库规范化啊好,那这个是啥东西,那大家可能也不太清楚,那后边呢,我们又提到了一个什么算式理论,对吧?然后还符合什么3F,那这些东西是不是可能就更不清楚了,对吧?呃,那所以在这儿呢?呃,我们需要先去干啥,先去给大家扫一个盲啊,然后给大家呢,把这些,呃,就是一些这种大家不太熟悉的概念先给他简单的解释一下,解释完之后我们再回过头来看这段话,大家应该就能够看懂了,OK啊好,那现在咱们就把这些大家不太懂的概念逐个的去看一下,首先我们先看第一个就是实体关系模型一模型对吧?这个到底是啥东西?来我们往下走,这儿有一小段,我们把它读一下啊,他说实体关系模型它的核心的思想是什么呢?是将复杂的数据抽象为两个概念啊,哪两个概念呢?分别是实体和关系,当然这的话可能听起来也像。
02:00
废话,对吧?实体关系模型把这个数据抽抽进了实体和关系,对吧?那到底什么叫做实体,什么叫做关系呢?咱接着往后看啊,他说实体通常表示的是一个对象啊,那这个对象呢?呃,你可以对应到我们生活当中的一个真实的对象,你也可以把它对应到一个我们在业务当中抽象出来的一个对象,比如说生活当中一个对象我们可能会有什么呢?可能有人对不对,那可能有这个,呃,比如说班级对吧?那可能有呃,课程等等的,这都是我们实际生活当中存在的一个一个的对象,好,那谁还可能作为一个对象呢?比如举例子,那我们在一个电商系统当中,我们会有什么样的概念呢?我们会有,比如说订单,我们会有优惠券,我们有活动,那这些东西都可以把它理解为一个一个的对象啊,是这样的啊,好了,那完之后我们再继续往下看,这儿给我们举出来的一个生物例子啊,例如什么呢?例如什么学生班级,这都是一个一个的对象,好,那下来我们再继续往下看。下边这个指的是什么呢?哎,他说的是关系,对吧?关系又是什么?关系是指两个实体之间的关系,OK,那比如说刚才我们举了一个例子,是不是学生和班级啊,对吧?那这两个实体之间有没有关系呢?有没有关系呢?实际上是有关系的,比如说谁呢?比如说学生和班级之间,他是有一个从属关系的,对吧?就是一个学生肯定是属于一个班级的,然后呢,一个班级下边是不是可能会有多个学生啊,对吧?诶,他是有这样的一个从属关系的,那这就是所谓的实体和呃这个关系的一个基本的理解,但是呢,我们其实只列到这个层面呢,这个完全不够啊,这个呃实体关系模型完全就是肯定不是这么简单的啊,肯定不是这么简单的啊,是这样的啊,那所以说实体关系模型,那咱们要想深入的去了解,那其实我们在这儿呢,必须得结合具体的例子去学习啊,是这样的啊好,那所以在这呢,来我就举一个具体的例子,我们来看一看这个所谓的实体关系模型到底如何去使用,我们怎样用它。
03:57
去指导我们这个数据库的建玩没问题吧,OK,那接下来咱们就来举一个具体的例子,比如说我现在呢,需要去设计一个学生管理系统,学生管理系统OK啊,那学生管理系统,那咱们里边主要应该存储哪些信息呢?大家想想存哪信息啊,学生学是不是存储什么学生的信息,班级的信息,什么课程的信息,是无非就是这些东西啊对吧?哎,OK,那问一下大家,你说这些东西啊,咱们要存的话,给它存在什么里面,存在什么里边了,存在什么里边,你要存的话,你会把这些信息存在什么上面,你得存在数据库里边吧,对不对,是不是,通常我们在那选就选择关系型数据库,那就完事了,对吧?那所以说实际上咱们这个诶建模建模,我最终在这儿,我建的是哪儿的模型呢?是关系型数据库里边的模型,没问题吧,也就是关系数据库里咱们的模型最终落地就是啥东西,是不是就是一堆一堆的表啊,对吧?OK,那也就是说那我们需要利用这个所谓的实体关系模型去指导我。
04:57
我们如何在关型数据库里边去设计表啊,咱把这个点搞清楚才可以好,那接下来咱们就来讲一讲这个到底如何去一步一步的指导咱们如何在关系数据库里边设计表来,那咱们现在就开始啊,那我们假如说我现在这个呃模这个这个这个就是学生管理系统,咱们的功能比较简单,我目前呢,只管理学生和班级的信息,对不对?那这时候你需要在我们的关型数据库里边建什么样的表呢?这个咱们得一步一步来,那首先我们需要先诶,从咱们刚刚描述的这个业务当中抽取出我们的所有的实体,那好比说我这里边有什么实体啊,有学生,那还有啥呀,还有。
05:36
班级吧,对不对?学生是不是一个实体,班级是不是也作为一个实体啊,对吧?好,那学生跟班级之间,他俩有没有这个所谓的关系呢?有没有关系,有关系对吧?有啥关系,刚才说了是一个所谓的从属关系,对吧?但是从属关系其实这就是说白就是大白话对吧?这个东西哎,咱们不能这么说,实际上在关实体关系模式当中,我们这个关系是有明确的分类的,它会分为哪几类呢?会分为一对一,哎,还有一对一对一啊,一对一,还有一对多,还有是不是多对多呀,对吧,它是有这样的几种关系,那对于我们这个用户,这个学生和班级这两个实体而言,那咱的关系应该是哪种,应该是一对多的关系吧,对不对,啥叫一对多呢?是不是我这边一个班级下边会对应多个学生啊,对吧?那我一个学生是不是只属于一个班级啊,对吧?那他俩是不是就是所谓的一对多的关系啊,对吧?OK,好,那现在我们这个实体关系模型基本上就算明确下来了,对吧?我有什么样的实体,有什么样的关系已经OK。
06:36
对了,好,那OK,之后呢,我们继续往下进行,那咱接下来需要做什么工作呢?接下需要做什么工作呀,接下来我们是不是得把这个所谓的实体关系模型得干啥,是不是得翻译到我们这个关系型数据库里边个表上才行啊,对吧,对不对,你得参考这个模型,是不是最终把关系数据库里边那个表给设计出来啊,对吧?好,那这个表我们如何设计呢?那通常我一个实体就会对应关系型数据库当中的一张表,对吧?那我这儿是不是有一个学生实体,有一个还有一个什么实体啊,还有一个这个所谓的这个班级实体,对吧?所以在这儿呢,我至少就会有几张表呢,就会有这样的两张表,一个学生一个班级啊这样的啊好,那学生当中咱们存储的应该是什么样的信息呢?是不是应该是一个一个的学生信息,那班级表呢,是不是有一个一个的班级信息啊,对吧?好,那这两张表之间,他是不是刚才说了这两个实体之间是有什么呀,是有关联关系的对吧?是一对多的关系对吧?那这个一对多的关系我在这个表上面。
07:36
如何体现出来呢?对吧,你你得把关系得体现出来,你不能说光有实体对吧,那两个关系怎么体现出来。怎么在这个表上面把这两个表把两个实体之间的关系体现出来。对,其实你加个外键是不是就完事了,对不对,通常是在哪加外键呢?我们是在多的那一侧加上一,那一侧的外界什么意思?多哪哪边是多,学生这边是多,对吧?我应该在学生表当中加上一个班级ID,对不对?那这样一来是不是就知道诶哪个学生属于哪个班级了,你也知道哪个班级下边有哪些学生了,对吧?哎,是样,那这样一来,那咱们这个一对多的关系就能够阐明出来了,哎,是这样的,那这实际上呢,就是我们使用ER模型去指导关系型数据库进行建的一个具体的实例啊,那其实呢,我们在关系型数据库里边建出来的这个最终的模型,它其实也有名字,我们称之为什么模型呢?
08:32
称之为。关系模型啊,注意啊,这里边俩概念,一个叫做实体关系模型,一个叫做关系模型,对吧?啊,这俩概念一定要区分一下,这个什么叫做实体关系模型呢?实际上实体关系模型它是一个就是相当于抽象,抽象层次比较高的一个建模指导思想,它是不关注这个底层的数据库的实现的,就什么意思啊,实际上呢,就是我们的数据库类型大家知道的可能比较少,但是不是只听说过关系型数据库啊,对吧?那实际上在关系型数据库出来之前,有很多其他类型的数据库啊,是这样的,还有什么类型的呢?比如说有网络数据库,有层次数据库,还有什么文档数据库等等等等啊,是这样的啊,那这些其实都是不同的数据库的实现啊,那我们的这个实体关系模型实际上是不关注这些底层的数据库实现了,对吧,你哪种数据库我都可以用实体关系模型进行建模啊,OK啊,那当然呢,我把实体关系模型设计出来之后,对吧,我在关系型。
09:34
数据库里边进行具体的落实对不对,那我得到的这个模型,我们就称之为什么模型呢?那就是关系模型,哎,所以说你可以这样理解,所谓的关系模型呢,就是实体关系模型在关系型数据库当中的一个具体实现,哎,咱们可以这样去理解一下啊好了,同学,那截止到现在呢,诶,实体关系模型还有诶顺带着又把一个关系模型这个概念也提出来了,这俩模型咱们基本上应该就有了一个初步的认识了啊这样的啊,因为我们通常在进行关型数据库的设计的时候,我们通常都是怎么去做呢?就像刚才咱们那样,就是说我先根据业务逻辑对吧,抽象出什么东西实体和关系啊,当然当然,通常呢,这时候我们需要去画一个图,这个图我们称之为什么图呢?就是ER图啊,就是ER图E啊,指的就是实体关系呢,指的就是那个relation对吧?是这样的啊好,那完之后我把这个图画完,画完之后再把这个所谓的实实体关系模型图对吧?再翻译成我们关系型数据库当中的一张一张的表,对吧,一。
10:34
个实体通常对应一个表,那这个关系呢,是不是按照我们刚才是不是可以加外键去进行解决啊,对吧?但是有些情况下这个关系你加一个外键是不够用的,那什么时候加外建不够用,我再举个例子,比如说我们现在这个,呃,学生管理系统,我的功能又要进行这个丰富,对吧?那假如说我现在需要再增加一个学生选课的一个管理,对吧?学生选课,学生选课,那这里边咱是不是要有新的这个实体了,对吧?那刚才学生实体已经有了,你要是想把这个选课也给他搞定,那你说这里边还得有一个什么样的,呃,这个实体啊,是不是还得有一个课程的实体啊,对吧?那没问题吧,好,那学生跟课程之间有没有关系,也有关系,那他连的是属于哪种关系,一对多还是多对一,还是还是还是多对多,应该是多对多吧,为什么是多对多,你想啊,一个学生是不是能选多门课程对吧?一门课程是不是应该是能够被多个学生去选的呀,对吧?这个当然是多对多的关系好,那多对多的关系最终在咱那个。
11:34
关系模型里边应该如何体现,这个怎么体现?首先实体,那得有一个用户学生实体得有一个课程实体,对吧?那关系咱们这怎么体现关系加外建,这个还行不行,还能不能加外建,能不能加外建,能不能试一试对吧?OK,假如说我现在呢,哎要加外建,假如这就是学生这一边的课程啊,Student跟course OK,好,那完之后我们在学生这边,比如说加外建啊,你这个怎么加?
12:02
一个学生是不是可能选多门课对吧?多门课是不是正常会对应多个外建呀,对不对?OK,那我这是不是就得有多个外键才行,那我加几个比较合适呢?我不同的学生他选这个课程的个数是不是可能不一样,对吧?他可能选三门课,他可能选四门课,对吧?那我这加几个外径合适呢?是不是就不太好确定了,对吧?那有同说你就按照最多的来呗,行,按照最多的来行,但是你要是按照最多的来的话,是不是很有可能有些人他里边有大量的ID都是空的呀,对吧?是及的,你会存储大量空值,这个其实就不太合适了,好,那这个首先是不行的,那我在课程这边加这个外键不行吗?行不行?也不行,因为你一个课程是不是也是由多门学多个学生去选呀,对吧,但是有几个学生选我是不是也不清楚对吧?所以你这儿加学生外建也不合适,那怎样存储这个学生跟课程的关系才是比较合适的呢?哎,这时候对我们引入一个中间表,中间这个表呢,就是专门用来存储学生和课程之间的关系呢?哎,那大家想一想,你说这个中间表咱们里边应该有什么样的字段呀,你琢磨琢磨,其实就是俩核心字段就够了,哪两个呢?一个是学生ID,一个是课程的ID,只要有一个学生选了一门课,我就在关系表里边是不是插入一行数据就完事了,对吧?诶,是这样的,OK,好,那这实际上就是我们这个在关系模型当中,这个多对多关系的一个处理的方式啊,OK啊好了,那我现在现在又给大家举了一个具体的例子啊,现在大家应该对实体关系模型对吧,如何指导我们在数据库里边建表有了一个比较深刻的体会了,对吧,就是通常你需要先抽象出实体和关系,你需要用。
13:41
点关系图对吧,一点图对吧,去描述这个实体与呃,这个其他实体的一个关系对吧?这个关系可能会比较复杂,好那描述完之后呢,我们再把它是翻译成关系型数据库里边的一张一张的表啊,对吧?那其实这里边翻译的过程当中,我们主要要解决的其实就是不同实体之间的一个关系,对吧,一对多怎么处理,多对多咱们怎么处理,这个应该得能够搞清楚好了,那这实际上就是哎,用实体关系模型指导咱们去建,诶关系型数据库里边表的一个大体的思路,好了,那实体关系模型我们现在已经有了一个初步的认识了啊好,那有了这个初步的认识后,咱们继续往下看,那第二一个概念是什么呢?大家来看。
14:19
第二个概念是什么?是不是用所谓的规范化的方式表示出来,对吧?这个所谓的规范化到底怎么理解呢?往下看,刚才说了规范化其实说的不全,说全了应该是数据库规范化,对吧?诶,那这个数据库规范化我们又应当如何去理解呢?来往下看,他这儿有一段话,咱们看能不能读懂啊,他说了数据库规范化是使用一系列范式去设计数据库的过程,诶这里边呢,实际上提到了一个概念,叫做什么一系列的范式,对吧?哎,这个范式到底是什么意思呢?这个怎么去理解?那实际上这个词可能听起来是不是感觉有点别扭啊,对吧?呃,但其实这个确实听起来确实一样,但是这个不怪大家,这个其实怪谁呢?怪之前翻译这个词的这个人,他翻译的其实说实话不是特别的好,OK,那实际上这个范式你要是从英文的那个呃,字面呃去理解,那可能就好理解了,OK,那它所对应的英文是什么呢?是normal phone。
15:19
Normal normal是什么意思?就是普通的通用的意思对不对?那form呢,是不是形式或者格式的意思啊,对吧?是这样的,那也就是所谓的范式,指的就是一些通用的形式啊,所谓的规范化呢,就是使用一系列通用的形式或通用的方式去设计数据库的这个过程,诶,这就是所谓的范式啊,就这么去理解,好,那咱们这个范式,那到底有哪些范式呢?我们往下看啊,这已经说了,他说这一系列范式就是在设计数据库的时候,我们需要遵循的不同的规范,对吧?这个规范其实刚刚我所提到的一些什么通用的模式,通用的方式是这样的啊,OK,那这个所谓的规范它不只有一个,它是一什么?一系列,对不对?是一系列,这一系列都有谁呢?我们往后看啊,他说我们在设计数据库的时候呢,那咱们这个所谓的规范一共有六种,分别是第一范式,第二范式,第三范式,巴斯科德范式,这就是个音译啊,然后第四范式,还有第五范式,一共有这样的六个范式啊,是这样的啊,那第一范呢。
16:19
叫做enf,这个NF大家现在应该知道啥意思了吧,NF是不是就是那个normal form的首字母啊,对吧?Enf就是the first normal form就是第一范式,那第二范式就是the second normal form,第二范式是这样的,诶,也就是说我在数据库的时候呢,是有这样的一系列的规范的,那所谓的这个数据库规范化,就是我们在设据库的是数据库的时候呢,我们按照这一系列的规范去进行设计,这就是规范化,OK,好,那这些规范,那它的目的是什么呢?对吧?我去遵循这些规范的时候,我能实现什么样的效果呢?来咱们看一眼,他说了这些所谓的这个范式,它的最终目的就是减少数据冗余,增强数据的一致性。
17:04
诶,那这里边提到一个概念,就是减少数据冗余,对吧?诶,这个数据冗余大家是怎么理解的?什么叫做数据冗余,为什么我们要去减少数据冗余啊,啊,这是为什么呀?哎,那现在给大家简单的解释一下啊,所谓的数据的冗余,什么叫冗余?比如说我这儿呢,有一个关系型数据库,那在数据库里边呢,假如说我正常数据库里边是不是会有很多的表啊,对吧?OK,那假如说在数据库里边,甭管是在一张表里边,还是在多张表里边,如果有一条信息它被重复的存储了多遍,它可能在同一张表里,也可能在不同的表里啊OK,好,那这就叫什么呀,这就叫数据的冗余,就是你一条相同的信息重复的存储了多遍,这不就是冗余了嘛,对吧?这就是冗余,这就数据冗余,好,那完之,我们为什么要去减少数据冗余?你既然要减少数据冗余,那就说明什么是数据冗余,肯定会带来一定的问题啊,对吧?那数据冗余会带来什么样的问题,大家琢磨琢,你说在一个关系数据库里边,对吧?我的数据冗余的会有什么样的问题,哎,首先第一个就是存储对吧?哎,那你在同一个数据库里边,你去存储很多相同的数据,那是不是肯定会浪费存储空间呀,这个,哎,这个是大家最容易想到的啊,是这样的啊好,那完了之后还有什么问题呢?还有什么问题,还有什么问题呢?那实际上还有一个就是我们后边提到的这个数据的一致性问题啊,就是一致性问题,那什么叫做一致性问题,什么叫一致性问题?什么叫一致性问题?其实很简单啊,就是同一条信息对吧?那我有不同的这个存储的内容,那OK,那这就是所谓的什么呀,一致性问题,比如说在一个数据库里边,对吧,那我有多个地方我都存储了某一个用户的用。
18:55
户信息对不对,结果呢,在这条这个数据上边,那他的手机号是135的,在另一个这个地方呢,他的手机号是136的,对不对,那是不是就是同一个人他有不同的这个信息啊,对吧,那这就叫做数据的不一致对吧?OK,好,那这个也就是说我们这个数据的冗余会带来这个数据的一致性问题,OK,为什么数据冗余了就会带来这种所谓的一致性问题呢?为什么呀?
19:23
啊,这个道理很简单,假如你想一想啊,数据冗余了,冗余了之后是不是就是同样的信息我会存储多份啊,对吧?在多个地方是不是都有存储对吧?那你想一想,假如将来我需要对这条信息进行修改,对吧?那你要改的话,你正常怎样才能保证这个数据是一致的,你必须得保证所有地方这个信息是都改了,而且都改成功了,这个数据才是一致的,对吧?但是我由于数据分散在多个位置,我改的时候可能某个忘改了,或者说某一个改的时候没成功,对吧?那这样一来是不是就可能会出现咱们提到的数据的一致性问题啊,对不对,也就是数据冗余就会带来这种数据不一致的风险啊,就会带来数据不一致的风险,OK,好,那这实际上就是咱们刚刚所提到的这个数据冗余的啊这个问题啊,OK,那数据我给咱们总结一下,一共俩问题,一个问题呢,就是数据的存储对不对,OK,那再有一个呢,就是数据的一致性问题,OK啊好,那实际上说实话这个存储对于我们现在而言。
20:23
不叫一个问题了,对不对,那什么时候这个存储它才是比较重要的一个问题,什么时候就是在数据库,就是关系数据库刚开始诞生的那个年代,这个数据的存存储实际上是比较成问题的,诶怎么去理解呢?首先第一点就是呃数关系数据库火起来是在基本是上个世纪90年代那个时候火起来的啊OK,好,那那个时候呢,咱们的存储还不像现在这样,代价这么低,那咱们现在存储对吧,你这个磁盘其实很便宜对不对,所以说无所谓,但是在那个时候呢,这个存储代价相当的高,还有一个主要的因素是什么呢?就是当时这个数据库啊,它没有这个分布式的概念,完全没有分布式的概念,那个时候咱们因为没有那么大的数据量嘛,对吧,那所以说所有的数据库它都是所谓的单机的对吧,那你单机的情况下,我的扩展能力是不是有限啊,对吧?诶我我不能说,诶我加磁盘我不能说一直的加,对吧,你是有限的对不对,你等等啊,也就是你的扩展能力有限,所以说在这种情况下,那这个存储就显得比较重要了,哎,但是在现在而言呢,这个存储其实已经。
21:23
然哎,这个不是问题了,对吧?那现在呢,我们这个数据冗余带来的主要的问题,那其实就是数据的一致性问题,数据的一致性问题在关系型数据库里边,我们应当是不是尽量的去避免啊,对吧,你不能说让他出现不一致的情况,对吧?你应该尽量的增强这个数据的一致性,好,那怎样能够增强这个数据的一致性,其实很简单,你就减少冗约,那数据的一致性是不是自然而然就能得到保证,对不对?啥意思?你比如举例子啊,我现在呢,刚才我是同一条信息会存在多个地方,对吧,我现在我不让他这么存了,我相同的信息,我在数据库里边,我保证我只存一份,对不对,那其他地方,其他的表里边是不是可能会用到我这个信息啊,对吧,我让他去干啥就行了,我让他去是不是通过一个外键,比如说我去引用它能理解吗?OK,那这样一来是不是就能够极大的避免这个数据的一致性问题,怎么去避免呢?OK,我把这个数据假如我现在要改,我是不是只需要改一个地方,其他的这位置是不是相当于就跟着改了呀,对吧?诶,那这样一来就能增强数据的一致性,OK,好了,那这实际上呢,就是咱们。
22:23
这个所谓的数据库规范化,或者说是这一系列范式的一个主要的目标就是减少数据冗余啊,这就是范式的一个目标,好了,那接下来呢,我们继续往下看啊。那这六个范式,我们简单的了解一下,一共有这样的六个,对吧?那这六个范式我们再去遵守他们的时候呢,实际上是不能随便遵守的,我们必须得按照要求,你得怎么办呢?你得逐个的去遵守,对吧?他前后是有相互的依赖关系的,你必须得满足第一范式之后,才有条件去讨论第三范式,第二范式,那第二范式满足之后,才有条件去讨论第三范式,哎,咱们通常是这样的啊,而且呢,这里边有一个规律,就是说我们遵循的范式的级别越高,那这个数据的冗余就会越低啊,是这样的啊,哎,那根据他的这个说法,那你说我们再去遵循这个范式的时候,我是不是应该都得遵循到是不是最高级别呀,对吧,是不是我这个范式级别越高,我这个数据冗余就越低啊,对吧,那我是不是应该尽量的去减少数据冗余,按照这个说法,我是不是都应该遵循到第五范式呢?是这样的吗?哎,真正我们实际操作的时候,你会发现啊,就是我们在设计关型数据库里边的表的时候呢,我们并不是这样去做,我们不会真正的遵循到第五范式,这时候。
23:36
为什么呢?啊,在这儿呢,需要给大家去说明一下这个情况,实际上呢,我们一会儿我会给大家去演示一下我们这几个范式啊,一会儿会演示一下,在我们将来演示的过程当中,你会发现啊,我们在遵循这一个一个的范式的这个过程当中,确实我们的数据的冗余会降低,但是还会带来另一个负面的问题,什么问题呢?就是说我们的表会被拆的比较碎,啥意思呢?比如说我现在想遵循第二范式,你可能就需要把原来的一张表给它拆成两张表,呃,对不对?OK,那你现在想遵循第三范式,你可能需要把两张表再进一步的拆分,你会得到更多的表,也就是说我遵循的范式的级别越高,那我的表就会被拆的越碎越散啊,那表被拆散了之后,它有什么坏处啊?
24:22
带来一个坏处,就是首先模型是不是会变得复杂,对吧,我表非常的多,你你表越多,你说看起来越乱呀,对吧?诶这是一个,当然还有另外一个主要的问题,那是啥问题啊,你表被拆开了,将来你要想查询你得干啥得重对吧?那重要的事儿大家都是这查性能是相对要低一些啊对吧,是这样的,也就是说我们遵循的范式级别越高,确实它的数据冗余会越低,但是它,呃,随之而来的一个负面问题就是啥,就是我们将来模型会越来越复杂,查询性能会越来越差啊,那所以在这儿呢,我们通常情况下呢,不会遵循到最高级别,而是选一个,诶,我们的冗余也可以接受的级别,那我的查询性能也可以接受的一个级别,那通常就是第几第几级别呢?第三一个级别就是第三范式,那对吧,咱们常说就是什么三范式,三范式对吧?那实际上指的就是啥呢?就是第一范式,第二范式和第三范式,诶这个大家需要稍微的理解一下啊,那其实那就是在我们现在来看啊,就是很多的这种,就是业务系统再去设计关系型数据。
25:23
库的时候呢,他们其实也不一定非得严格的遵守到第三范式,有的可能就只到第二范式,哎这是为什么,大家想一想,其实还是因为什么呀,还是因为性能吧,对不对?你说范式级别越低,那我这个表是不是相对来说就拆的不是那么的散呀,对吧?啊也就是说我里边会有一部分的数据冗余,但是诶我这样一来能换来什么,什么情况呢?是不是我查询性能的一个提升啊,啊是这样的吧,就是说你要拆成第三,呃要呃到第三方式的话,你的表是不是还会再继续这个进行拆分呀,对吧,你拆分的越多,你查询性能越差,对吧?所以说现在呢,很多这个关系型数据库,它的一个应用的设计呢,呃,就是只遵循到第二范式啊,这一点咱们稍微的理解一下就行了,OK啊好了,那这就是我们刚刚诶对这个数据库规范化这个概念的一个基本说明,那现在大家应该已经对这个规范化有了一个呃基本的认识了啊,说白了就是使用我们刚刚提到的这一系列的范式去规范这个数据库的一个设计啊,对吧。
26:23
OK,那咱们规范它的一个目的是什么呢?就是为了减少数据库的一个冗余,对不对,然后呢,增强数据的一致性啊,就这个意思啊,是这样的啊,行了各位同学,那截止到现在呢,数据库的规范化,那咱们这个概念基本上就了解了,那当然数据库规范化,大家想想,你说它里边的核心内容应该是啥呀,是不是就是这几个范式啊,对吧?那所以大接下来呢,诶,我会给大家把常用的这三个范式逐个的介绍一下来,我们就重点了解123这三个范式就行了,来,我把视频停一下啊。
我来说两句