-
函数依赖及其公理/定理
2020-06-06 13:42:02文章目录什么是函数依赖部分函数依赖与完全函数依赖传递函数依赖函数依赖相关的几个重要概念关于函数依赖的 Armstrong 公理Armstrong 公理Armstrong 公理对应的引理什么是属性(集)闭包属性闭包...另一种说法是,如果文章目录
什么是函数依赖
定义:
对于具有多个属性的关系模式 R,如果对于属性集合中的两个子集 A 和 B 和任意的关系 r,r 中不可能出现两个记录使得 A 中的值相等而 B 中的值不等,则称 A 函数决定 B,B 函数依赖于 A,记作 A→B。另一种说法是,如果将 A 和 B 单独拿出来做一个关系,这个关系中 A 可以作为主键。
性质:
有些函数依赖关系中 B⊆A,这种称为是 平凡 的函数依赖,反之为不平凡的函数依赖。即使两个属性之间存在函数依赖关系,即 A→B,这不意味着 A 和 B 不能在关系的多条记录中出现。
两个属性子集可能相互函数依赖。
如果关系中,A 上没有相同的两个记录出现,那么任意属性子集都函数依赖于 A。
有基于 模式 的函数依赖,要求对所有可能的关系都成立;也有基于 关系 的函数依赖,只要求对这一个关系成立即可。
部分函数依赖与完全函数依赖
如果 A→B,但是存在 A 的真子集 A’ 使得 A′→B,则称 B 部分函数依赖 于 A。如果不存在这样的子集,此时为 完全函数依赖。
传递函数依赖
函数依赖关系具有传递性:A→B,B→C⇒A→C。
如果加上一些更强的限制:A→B 和 B→C 都是非平凡的,且 C⊈A,B
A,则称 C 传递函数依赖 于 A。
函数依赖相关的几个重要概念
把数据库中的相关概念用函数依赖理论重新定义了一下:
候选键:能够 完全决定 关系模式中所有属性的属性组称为关系模式上的 候选键。
主键:对于一个关系模式,可以选取其任意一个候选键作为 主键。
主属性:包含于任意一个候选键中的属性称为 主属性,否则为 非主属性。
超键:超键和候选键类似,但是移除了完全决定的限制。超键是某个候选键对应属性集的超集。
外键:某个属性组不是当前关系模式的候选键,但是是另一个关系模式的候选键,称为当前关系模式的 外键。
其它的一些概念:
逻辑蕴涵:设 F 是关系模式 R 上函数依赖关系的集合(不一定是完整的)。对于 R 的两个属性组 A 和 B,如果从 F 中能够推理出 A→B,则称 F 逻辑蕴涵 A→B,记作 F⊨A→B。
闭包:设 F 是关系模式 R 上函数依赖关系的集合(不一定是完整的)。F 逻辑蕴涵的所有函数依赖关系构成的集合称为 F 的闭包。
可以看到,函数依赖是属性集子集上的一个关系,起码它是传递、自反的。
关于函数依赖的 Armstrong 公理
Armstrong 公理
Armstrong 公理一共有三条,可以用来从函数依赖关系集合中发现新的函数依赖关系。
这一小节使用 X、Y、Z 作为属性组;U 作为属性全集;F 作为某个函数依赖关系的集合。
Armstrong 公理对应的引理
从上述公理出发可以引出下面四条定理(为了方便就不写 ∈F 以及 F⊨ 了):
什么是属性(集)闭包
设 F 是函数依赖关系的集合,X 是一个属性组。能够从 F 推导出的所有依赖于 X 的属性构成的集合称为 X 关于 F 的属性闭包,记作
。
属性闭包的计算算法与覆盖及其证明
函数依赖关系的集合称为 函数依赖集。
函数依赖集的等价性:
如果两个函数依赖集的闭包相等,则这两个函数依赖集是 等价的。此时称其中一个函数依赖集 覆盖 另一个函数依赖集。如何计算属性闭包:
可以按照如下循环不断进行,直到序列稳定。假定要求的是 X 在 F 下的属性闭包:
这样可以求出
。最小覆盖及其构造
对于一个函数依赖集 F,如果和它等价的函数依赖集 F’ 满足下面三个条件,则称为是 F 的最小覆盖(也叫 最小依赖集):
-
Eval:Eval是用Swift编写的轻量级解释器框架,可在运行时评估表达式-源码
2021-01-28 14:58:40:nerd_face: 另一方面,创建自定义运算符和数据类型可能需要多花几行-根据您的需要 :white_heavy_check_mark: 易于使用的API-只需几秒钟即可创建新的语言元素 :recycling_symbol_selector: 表达式的计算结果必须... -
你必须知道的495个C语言问题
2015-10-16 14:14:286.22 如何在一个文件中判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存分配 ... -
你必须知道的495个C语言问题(中文高清版)
2013-03-20 13:28:286.22 如何在一个文件中判断声明为extern的数组的大小(例如,数组定义和大小在另一个文件中)?sizeof操作符似乎不行。 6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存... -
你必须知道的495个C语言问题.[美]Steve Summit(带详细书签).pdf 压缩版
2018-04-08 02:26:501.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 42 声明问题 43 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 43 *1.26 main的正确定义... -
[你必须知道的495个C语言问题]人民邮电出版社
2012-08-18 19:02:281.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 声明问题 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 *1.26 main的正确定义是... -
《你必须知道的495个C语言问题》
2010-03-20 16:41:181.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 1.25 函数只定义了一次,调用了一次,但编译器提示非法重声明了。 14 *1.26 main的正确... -
你必须知道的495个C语言问题(高清版)
2010-03-31 16:24:092.22 有没有一种自动方法来跟踪联合的哪个域在使用? 30 枚举 31 2.23 枚举和一组预处理的#define有什么不同? 31 2.24 枚举可移植吗? 31 2.25 有什么显示枚举值符号的容易方法吗? 31 位域 31 2.26 ... -
LINGO软件的学习
2009-08-08 22:36:50LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: ... -
你必须知道的495个C语言问题.pdf
2013-01-20 14:30:542.22 有没有一种自动方法来跟踪联合的哪个域在使用? 枚举 2.23 枚举和一组预处理的#define有什么不同? 2.24 枚举可移植吗? 2.25 有什么显示枚举值符号的容易方法吗? 位域 2.26 一些结构声明中的这些冒号和数字是... -
[你必须知道的495个C语言问题]人民邮电出版社.扫描版.pdf
2011-10-01 21:39:522.22 有没有一种自动方法来跟踪联合的哪个域在使用? 枚举 2.23 枚举和一组预处理的#define有什么不同? 2.24 枚举可移植吗? 2.25 有什么显示枚举值符号的容易方法吗? 位域 2.26 一些结构声明中的这些冒号和数字是... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷1
2010-06-23 17:33:55还将使用引用变量,它们提供了另一种将信息传递给函数的方式。默认参数使函数能够自动为函数调 用中省略的函数参数提供值。函数重载使程序员能够创建多个参数列表不同的同名函数。类设计中经常使 用这些特性。另外... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷2
2010-06-23 17:47:19还将使用引用变量,它们提供了另一种将信息传递给函数的方式。默认参数使函数能够自动为函数调 用中省略的函数参数提供值。函数重载使程序员能够创建多个参数列表不同的同名函数。类设计中经常使 用这些特性。另外... -
最权威的C++教程_C++_Primer_Plus中文第五版+C++_Primer中文第四版(都含源码+习题)(共4分卷)分卷3
2010-06-23 18:03:39还将使用引用变量,它们提供了另一种将信息传递给函数的方式。默认参数使函数能够自动为函数调 用中省略的函数参数提供值。函数重载使程序员能够创建多个参数列表不同的同名函数。类设计中经常使 用这些特性。另外... -
Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好
2011-01-28 17:02:08my2 为我们新建对话框类的另一个对象,但是my2 我们还没有定义,所以 在widget.h 文件中添加相应代码,如下,先加入头文件,再加入my2 的定义语 句,这里我们将其放到private 里,因为一般的函数都放在public 里,而... -
SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典)--随书源代码
2013-02-06 12:04:004.6 实体中的多值依赖 124 4.6.1 第四范式 124 4.6.2 第五范式 135 4.7 非规范化 136 4.8 最佳实践 136 4.9 总结 137 4.10 额外的例子 137 4.11 本书迄今为止所讲述的故事 142 第5章 实现基础的表结构 144 ... -
ExtAspNet v2.2.1 (2009-4-1) 值得一看
2010-04-01 09:41:27-修正Tree控件的一个BUG(定义Mappings属性时)。 +PageManager.Instance应该存在于HttpContext.Current,而不是一个全局变量。 -这个BUG导致Asp.net compatibility中的示例无法完成,现在已经修正。 +去除... -
C#微软培训教材(高清PDF)
2009-07-30 08:51:17C#--微软.NET的第一语言 本书着重介绍语言本身,比较少涉及应用,不错的入门书,从头讲起,不怕不明白。 <<page 1>> page begin==================== 目 目目 目 录 录录 录 第一部分 C#语言概述.4 ... -
VC之美化界面篇本文专题讨论VC中的界面美化,适用于具有中等VC水平的读者。读者最好具有以下VC基础:
2009-06-17 10:17:32程序的功能如何如何强大是一回事,它的用户界面则是另一回事。千万不要忽视程序的用户界面,因为它是给用户最初最直接的印象,丑陋的界面、不友好的风格肯定会影响用户对软件程序的使用。 “受之以鱼,不若授之以渔... -
C#微软培训资料
2014-01-22 14:10:1714.4 继承中关于属性的一些问题.169 14.5 小 结 .172 第四部分 深入了解 C#.174 第十五章 接 口 .174 15.1 组件编程技术 .174 15.2 接 口 定 义 .177 15.3 接口的成员 .178 15.4 接口的实现 .182 ... -
基于AT89S52 单片的频率计
2010-01-04 08:47:37一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将 结果送去显示。这样无论采用何种方式,只要完成一次测量即可,频率计自动开 始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程... -
你必须知道的495个C语言问题(PDF)
2009-09-15 10:25:47老资源。 目录 1 声明和初始化1 1.1 我如何决定使用那种整数类型? . . . ....1.2 64 位机上的64 位...5.11 为什么有那么多关于空指针的疑惑?为什么这些问题如此经常地 出现? . . . . . . . . . . . . . . . . . . . ... -
计算机二级公共基础知识
2011-04-30 14:00:09一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存储结构。 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储... -
软件工程-理论与实践(许家珆)习题答案
2011-01-12 00:49:42多视点方法也是管理需求变化的一种新方法,它可以用于管理不一致性, 并进行关于变化的推理。 2. M公司的软件产品以开发实验型的新软件为主。用瀑布模型进行软件开发已经有近十年了,并取得了一些成功。若你作为一... -
php高级开发教程说明
2008-11-27 11:39:22前面提到的每一种语言代表一种解决问题的特定方法,这些问题多属于具有特殊要求的某 一特殊种类。因为这些语言集中在一个有限的应用领域内,他们的成功性也限制在这些领域。 像C和P a s c a l这样的语言变得如此流行... -
java 面试题 总结
2009-09-16 08:45:34重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,... -
C语言程序设计标准教程
2009-05-22 18:41:51也就是说,在一个函数的函数体内, 不能再定义另一个函数, 即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。习惯上把调用者称为主调函数。 函数还可以自己调用自己,称为递归调用。main 函数是主函数,... -
软件工程知识点
2012-12-02 21:34:25甘特图表是一种常用的项目进度图表,可以直观地描述项目任务的活动分解,以及活动之间的依赖关系、资源配置情况、各项活动的进展情况等。 四、软件需求分析 1.需求分析任务 (1)用户需求 用户需求是用户关于软件...
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
SonarQube的HelloWorld
-
激光照射薄膜靶的微微秒照相
-
电商PC前后端分离项目Spring Boot后台实战第一期
-
TiKi7.github.io-源码
-
语义网的模糊本体研究
-
epam_python_autumn_2020:EPAM SPb秋季python课程-源码
-
用微服务spring cloud架构打造物联网云平台
-
Python列表
-
小秘密(学习)
-
解码:这是DECODE实现的原始仓库(由github.comTuragaLabDECODE镜像)-源码
-
培训:培训基准的参考实施-源码
-
深度学习认知计算综述
-
使用Joblib并行运行Python代码
-
asd
-
NFS 实现高可用(DRBD + heartbeat)
-
白话:java从入门到实战
-
由热应力决定的高功率连续Nd:YAG激光器的最大泵浦功率
-
SecureCRT 连接 GNS3/Linux 的安全精密工具
-
区块链DEFI系统软件开发的重要训练阶段