1
00:00:01,880 --> 00:00:05,350
下一个范式就是BC范式
2
00:00:09,850 --> 00:00:10,920
就是主属性
3
00:00:11,720 --> 00:00:18,410
不部分依赖于主键或候选键
4
00:00:20,150 --> 00:00:23,100
前面第二范式说非主属性不依赖
5
00:00:23,230 --> 00:00:27,390
主属性是可以的
6
00:00:27,400 --> 00:00:32,990
但现在你看,主属性也不可以了
7
00:00:33,640 --> 00:00:35,470
实际上就是刚才我们说的那种
8
00:00:36,000 --> 00:00:37,760
互为依赖的主属性这种
9
00:00:40,530 --> 00:00:41,260
所以它的特征
10
00:00:41,270 --> 00:00:43,620
往往一个是有互为依赖的主属性
11
00:00:43,630 --> 00:00:47,040
第二个候选键它是一个复合键
12
00:00:47,720 --> 00:00:51,070
因为你只有是复合的候选键
13
00:00:51,560 --> 00:00:53,950
属性集里面有两个键以上才有
14
00:00:53,960 --> 00:00:55,550
部分依赖
15
00:00:56,820 --> 00:01:00,310
如果能够杜绝这个,就没有这个问题了
16
00:01:01,360 --> 00:01:03,750
你看,这个是符合3NF的
17
00:01:04,800 --> 00:01:05,720
符合第三范式的
18
00:01:05,730 --> 00:01:12,410
但是,你看,候选键,这可以,这也可以
19
00:01:13,020 --> 00:01:15,290
工号、ID
20
00:01:15,300 --> 00:01:19,000
然后结合上这个,可以决定
21
00:01:19,010 --> 00:01:27,010
唯一的一个元组,主属性
22
00:01:27,020 --> 00:01:27,930
这三个都是
23
00:01:29,080 --> 00:01:33,300
但是主属性里面你看,这是候选键
24
00:01:33,750 --> 00:01:37,930
员工号,它依赖于员工ID
25
00:01:42,510 --> 00:01:46,200
这个是候选键里面的一部分
26
00:01:47,190 --> 00:01:48,890
主要是有这个存在
27
00:01:49,810 --> 00:01:50,880
有这个存在
28
00:01:50,890 --> 00:01:52,720
然后还有这种存在
29
00:01:56,900 --> 00:01:59,650
这个带来的就是一个冗余问题了
30
00:01:59,660 --> 00:02:02,840
你看工号到处都是
31
00:02:04,390 --> 00:02:06,300
冗余问题就会带来
32
00:02:06,310 --> 00:02:07,580
另外的,刚才讲的
33
00:02:07,590 --> 00:02:10,540
比如说,你修改工号
34
00:02:10,550 --> 00:02:11,780
那么这里面就会
35
00:02:14,510 --> 00:02:15,340
如果工号
36
00:02:15,430 --> 00:02:17,700
我们把它当做一个是普通的
37
00:02:17,710 --> 00:02:21,290
领域里面的概念的话
38
00:02:21,820 --> 00:02:22,930
它是可以修改的
39
00:02:22,940 --> 00:02:25,010
因为我们不把它当主键的话
40
00:02:26,950 --> 00:02:33,940
那么你修改这个,它就会有很多地方要修改
41
00:02:33,950 --> 00:02:38,540
42
00:02:38,550 --> 00:02:42,060
等等,跟刚才那个问题差不多
43
00:02:45,040 --> 00:02:50,710
所以怎么分解,就把这个分解出来
44
00:02:51,870 --> 00:02:53,580
工号、ID一个
45
00:02:54,240 --> 00:03:03,750
然后这样,当然,更彻底的做法应该是什么
46
00:03:04,330 --> 00:03:07,250
应该是联系方式有个ID
47
00:03:08,400 --> 00:03:14,970
这个依然是有一个组合的候选键
48
00:03:14,980 --> 00:03:18,600
在这里,就是联系方式ID
49
00:03:19,190 --> 00:03:22,150
作为主键就行了
50
00:03:22,240 --> 00:03:27,360
其他什么员工ID、类型ID,什么的
51
00:03:27,370 --> 00:03:29,880
类型可以再单独
52
00:03:29,890 --> 00:03:32,530
不单独也行,这样也行
53
00:03:33,610 --> 00:03:36,140
就是联系方式作为一个
54
00:03:36,980 --> 00:03:40,330
单独作为一个表
55
00:03:40,500 --> 00:03:44,520
联系方式ID作为一个主键
56
00:03:44,530 --> 00:03:45,840
然后其他几个
57
00:03:45,850 --> 00:03:52,740
作为它的外键,这样来
58
00:03:57,370 --> 00:03:59,810
当然这个员工不是单独说
59
00:03:59,820 --> 00:04:01,490
这里单独放一个表
60
00:04:02,590 --> 00:04:03,780
来表示工号了
61
00:04:03,790 --> 00:04:09,880
而是说跟员工有这种对应的属性,包括姓名
62
00:04:10,730 --> 00:04:14,390
包括员工的身份证号等等
63
00:04:15,630 --> 00:04:17,690
只要跟员工是一一对应的
64
00:04:17,700 --> 00:04:20,370
这种就可以放在员工这个表里面
65
00:04:23,470 --> 00:04:25,910
工号把它当作类似这种
66
00:04:27,600 --> 00:04:28,880
没有区别的就可以了
67
00:04:29,530 --> 00:04:32,160
当作普通的属性来看待就可以
68
00:04:37,730 --> 00:04:40,480
我们到这里就可以了
69
00:04:41,180 --> 00:04:45,470
我们前面,你看,我们这些范式
70
00:04:46,230 --> 00:04:47,430
包括4范式5范式
71
00:04:48,400 --> 00:04:50,960
我们就不回顾了
72
00:04:51,330 --> 00:04:53,680
大多数人很多时候
73
00:04:54,530 --> 00:04:55,760
也搞不太懂
74
00:04:56,460 --> 00:04:57,650
关注不了这么多
75
00:04:58,310 --> 00:05:01,790
除非是说上学考试什么的
76
00:05:02,590 --> 00:05:05,520
一般我们实际中到这里就差不多了
77
00:05:06,500 --> 00:05:11,190
这几个范式它们是包含的
78
00:05:11,360 --> 00:05:13,890
就是说,只要你满足2的话
79
00:05:13,900 --> 00:05:15,630
意味着
80
00:05:15,640 --> 00:05:17,670
你就满足1
81
00:05:19,130 --> 00:05:21,860
满足3的话
82
00:05:21,870 --> 00:05:26,130
也就是说,前面的范式
83
00:05:26,140 --> 00:05:27,970
它就包含了后面的范式
84
00:05:30,660 --> 00:05:32,930
后面的范式是前面范式的一个子集
85
00:05:32,940 --> 00:05:36,880
就是说,你满足三范式,意味着什么
86
00:05:37,910 --> 00:05:40,340
你这个关系,满足三范式意味着什么
87
00:05:40,350 --> 00:05:41,740
你必然满足二范式
88
00:05:41,750 --> 00:05:44,620
你是三范式关系里面的一个元素的话
89
00:05:45,340 --> 00:05:47,860
你必然是二范式关系里面的一个元素
90
00:05:48,550 --> 00:05:50,610
你是BC范式里面的一个元素
91
00:05:50,620 --> 00:05:53,410
那么你必然是三范式里面一个元素
92
00:05:54,110 --> 00:05:55,520
93
00:05:55,930 --> 00:05:58,030
后面是前面的真子集
94
00:06:00,410 --> 00:06:03,420
不能说我不满足第二范式(口误,应为第一)
95
00:06:03,430 --> 00:06:05,620
但我满足第一范式(口误,应为第二),这个不对的