范式知识点

Mysql数据库

⽬前关系数据库有六种范式:
  第⼀范式( 1NF )、第⼆范式( 2NF )、第三范式( 3NF )、巴斯 - 科德范式
BCNF )、第四范式 (4NF )和第五范式( 5NF ,⼜称完美范式)。满⾜最低要求的范式是
第⼀范式( 1NF )。在第⼀范式的基础上进⼀步满⾜更多规范要求的称为第⼆范式
2NF ),其余范式以次类推。⼀般说来,数据库只需满⾜第三范式 (3NF )就⾏了。所以
这⾥就只记录三范式相关的知识。

⼀ 范式

1NF: 字段不可分 ; 2NF: 有主键,⾮主键字段依赖主键 ; 3NF: ⾮主键字段不能相互依赖 ;
解释 : 1NF: 原⼦性 字段不可再分 , 否则就不是关系数据库 ; 2NF: 唯⼀性 ⼀个表只说明⼀个事
; 3NF: 每列都与主键有直接关系,不存在传递依赖 ;

第⼀范式(1NF

  即表的列的具有原⼦性 , 不可再分解,即列的信息,不能分解 , 只要数据库是关系型数
据库 (mysql/oracle/db2/informix/sysbase/sql server) ,就⾃动的满⾜ 1NF 。数据库表的每⼀
列都是不可分割的原⼦数据项,⽽不能是集合,数组,记录等⾮原⼦数据项。如果实体中
的某个属性有多个值时,必须拆分为不同的属性 。通俗理解即⼀个字段只存储⼀项信息。
关系型数据库 : mysql/oracle/db2/informix/sysbase/sql server ⾮关系型数据库 : ( 特点 :
⾯向对象或者集合 ) NoSql 数据库 : MongoDB/redis( 特点是⾯向⽂档 )

第⼆范式(2NF

  第⼆范式( 2NF )是在第⼀范式( 1NF )的基础上建⽴起来的,即满⾜第⼆范式
2NF )必须先满⾜第⼀范式( 1NF )。第⼆范式( 2NF )要求数据库表中的每个实例或⾏
必须可以被惟⼀地区分。为实现区分通常需要我们设计⼀个主键来实现 ( 这⾥的主键不包含
业务逻辑 ) 即满⾜第⼀范式前提,当存在多个主键的时候,才会发⽣不符合第⼆范式的情况。⽐如有
两个主键,不能存在这样的属性,它只依赖于其中⼀个主键,这就是不符合第⼆范式。通
俗理解是任意⼀个字段都只依赖表中的同⼀个字段。(涉及到表的拆分)

第三范式(3NF

  满⾜第三范式( 3NF )必须先满⾜第⼆范式( 2NF )。简⽽⾔之,第三范式( 3NF )要
求⼀个数据库表中不包含已在其它表中已包含的⾮主键字段。就是说,表的信息,如果能
够被推导出来,就不应该单独的设计⼀个字段来存放 ( 能尽量外键 join 就⽤外键 join) 。很多
时候,我们为了满⾜第三范式往往会把⼀张表分成多张表。
即满⾜第⼆范式前提,如果某⼀属性依赖于其他⾮主键属性,⽽其他⾮主键属性⼜依赖于
主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。 通俗解释就是⼀
张表最多只存两层同类型信息。
巴斯 - 科德范式( BCNF
Boyce-Codd Normal Form (巴斯 - 科德范式)
3NF 基础上,任何⾮主属性不能对主键⼦集依赖(在 3NF 基础上消除对主码⼦集的依赖)
巴斯 - 科德范式( BCNF )是第三范式( 3NF )的⼀个⼦集,即满⾜巴斯 - 科德范式( BCNF
必须满⾜第三范式( 3NF )。通常情况下,巴斯 - 科德范式被认为没有新的设计规范加⼊,
只是对第⼆范式与第三范式中设计规范要求更强,因⽽被认为是修正第三范式,也就是
说,它事实上是对第三范式的修正,使数据库冗余度更⼩。这也是 BCNF 不被称为第四范式
的原因。某些书上,根据范式要求的递增性将其称之为第四范式是不规范,也是更让⼈不
容易理解的地⽅。⽽真正的第四范式,则是在设计规范中添加了对多值及依赖的要求

第四范式

对于第四范式,从理论层⾯来讲是,关系模式 R 1NF, 如果对于 R 对于 R 的每个⾮平凡多值依
X Y(Y 不属于 X),X 都含有候选码,则 R 4NF 4NF 就是限制关系模式的 属性之间不允许有
⾮平凡且⾮函数依赖的多值依赖 。显然⼀个关系模式是 4NF ,则必为 BCNF
也就是说,当⼀个表中的⾮主属性互相独⽴时( 3NF ),这些⾮主属性不应该有多
值。若有多值就违反了第四范式。
第五范式 不得存在不遵循键约束的⾮平凡连接依赖。如果且只有⼀个表符合 4NF ,同时其中的每个
连接依赖被候选键所包含,此表才符合第五依赖。

⼆ 反三范式

  没有冗余的数据库未必是最好的数据库,有时为了提⾼运⾏效率,提⾼读性能,就必
须降低范式标准,适当保留冗余数据。具体做法是: 在概念数据模型设计时遵守第三范
式,降低范式标准的⼯作放到物理数据模型设计时考虑。降低范式就是增加字段,减少了
查询时的关联,提⾼查询效率,因为在数据库的操作中查询的⽐例要远远⼤于 DML 的⽐
例。但是反范式化⼀定要适度,并且在原本已满⾜三范式的基础上再做调整的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值