如何区分范式

本文详细解释了数据库设计中的各种范式,如1NF、2NF、3NF、BCNF等,强调了主键、候选键、外键和不同范式之间的关系,以及如何通过实例分析确保数据的一致性和完整性。
摘要由CSDN通过智能技术生成

范式:在关系型数据库中,关于数据库设计的基本原则

数据库的范式设计的越高阶,冗余度就越低。同时高阶的范式一定符合低范式的要求。

从低到高分为:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯范式(BCNF)、第四范式和第五范式

范式的定义离不开主键和候选键,数据库中的键由一个或者多个属性组成。

以下图为例我们来认识一下各种键

球员表
球员编号姓名身份证年龄球队编号
球队表
球队编号主教练球队所在地

主键(主码):用户从候选键中选择一个当主键 、能唯一定位(球员编号或者身份证主键只能有一个

超键:能唯一标识元组的属性集叫做超键 。就是主键加任意的属性(球员编号加姓名加年龄

候选键(码):如果超键不包含多余属性,那么这个超键就是候选键,最小的超键。(球员编号或者身份证号 )                                                候选键可以有多个                                  

外键:在一个表里不是主键但在另一个表里是主键。那个这个属性集就是第一个表的外键

(球队编号)

主属性:包含在任一候选键中的属性称为主属性。(球员编号、身份证)

非主属性:就是不是主属性的属性

键是一个或者多个属性组成。针对单个属性,我们可以用主属性和非主属性来进行区别

第一范式

第一范式主要是确保数据表中每个字段的值必须具有原子性。也就是说数据表中每个字段的值不可拆分的最小数据单元

第二范式

第二范式要求,在满足第一范式的基础上,还要满足数据表里每条数据记录,都是可唯一标识的,而且所有非主键字段都必须完全依赖主键(候选键),不能部分依赖主键。如果知道主键的所有属性的值,就可以检索到任何元组的任何属性的任何值

例子

成绩表
学号课程号成绩

(学号,课程号)可以决定成绩,但是学号不能决定成绩,课程号也不能决定成绩,所以(学号,课程号)对成绩就是完全依赖关系

比赛表
球员编号比赛编号姓名年龄比赛事件比赛场地得分

主键是(球员编号,比赛编号)     姓名和年龄部分依赖主键中球员编号     比赛事件和比赛场地部分依赖主键中的比赛编号。     得分完全依赖于主键

(球员编号)---->(姓名,年龄)

(比赛编号)--->(比赛时间,比赛场地)

第三范式(第二范式不能有部分函数依赖,第三范式不能有传递函数依赖)

第三范式在第二范式的基础上,确保数据表中每个非主属性字段都和主关键字直接相关,要求数据表中的所有非主键字段不能依赖于其他非主键字段

商品表
商品主键ID(主键)商品类别ID商品类别名称商品名称商品价格

商品类别名称依赖于商品类别编号ID,不符合第三范式

商品类别ID
商品类别名称

球员表
球员编号姓名球队名称球队教练

球队教练依赖球队名称

巴斯范式

若一个关系达到了第三范式,并且它只有一个候选键,或者它的每个候选键都是单属性,则该关系达到巴斯范式

仓库表
仓库名管理员物品名数量
北京仓张三宝马10
北京仓张三奔驰20
上海仓李四捷豹30
上海仓李四布加迪40

仓库名觉得管理员,管理员觉得仓库名

候选键:(管理员,物品名)和(仓库名,物品名)。从二者选一个做主键

主属性:包含任一候选键中的属性,也就是仓库名,管理员和物品名

非主属性:数量这个属性

假设将(仓库名,物品名)做主键

主属性的仓库名对于候选键中(管理员,物品名)是部分依赖的关系。因为仓库名和管理员是一一对应的关系

解决办法:

拆分成两个表:仓库表:(仓库名,管理员)、库存表(仓库名,物品名,数量)

第四范式

多值依赖的概念:

多值依赖:即属性间一队多关系

函数依赖:就是单值依赖,所以不能表达属性值之间的一对多的关系

职工表
职工编号职工孩子姓名职工选修课程

职工可能会有多个职工孩子的名字。同一个职工也可能有多个职工选修课程。不符合第四范式

解决:
拆成(职工编号,职工孩子姓名)和(职工编号,职工选修课程)

第五范式

如果关系模式R中每一个连接依赖由R的候选键所隐含,则称此关系模式符合第五范式

  • 25
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值