说明:大多数初学者对于关系数据库中的范式很是头疼,我本人也是,所以今天又看了视频,总结了一下内容,尽量语言通俗易懂,少用专业术语以及概念。
首先要理解几个键值。
超键:在关系模式中,能唯一标识元组的属性集称为 super key。
候选键:关系模式中,能唯一标识元组并且不含多余属性的属性集称为候选键。值得注意的是,超键与候选键的区别,超键可能含有多余属性,而候选键不能。
主键:在一个关系的若干个候选键中随意指定一个作为关键字,此关键字就是主键。
外键:关系R1中的属性或属性组非R1的码,但它是其他关系的码,那么该属性集对于关系模式R1而言是外键。
主属性:候选码的所有属性称为主属性。
如何区分超键,候选键,主键?
相同点:功能方面,用于唯一标识一个元组。
不同点:超键有多余的属性,主键和候选键没有,它们中的属性是必要的。主键是候选键的一个,只是被数据库设计者选中而已。
联想理解:候选人和候选键,主席与主键。(也就是说,候选键中的任何一个键都可以作为主键,只是设计者之选择了其中的一个。)
(例子是检验概念的唯一标准),大家看例子吧。
例1:学生(学号,姓名,性别,专业号,年龄)
(学号,姓名)是超键,而不是候选键,学号是候选键,同时也是主键。
例2:学生(学号,姓名,性别,专业号,年龄)主键:学号,外键:专业名
专业(专业号,专业名)主键:专业号,外键:无
例3:成绩(学号,姓名,课程号,成绩)学生无同名。
(学号)等价于(姓名)
(学号,课程号)候选键
(姓名,课程号)候选键
所以主属性:学号,姓名,课程号
范式
1NF:通俗的说,就是所有的属性都是不可再分的,复合属性是不允许的。(这一点容易理解)
2FN:
先了解部分函数依赖的概念。
部分函数依赖:主码的部分只要有一部分就可以确定属性的值。
在第一范式的前提下,保证函数依赖关系是全部函数依赖,而非部分函数依赖。
第三范式:
在第二范式的前提下,且没有函数传递依赖于码。
定理:如果某个关系模式,它的关键字是单个关键字,没有部分的函数依赖问题,那么它的肯定是2NF。(仔细理解这句话)
我有点笨,还是初学者,所以有什么不对的地方,还请大家多多指点。