[图解]建模相关的基础知识-15

1
00:00:01,030 --> 00:00:05,820
接下来,我们就开始讲解的知识点

2
00:00:05,830 --> 00:00:11,810
就是范式知识点

3
00:00:12,130 --> 00:00:17,490
关系这个理论里面,随着历史的发展

4
00:00:17,700 --> 00:00:21,280
它发展出很多的范式

5
00:00:23,110 --> 00:00:24,590
那么这些范式的作用

6
00:00:27,020 --> 00:00:31,260
按照科德的说法就是说

7
00:00:33,100 --> 00:00:37,280
只要数据是按照范式组织起来的

8
00:00:39,330 --> 00:00:42,130
那么所有的数据

9
00:00:42,140 --> 00:00:46,030
都可以通过基本运算来获取

10
00:00:48,560 --> 00:00:52,880
就是说合法的数据的组织

11
00:00:54,860 --> 00:00:58,890
就是平时我们看到的那些什么报表之类的

12
00:00:58,900 --> 00:01:02,300
只要你报表上这个信息是合法的

13
00:01:02,430 --> 00:01:04,100
当然报表信息可能很多个

14
00:01:04,110 --> 00:01:05,380
它可能来自很多表

15
00:01:05,590 --> 00:01:09,250
但是它们放在一起是合法的

16
00:01:10,190 --> 00:01:12,350
这种组合,都可以通过基本

17
00:01:12,360 --> 00:01:14,610
的运算来获取

18
00:01:17,810 --> 00:01:18,920
实际上这些范式

19
00:01:18,930 --> 00:01:22,340
也是我们后面的

20
00:01:22,350 --> 00:01:28,560
面向对象建模的一些什么基本原则等等

21
00:01:30,030 --> 00:01:31,550
它的理论基础了

22
00:01:32,230 --> 00:01:36,190
我们软件方法里面也列了一些

23
00:01:36,560 --> 00:01:39,670
什么的什么,不能什么的什么的什么

24
00:01:40,300 --> 00:01:43,090
实际上就是一个什么传递的依赖

25
00:01:43,570 --> 00:01:46,650
什么的什么

26
00:01:46,660 --> 00:01:48,540
还有一对多、多对多

27
00:01:48,550 --> 00:01:50,970
不能有多个,什么之类的

28
00:01:52,930 --> 00:01:53,710
类似这样的

29
00:01:57,480 --> 00:02:03,700
所以了解了这些范式

30
00:02:04,380 --> 00:02:07,780
我们才可以知道为什么后面要这样来做

31
00:02:10,270 --> 00:02:11,790
因为你不这样做

32
00:02:12,350 --> 00:02:14,700
那么很可能你的数据本身

33
00:02:14,710 --> 00:02:18,010
它就是违反范式的,违反范式

34
00:02:18,020 --> 00:02:21,290
就会带来一些不好的后果

35
00:02:21,500 --> 00:02:23,010
比如说,数据冗余

36
00:02:23,970 --> 00:02:26,170
比如说,修改的异常

37
00:02:26,680 --> 00:02:30,090
删除的异常,等等

38
00:02:30,180 --> 00:02:31,810
插入的异常等等

39
00:02:33,750 --> 00:02:36,410
所以了解这些范式

40
00:02:37,380 --> 00:02:39,450
的基本要点是有必要的

41
00:02:40,680 --> 00:02:42,550
但现在有一些人说

42
00:02:42,840 --> 00:02:44,390
我们现在要注重性能

43
00:02:44,600 --> 00:02:46,110
说现在流行什么

44
00:02:46,910 --> 00:02:47,990
非关系数据库

45
00:02:48,160 --> 00:02:49,590
所谓NoSQL

46
00:02:51,130 --> 00:02:53,040
NoSQL,非关系数据库,干嘛的

47
00:02:53,970 --> 00:02:55,930
通过添加冗余

48
00:02:57,030 --> 00:02:58,080
来改善性能

49
00:03:00,630 --> 00:03:02,280
像我们刚才说符合范式

50
00:03:02,290 --> 00:03:05,990
你所有的各种各样的报表的组合

51
00:03:06,000 --> 00:03:07,340
都可以通过运算获取

52
00:03:07,350 --> 00:03:09,810
那你还得算

53
00:03:10,730 --> 00:03:13,000
假设他

54
00:03:14,250 --> 00:03:15,610
到处都放很多冗余

55
00:03:15,950 --> 00:03:17,300
那就不用算了

56
00:03:19,620 --> 00:03:20,730
所以性能就快

57
00:03:21,680 --> 00:03:23,870
但显然这种会带来什么

58
00:03:24,040 --> 00:03:26,910
逻辑上就会出现什么

