数据库设计之范式

数据库设计的六个阶段中,范式理论是确保数据完整性和效率的关键。1NF要求属性不可再分,2NF消除部分函数依赖,3NF去除传递函数依赖,BCNF则强调非主属性对候选键的完全函数依赖。理解并应用这些范式可以避免数据冗余,减少插入、删除和更新异常,优化数据库结构。
摘要由CSDN通过智能技术生成

数据库设计总共分为6个阶段,如下图所示,而数据库的逻辑结构设计需要用到范式,下面就一起来了解下什么是范式。

 

范式解决的问题:

1、数据冗余

2、插入异常

3、删除异常

4、更新异常  

数据库表如果设计不当,一来可能会占用过多的空间,影响查询的效率,二来也会为后面的编程带来不必要的麻烦,三来还会影响数据库的完整性。因此,有必要对数据库表进行范式的优化。

下面介绍范式的定义,以及定义的部分解释。

  • 第一范式(1NF):符合1NF的关系中的每个属性都不可再分。
  • 第二范式(2NF):消除了非主属性对于码的部分函数依赖。

“函数依赖”:在属性(或属性组)X确定的情况下,必定能确定属性Y的值,即Y依赖于X,记作X -> Y。举个栗子,函数f(X) = Y,X通过函数f()映射到Y,Y函数依赖于X。或者如下图,知道城市就能知道省份,所以省份函数依赖于城市。

“完全函数依赖”:若X -> Y,且对于X的任何一个真子集X’,X’ -> Y 不成立,则Y对于X完全函数依赖。

“部分函数依赖”:若X -> Y,但Y并不完全依赖于X,则称Y部分依赖于X。举个栗子,完全函数依赖:{学号,课程号}-->成绩,学号和课程号可以决定成绩,但是单独的学号或者单独的课程号不能决定成绩;部分函数依赖:{学号,课号}-->姓名,只有学号能决定姓名。

“码”:设K为某表中的一个属性或属性组,若除K之外的所有属性都完全函数依赖于K,那么称K为候选码,简称码。

“主属性”:包含在任何一个码中的属性称为主属性。

  • 第三范式(3NF):消除了非主属性对于码的传递函数依赖。

至少要有三个属性才可能存在传递的函数依赖关系

  • BCNF(Boycee Codd Normal Form)范式:所有非主属性对每一个候选键都是完全函数依赖;所有的主属性对每一个不包含它的候选键,也是完全函数依赖;没有任何属性完全依赖于非候选键的任何一组属性。

候选键(candidate key):是某个关系变量的一组属性所组成的集合,它需要同时满足下面两个条件:
1、这个属性集合始终能够确保在关系中能唯一标识元组。
2、在这个属性集合中找不出合适的真子集能够满足条件。
满足第一个条件的属性集合称为超键,因此我们也可以把候选键定义为"最小超键",即不含有多余属性的超键。

 

总结:
1NF: 字段是最小的的单元不可再分
2NF:满足1NF,表中的字段必须完全依赖于全部主键而非部分主键 (一般我们都会做到)
3NF:满足2NF,非主键外的所有字段必须互不依赖
4NF:满足3NF,消除表中的多值依赖


后续:   
主键:唯一表示表中的某一行的属性或属性组,一个表只能有一个主键,但是可以有多个候选索引  
主码:当有多个候选码时,可以选定一个作为主码,选定的候选码称为主键,主码可以有多个  
码:唯一标识实体的属性,它是整个实体集的性质。包括超码,候选码,主码。
超码:如果K是一个超码,那么K的任意超集也是超码,即如果K是超码,那么包含K的集合也是超码。
候选码:最小超码,包含K的集合都不能是候选码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值