范式说明:第四范式

4NF取决于多值依赖的概念。 FD函数依赖(X→Y表示:X函数决定Y,或Y函数依赖于X),主要解决了关系R中属性值之间的“多对一”联系,即属性X与属性Y是“多对一”。而多值依赖主要是解决属性值之间的“一对多”联系,即属性X与属性Y是“一对多”。定义: 设R(U)是属性集U上的一个关系。X、Y、Z是U的子集,且Z=U-X-Y。关系R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一元组r,给定一对(x,z)值,有一组y的值,这组值仅仅取决于x值(记为X→→Y),而与z值无关。举例:R(系名,教师名,学生名),由于一个系有多名教师和多名学生,所以关系R中的属性值之间,存在“一对多”的联系,称为多值依赖,即:系名→→教师名系名→→学生名解析:此处的属性集U就是{系名、教师名、学生名},X就是{系名},Y就是{教师名},Z就是{学生名}。有多值依赖就存在冗余,就不是4NF。由此可见,多值依赖不好,消除的方法是分解。如果X包含Y或 X∪Y=U,则X→→Y是一个平凡的多值依赖。否则X→→Y是一个非平凡的多值依赖。对于关系R,如果R∈1NF,并且所有非平凡的多值依赖的决定因素都是候选键,那么R∈4NF。

======================================================================

BCNF和4NF的区别

例如,某高等学校为描述该校每个系有哪些教师和哪些学生,用关系模式DeptInfo(DeptName,Teacher,Sname)来表示系(DeptName)、教师(Teacher)和学生名(Sname)三者之间的关系。如下表所示。

范式说明:第四范式 - cruelchen - 好好做人

在关系模式DeptInfo中,对于属性(DeptName,Sname)上的一个值(通信工程系,李小明),就有Teacher上的一组值{张锋华,朱大红}与之对应,且这组值仅仅决定于属性DeptName上的值,而与Sname上的值无关,也就是说对于(DeptName,Sname)上的另一个值(通信工程系,王方方),它仍然对应于Teacher上的同一组值{张锋华,朱大红},尽管这时Sname的值已经从“李小明”变成了“王方方”。因此Teacher多值依赖于DeptName,即DeptName→→Teacher。

但是,关系模式DeptInfo(DeptName,Teacher,Sname)不属于 4NF。因为这个关系模式的唯一候选键是{DeptName,Teacher},而多值依赖DeptName→→Teacher不包含候选键。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值