59
00:03:27,820 --> 00:03:30,400
带来逻辑上的各种压力

60
00:03:32,200 --> 00:03:33,600
所以

61
00:03:33,930 --> 00:03:37,310
即使有性能上的这种问题

62
00:03:37,320 --> 00:03:39,340
需要被迫

63
00:03:39,350 --> 00:03:41,460
要违反范式添加冗余

64
00:03:41,470 --> 00:03:44,790
你也先得懂得有哪些范式

65
00:03:45,430 --> 00:03:46,540
先懂得规范

66
00:03:46,850 --> 00:03:50,150
然后才有资格谈不规范应该怎么做

67
00:03:50,610 --> 00:03:52,250
什么情况下可以不规范

68
00:03:52,260 --> 00:03:53,770
连规范是什么都不知道

69
00:03:54,680 --> 00:03:58,340
然后就说,反正规范是可以违反的

70
00:03:58,350 --> 00:04:01,020
所以我就不用学了

71
00:04:01,240 --> 00:04:02,280
很多人就是这样的

72
00:04:03,210 --> 00:04:06,150
因为规范不是不可以违反

73
00:04:06,510 --> 00:04:07,950
所以规范就没用

74
00:04:09,430 --> 00:04:10,070
不是这样的

75
00:04:10,640 --> 00:04:13,450
他就把一个特例当成了什么

76
00:04:14,790 --> 00:04:17,380
当成了一个常例了

1
00:00:00,780 --> 00:00:03,140
那么这种也是经常我们很多人

2
00:00:03,550 --> 00:00:05,050
偷懒的一个遮羞布

3
00:00:05,060 --> 00:00:09,440
他就把概率很小的

4
00:00:10,180 --> 00:00:11,940
但是也不是不可能发生的

5
00:00:12,980 --> 00:00:13,810
就当成

6
00:00:15,020 --> 00:00:16,020
概率很大的了

7
00:00:18,610 --> 00:00:21,490
比如说,就拿我们经常举例的买彩票来说

8
00:00:21,850 --> 00:00:24,560
买彩票大概率不中的

9
00:00:25,360 --> 00:00:26,680
但也有一点点概率中

10
00:00:29,610 --> 00:00:35,040
他就不管99.99999%不中

11
00:00:35,270 --> 00:00:39,490
你看,也有中的

12
00:00:39,500 --> 00:00:43,760
所以这个中才是真理

13
00:00:44,370 --> 00:00:45,690
另外他就不管了

14
00:00:47,000 --> 00:00:50,520
但是那个很小,基本不可能的

15
00:00:53,810 --> 00:00:55,690
所以大谈什么不规范的人

16
00:00:56,180 --> 00:01:00,760
想一想你有没有资格谈

17
00:01:02,370 --> 00:01:04,320
你要先懂得规范,才知道

18
00:01:04,330 --> 00:01:08,020
什么尺度下谈不规范

19
00:01:11,290 --> 00:01:13,660
因为你这个是在很多限制条件下

20
00:01:13,670 --> 00:01:15,010
才有资格谈这个

21
00:01:15,290 --> 00:01:16,900
你连限制条件都不懂

22
00:01:17,610 --> 00:01:23,090
就直接谈这个,往往是遮羞布了

23
00:01:26,650 --> 00:01:27,920
范式有这么几个

24
00:01:27,930 --> 00:01:30,840
我们一会还会再一个个详细讨论

25
00:01:31,900 --> 00:01:34,330
书上,书非常多

26
00:01:34,340 --> 00:01:36,450
教材是大把的标准教材

27
00:01:36,660 --> 00:01:38,940
包括学校的教材

28
00:01:39,270 --> 00:01:40,780
包括软考的

29
00:01:41,570 --> 00:01:43,200
也出了很多题

30
00:01:43,210 --> 00:01:44,120
各种各样的题

31
00:01:46,460 --> 00:01:49,600
第一范式,1NF,原子属性

32
00:01:50,530 --> 00:01:51,690
不能够有多个

33
00:01:52,500 --> 00:01:54,170
还有内部复杂结构

34
00:01:54,540 --> 00:02:01,230
2NF,非主属性对候选键的部分依赖

35
00:02:01,480 --> 00:02:03,120
第三个,传递依赖

36
00:02:03,130 --> 00:02:06,100
就是A函数决定B

37
00:02:06,110 --> 00:02:08,760
B又决定C,这个不行

38
00:02:10,870 --> 00:02:13,740
下一个就是BC范式

39
00:02:13,750 --> 00:02:15,420
就是巴斯-科德范式

40
00:02:16,210 --> 00:02:17,770
消除主属性的

41
00:02:19,080 --> 00:02:20,360
部分依赖

