《数据库系统概念》第8章关系数据库设计总结 函数依赖与范式


前引

以下均建立在看书的基础上,我的理解


一. 函数依赖

1.1 理解是什么

就是约束,规定了某些元组不能出现。
对于模式中的属性A和属性B,B函数依赖于A,记为A -> B。对于任意一个元组对t1,t2:
有t1[A] = t2[A],则t1[B] =t2[B]。
因此不允许出现属性A相同,但属性B不相同的元组。

上面的两个等式可以理解为A的值确定,则B的值就确定。因此有映射这一概念,故称之 函数 依赖

码也是一种函数依赖:对于码,记为属性集K ,有全体属性集R函数依赖于K,即K ->R在关系模式 r(R)上成立。 因为作为码的属性集K可以唯一标识一个元组,全体属性集R自然可以确定。(码还有not null,不能重复的特性)

1.2 用来干什么

说明关系中的约束
现在我创建了一个关系instructor,有属性ID,name,department。要求有以下三点约束

  1. ID唯一标识一位instructor
  2. 一位instructor只能有一个name
  3. 一位instructor只能关联一个department

以上均约束均可以用函数依赖表明,我们想表达当一个ID被确定时,其 name 和department 也被确定:
ID → R

等价于把ID设置为主码(不同的表述)


二. 范式

2.1 理解是什么

就是规范,是设计出优秀的数据库设计要遵循的标准。
通过遵循范式,我们可以减少数据存储的冗余,避免数据不一致的风险。

2.2 第一范式 1NF

满足第一范式的关系模式R的所有属性的域,一定是atomic,是不可分的。也就是说,域是原子域。
因此关系模式R不允许出现多值属性和复合属性。

关系模式中多值属性与复合属性:
复合属性,包含多个子属性,因此在关系模式中表现为多个属性。

多值属性,包含多个值,在关系模式在表现为新的模式,即我们创建新的模式以表示多值属性。

2.3 BCNF范式

消除所有基于函数依赖下的冗余
两个条件:
在这里插入图片描述

2.4 第三范式 3NF

因为通过强制性满足BCNF范式,可能会消除一些我们所期望的函数依赖。因此引入第三范式,

三个条件:
在这里插入图片描述


四. 问题

  1. 一个只有主码约束的关系模式一定是BCNF范式
    答: 是的,因为只有一个函数依赖 K →R ,且K是超码

五. 其它含义一致的说法

第一范式,第二范式,第三范式,BCNF范式理解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值