题外话#
这类题型一般伴随着判断候选关键字的结合考法,所以本文在介绍如何区分范式时首先先介绍如何确定候选关键字
候选关键字的求法:根据依赖集,找出从未在右边出现过的属性,必然是候选键之一,以该属性为基础,根据依赖集依次扩展,看能否遍历所有属性,将无法遍历的加入候选键中。
下面我们接着讨论如何区分范式
相关概念及案例解析#
1NF:强调的是列的原子性,即列不能够再分成其他的几列
例如:下图中,图书可以分解为图书号和书名,此时不属于1NF2NF:1.要满足第一范式2.每个非主属性要完全函数依赖于候选键,或者是主键(主码)。
PS:只有在复合字段作主键时,才可能出现不满足2NF的情况
例如:
下图中可以根据前面提到的方式,判断出该关系模式的候选码为EM,而函数依赖集中存在M→L,并不是由EM直接得出,所以存在部分函数依赖不属于2NF3NF:1.首先要满足第二范式 2.非主属性之间不存在函数依赖(或者说不存在传递依赖)。
意思就是此时主属性为A,A→B,A→D,此时不能出现B→C这种情况BCNF:1.满足前面的所有低级范式要求 2.主码(主键)之间不存在依赖
例如:
总结#
只要是关系型数据库的表,都满足第一范式。第一范式本质更多的是对关系型数据库的一个限定。
第二、第三范式更多的是对数据库表合理设计的一个要求,理解第二、第三范式能够更好的帮助我们设计数据库表。