42
00:02:20,370 --> 00:02:28,190
主属性对候选键的部分依赖

43
00:02:30,690 --> 00:02:31,530
到这里就可以了

44
00:02:31,660 --> 00:02:37,950
下面第四范式第五范式都可以不用管了

45
00:02:40,010 --> 00:02:42,900
我们一般来说,到BC范式这个

46
00:02:42,910 --> 00:02:45,660
就觉得可以了

47
00:02:49,070 --> 00:02:53,800
那么讨论范式,讲授知识的时候

48
00:02:54,370 --> 00:02:59,580
现在很多教科书这些例子都显得比较幼稚

49
00:03:00,070 --> 00:03:03,060
举的例子好像那个人(学生)特别傻一样

50
00:03:03,070 --> 00:03:06,850
怎么会,往往我们就算再傻的人

51
00:03:06,860 --> 00:03:10,260
他一开始建模,不会幼稚到那个地步了

52
00:03:10,270 --> 00:03:12,250
所以我们后面举的例子

53
00:03:12,260 --> 00:03:13,930
不要举太幼稚的

54
00:03:15,630 --> 00:03:16,950
因为我们很多教科书

55
00:03:16,960 --> 00:03:20,540
都是拿以前的

56
00:03:20,550 --> 00:03:21,700
历史这样传承下来的

57
00:03:21,910 --> 00:03:23,500
以前可能那个人(学生)很幼稚

58
00:03:23,630 --> 00:03:27,060
连基本的范式都没有

59
00:03:27,070 --> 00:03:28,560
但现在来说的话

60
00:03:28,570 --> 00:03:30,310
就算一个再差的人

61
00:03:30,320 --> 00:03:33,040
他也得有这样一个概念

62
00:03:33,330 --> 00:03:36,090
也会把一些基本概念会分开

63
00:03:36,100 --> 00:03:39,480
但是问题在什么地方

64
00:03:39,490 --> 00:03:41,920
它在某些比较含糊的地方

65
00:03:41,930 --> 00:03:45,250
但我们没有意识到,会犯范式的错误

66
00:03:47,030 --> 00:03:49,830
这种很明显看出来的

67
00:03:49,840 --> 00:03:51,750
还明目张胆的犯

68
00:03:52,420 --> 00:03:55,940
在现实中并不是很常见的

1
00:00:02,090 --> 00:00:05,200
第一范式,就是属性不能再分解

2
00:00:05,210 --> 00:00:06,920
表中不能再有表

3
00:00:08,160 --> 00:00:10,950
包括多值的属性

4
00:00:12,940 --> 00:00:18,550
把多个,然后逗号连在一起

5
00:00:20,130 --> 00:00:22,280
第二个就是复杂的属性

6
00:00:24,290 --> 00:00:26,760
属性里面

7
00:00:26,770 --> 00:00:29,820
还可以再分解成

8
00:00:29,830 --> 00:00:32,500
另外的更细的一些概念

9
00:00:32,710 --> 00:00:35,130
比如说,像右边这个图

1
00:00:00,410 --> 00:00:02,300
右边那个图

2
00:00:02,700 --> 00:00:03,900
员工ID

3
00:00:05,570 --> 00:00:08,460
你看我们这里都主动加上ID了

4
00:00:08,790 --> 00:00:10,840
就刚才讲的,不那么幼稚

5
00:00:11,460 --> 00:00:14,800
很多教科书,姓名

6
00:00:15,910 --> 00:00:18,490
姓名做主键,肯定不对(正常)的

7
00:00:18,750 --> 00:00:25,180
我们想想,现在来说,再怎么幼稚

8
00:00:25,190 --> 00:00:27,220
他也不会拿一个姓名做主键了

9
00:00:28,380 --> 00:00:30,610
员工ID或工号什么之类的

10
00:00:30,780 --> 00:00:33,870
联系方式

11
00:00:37,180 --> 00:00:39,170
你看,多值违反了

12
00:00:39,180 --> 00:00:42,450
第二个,在结构上也违反了,这里面有电话

13
00:00:42,740 --> 00:00:44,010
显然是一个联系方式类型

14
00:00:44,580 --> 00:00:47,240
这个才是具体的内容吧

15
00:00:47,970 --> 00:00:56,040
微信 QQ,怎样让它不违反,就把它拆开了

16
00:00:56,050 --> 00:00:56,440


17
00:00:56,450 --> 00:01:01,560
拆开,比如说,一种是分成三条记录

18
00:01:02,820 --> 00:01:07,750
分成三行,联系方式类型、联系方式,这样分开

19
00:01:08,870 --> 00:01:13,870
这个就满足第一范式了

20
00:01:14,080 --> 00:01:19,970
1NF,显然这里面一看就有很多冗余

