数据库系统之函数依赖
Functional Dependencies
- 什么是函数依赖?
- 如何发现关系表中的函数依赖关系?
- 函数依赖关系与对象的类
- 功能依赖与关联
- 函数依赖性的派生
- 阿姆斯特朗公理 (Armstrong axioms)
- 其他的推理规则
- References
什么是函数依赖?
举些例子:
员工所属部门:员工编号→部门名称
一个部门有一个经理:部门名称→经理编号
员工只有一个经理:员工编号→经理编号
学生一次注册一个科目:学号、科目代码→注册日期
一个员工在一个办公室的一栋楼里:员工号→楼号,办公室号
大楼里的办公室有一间员工:楼号,办公室号→员工号
如何发现关系表中的函数依赖关系?
要发现关系表中的函数依赖关系,我们必须使用关系表名的语义和属性名。
例如,考虑一个关系模式关系表:
TRIP(rego#, license#, tdate),其中包含
在给定的日期(tdate)使用该卡车(rego#)的司机( license#)的行程信息。
一辆卡车只能用一次吗?如果是,则rego#→ tdate
司机只能开一次车吗?如果是,license#→ tdate
一个司机能使用多辆卡车吗?如果是,则license#→rego#
一辆卡车能被一个以上的司机使用吗?如果是,则rego#→license#
函数依赖关系与对象的类
一类对象:学生
包含以下函数依赖:
s# → fname
s# → lname
s# → dob
s# → average
fname, lname, dob → s#
fname, lname, dob → average
其中
s# → fname
s# → lname
s# → dob
s# → average
等同于函数依赖
s# → fname, lname, dob, average
·····················
fname, lname, dob → s#
fname, lname, dob → average
等同于函数依赖
fname, lname, dob → s#, average
功能依赖与关联
两类对象:DEPARTMENT 和 CHAIRPERSON ,关联关系为Has,并且两者是1对1的关系。
包含以下函数依赖:
name → budget, building#, total-employees
building# → name, budget, total-employees
c# → fname, lname
name → c#, fname, lname
building# → c#, fname, lname
c# → name, building#, budget, total-employees
两类对象:EMPLOYEE 和 PROJECT ,关联关系为 Works-on,并且两者是多对1的关系。
一个PROJECT 可能有多个EMPLOYEE在为之工作。
包含以下函数依赖:
e# → fname, lname, dob, salary
fname, lname, dob → e#, salary
title → budget, deadline
e# → title, budget, deadline
fname, lname, dob → title, budget, deadline
函数依赖性的派生
考虑一个关系模式为:
EMPLOYEE(e#, ename, department, address, chairperson)
如果e# → ename and e# → department then e# → ename, department
如果e# → department and department → address then e# → address
如果e# → department and department → chairperson then e# →chairperson
如果 e# → department then e#, ename → department
如果 e#, ename → department then e#, ename, address → department
e# → e#和 e#, ename → e#这类一定正确的函数依赖被称之为trivial functional dependency
Trivial functional dependency总是正确的,不管它的左边和右边是什么。
考虑一个关系模式 R(A, B, C)
A → A 总是正确的
A, B → A 总是正确的
A, B, C → A 总是正确的
如果 A → B then A, C → B
如果 A → B, C then A → B and A → C
如果 A → B and B → C then A → C
阿姆斯特朗公理 (Armstrong axioms)
让 R = (A1 , …, An ) 成为一个关系模式 并且 设X, Y, Z为{A1 , …, An}的非空子集
(1) If Y ⊆ X then X → Y (reflexivity axiom)
(2) If X → Y then X, Z → Y, Z (augmentation axiom)
(3) If X → Y and Y → Z then X → Z (transitivity axiom)
以上三条被成为公理的最小完备集。
其他的推理规则
让 R = (A , …, A ) 成为一个关系模式 并且 设X, Y, Z为{A , …, A }的非空子集
If X → Y and X → Z then X → Y, Z (union rule)
If X → Y and W, Y → Z then W, X → Z (pseudotransitivity rule)
If X → Y and Z ⊆ Y then X → Z (decomposition rule or reduce right hand side rule)
If X → Y then X, Z → Y (extend left hand side rule)
可以看看我的数据库函数依赖与最高范式判断练习来加深理解:
https://blog.csdn.net/Jifu_M/article/details/112392129
References
- T. Connoly, C. Begg, Database Systems, A Practical Approach to Design, Implementation, and Management, Chapter 14.4 Functional Dependencies, Chapter 15.1 More on Functional Dependencies, Pearson Education Ltd, 2015.
数据库系统之函数依赖相关推荐
- 数据库系统概论——函数依赖、码和范式(1NF、2NF、3NF、BCNF)详解
文章目录 概念回顾 1.函数依赖的定义 1.1 平凡函数依赖和非平凡函数依赖 1.2 完全函数依赖和部分函数依赖 1.3 传递函数依赖 2.码 2.1 主码和候选码 2.1主属性与非主属性 2.2 全 ...
- 【数据库系统】函数依赖及其公理定理(1)
1.啥是函数依赖? 设 R ( U ) R(U) R(U)是属性集合 U = A 1 , A 2 , - , A n U={A1,A2,-,An} U=A1,A2,-,An上的一个关系模式, X , ...
- 6.0 《数据库系统概论》之关系数据库的规范化理论(数据依赖对表的影响[插入-删除-修改-冗余]、1NF-2NF-3NF-BCNF-4NF、函数依赖与多值依赖)
文章目录 0.思维导图 1.为什么要学习关系数据库规范化理论? (1)基本概念回顾 (2)关系模式的形式化定义 (3)什么是数据依赖F? (4)数据依赖F对关系模式的影响 1️⃣ 数据冗余(Data ...
- 数据库系统之(函数依赖,码,范式,规范化)
文章目录 函数依赖 1.函数依赖(functional dependencies) 2.平凡函数依赖与非平凡函数依赖(trivial and non-trivial) 3.完全函数依赖与部分函数依赖 ...
- 计算机系统的分类补充完整,数据库系统原(理B)13春A卷.doc
数据库系统原(理B)13春A卷 华东交通大学2012-2013学年第二学期考试卷 试卷编号: (A)卷 数据库系统原理(B) 课程 课程类别:必.限.任 闭卷 考试日期: 2013.07.02 (10 ...
- 获取系统版本号_数据库系统原理
一.事务 概念 事务指的是满足 ACID 特性的一组操作,可以通过 Commit 提交一个事务,也可以使用 Rollback 进行回滚. ACID 1. 原子性(Atomicity) 事务被视为不可分 ...
- 南京工程学院 数据库复习(数据库系统概论复习 及 数据库原理与应用样题)
一.数据库系统概论 1.1 百度文库 复习文档(需下载券) <数据库系统概论>(王珊.第五版) ★第一章 绪论 v 本章内容:数据库系统概述.数据模型.数据库系统结构 v 本章主要考点 ...
- 软设考试笔记--数据库系统
软设考试笔记–数据库系统 意义: 对于一些管理软件,其核心就是与业务相关的数据处理,而数据的存储就离不开数据库系统的支持.所以掌握数据库系统的知识是十分有必要的. 考点的提炼: 数据库模式(概念模式. ...
- 关系数据库设计理论(函数依赖、异常、范式)、ER图
1. 关系数据库设计理论 1.1 函数依赖 记 A->B 表示 A 函数决定 B,也可以说 B 函数依赖于 A. 如果 {A1,A2,... ,An} 是关系的一个或多个属性的集合,该集合函数决 ...
最新文章
- have sb do / have sb doing / have sth dong 区别
- httphandlers 与 httpmodules
- Git复习(十)之常见报错和疑问
- CentOS 5.5-yum安装配置LNMP
- 归约操作java8_使用Java 8进行分组,转换和归约
- 服务器内存类型UDIMM、RDIMM和LRDIMM比较
- python sqlite3 增删改查(最基本的增删改查)
- bzoj 3172: [Tjoi2013]单词 AC自动机
- 后端分布式系列:分布式存储-MySQL 数据库事务与复制
- 前端地图之色斑图渲染(数据格式为.tif的栅格数据)(一)——以leaflet为例
- JSONObject依赖包
- OGNL表达式的介绍
- Typescript+Vue大型后台管理系统实战
- python将三位数分离(format格式)_Python格式函数,python,之,format
- FL Studio20最详细的注册教程 附二十位序列号
- 外包公司与小公司你选哪个?
- 硬件工程师入门基础知识(一)基础元器件认识(一)
- C#通过操作注册表检测office版本
- Deep Feedback Network for Recommendation用于推荐系统的深度反馈网络
- 通过GitHub Actions给微信公众测试号和钉钉群定时推送消息(Python)
热门文章
- 计算机学硕312,心理学考研选312好还是347好?
- 分享elain.org 数据备份脚本
- 灵西机器人(杭州)人才招聘
- PoS淘金热潮,全节点对于分布式网络到底意味着什么?
- 练习:任意多行字条串拆分数值求和冒泡排序两数的最大公约数和最大公倍数
- python dataset[trans_科学网—Python GDAL 图像坐标,投影坐标,经纬度坐标 三者映射及运行错误解决 - 吴妍潼的博文...
- 实现简约版本的 vue
- 基于cocoStudio和BMfont的艺术字体制作
- 官方网站是诚信的“风向标”
- 为什么我的CAD图纸打不开?CAD图纸版本转换技巧!