21
00:01:20,060 --> 00:01:20,250


22
00:01:20,260 --> 00:01:24,320
1 潘加宇 1 潘加宇 1 潘加宇

23
00:01:24,530 --> 00:01:26,320
第二个,员工ID

24
00:01:28,820 --> 00:01:31,370
1 潘加宇,重复的

25
00:01:32,030 --> 00:01:35,180
重复了很多遍

26
00:01:35,190 --> 00:01:39,830
当然这里面你要选主键的话

27
00:01:39,840 --> 00:01:44,120
也可以选这个和这个作为复合主键

28
00:01:44,290 --> 00:01:45,920
才能够决定联系方式

29
00:01:48,840 --> 00:01:52,050
这是第一范式

30
00:01:54,090 --> 00:01:56,480
这个还好理解

31
00:01:57,890 --> 00:01:59,720
一看这个就不太对

32
00:02:00,730 --> 00:02:02,080
我们平时也不会这样干

33
00:02:03,140 --> 00:02:05,690
我们看,下面这个可能更微妙一点

34
00:02:07,910 --> 00:02:09,190
假设我们不这样干

35
00:02:09,200 --> 00:02:15,210
比如说,员工ID,1,潘加宇,这个一样的

36
00:02:15,220 --> 00:02:16,970
我们来个电话1电话2

37
00:02:17,720 --> 00:02:20,080
电话3,我多留几个字段

38
00:02:20,090 --> 00:02:21,760
电话3电话4,1个人

39
00:02:21,770 --> 00:02:23,080
5个电话,应该够了

40
00:02:23,640 --> 00:02:24,590
电话5

41
00:02:25,080 --> 00:02:25,840
这可以吗

42
00:02:27,820 --> 00:02:30,930
表面上没有违反第一范式

43
00:02:32,090 --> 00:02:32,930
但是

44
00:02:34,770 --> 00:02:39,250
实际上它也是把相同的概念

45
00:02:41,010 --> 00:02:42,540
相同的概念

46
00:02:43,460 --> 00:02:45,500
做成了什么

47
00:02:45,750 --> 00:02:46,670
不同的属性

48
00:02:47,320 --> 00:02:49,170
还是把同样的概念

49
00:02:49,180 --> 00:02:50,370
在属性那里

50
00:02:50,380 --> 00:02:51,960
重复了很多遍

51
00:02:54,150 --> 00:02:58,190
本质上还是,如果

52
00:02:58,200 --> 00:03:00,310
你有领域概念的加成的话

53
00:03:01,610 --> 00:03:02,840
本质上可以看到

54
00:03:02,850 --> 00:03:06,090
它背后本质

55
00:03:06,100 --> 00:03:07,610
还是违反第一范式的

56
00:03:08,660 --> 00:03:10,240
但如果说你没有领域概念加成

57
00:03:10,250 --> 00:03:12,120
你根本不知道这个字段是什么

58
00:03:14,730 --> 00:03:15,850
根本不知道是什么

59
00:03:17,180 --> 00:03:18,650
比如说,这个不是电话

60
00:03:19,800 --> 00:03:20,210


61
00:03:20,770 --> 00:03:22,830
假设这里不是写的电话

62
00:03:25,670 --> 00:03:31,990
而且写x,这个写y,这个没法判断了

63
00:03:32,000 --> 00:03:33,790
你不知道xy是啥

64
00:03:34,450 --> 00:03:35,890
你怎么知道违反第一范式

65
00:03:35,900 --> 00:03:37,570
没准x是身份证号呢

66
00:03:38,210 --> 00:03:41,340
万一是别的什么东西

67
00:03:43,460 --> 00:03:48,640
所以必须得有后面领域知识的加成才可以

68
00:03:48,650 --> 00:03:49,880
否则你很难判断的

69
00:03:55,590 --> 00:04:00,260
这个的话,明显看出来是重复的

70
00:04:00,470 --> 00:04:01,500
像这种可以吗

71
00:04:02,130 --> 00:04:03,330
我不电话1电话2

72
00:04:03,340 --> 00:04:06,410
因为电话1电话2都是电话的概念

73
00:04:06,660 --> 00:04:09,810
我们来私人电话、办公电话

74
00:04:10,160 --> 00:04:11,950
这个写得更清楚了

75
00:04:11,960 --> 00:04:12,550
这可以吗

76
00:04:14,550 --> 00:04:16,980
这个的话相当于标出了什么

77
00:04:18,500 --> 00:04:20,200
背后实际上都是电话

78
00:04:21,140 --> 00:04:24,290
但是标出不同角色的名称

79
00:04:24,300 --> 00:04:25,170
相当于

  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值