数据库SQL——函数依赖

news/2024/11/15 20:26:18/

        在现实世界中数据通常有各种各样的约束。一个关系的满足所有这种真实世界约束的实例被称为该关系的合法实例。

码和函数依赖

1.码

一些最常用的真实世界的约束类型可以被形式化的表示为超码是能够一起来唯一标识出关系中的一个元组的一个或多个属性的合集。换句话说,如果在关系r(R)的任何合法实例中,不存在两个元组在属性集K上具有相同的值,即一个K能唯一标识出一个元组。

2.函数依赖

        设关系R(U,F),其中U是属性集,F是函数依赖集。

        对于U中的任意两个子集X和Y,如果对于关系R中的任意两个元组,它们在X上的属性值相同,则它们在Y上的属性值也必须相同。

        则称“X函数决定Y”或“Y函数依赖于X”,记作X→Y。

其实就是一个属性能决定另一个属性。

函数依赖的例子
AB
12
14
27
49

在这个例子中B->A成立。A->B不成立
 

函数依赖的类型:
  1. 平凡函数依赖:如果Y是X的子集,则X→Y是平凡的函数依赖。这意味着,如果一个属性集Y完全包含在另一个属性集X中,那么X的值自然能唯一确定Y的值。换句话说,所有的样本不需要评估就可以完成依赖,比如:name->name,或者ID,name->name,   即后边的属性通常是前边属性的子集
  2. 非平凡函数依赖:如果Y不是X的子集,则X→Y是非平凡函数依赖。这种依赖关系表明,X的值能唯一确定Y的值,但Y并不包含在X中。
进一步分类:
  1. 完全函数依赖:如果对于X的任何真子集X'(即X的一部分属性),都不满足X'→Y,则称Y对X完全函数依赖。换句话说,只有X的所有属性一起才能唯一确定Y的值。记作在这里插入图片描述
  2. 部分函数依赖:如果X的某个真子集X'可以决定Y,则称Y对X部分函数依赖。这表示,X的一部分属性就足以唯一确定Y的值。记作在这里插入图片描述
  3. 传递函数依赖:如果X→Y,Y→Z,但Y不依赖于X(即Y不是X的子集或X不能唯一确定Y),则称Z对X传递函数依赖。这表示,X的值能间接地通过Y唯一确定Z的值。记作在这里插入图片描述

三范式

        范式是数据库设计中的一种规范化标准,用于指导如何设计一个结构良好的数据库表。三范式(3NF)是其中的一种重要范式,它要求关系模式满足特定的条件以确保数据的规范化和一致性。

  1. 第一范式(1NF):要求关系模式中的每一个属性都是原子的,即不可再分的。这是关系模式规范化的最低要求。
  2. 第二范式(2NF):在满足第一范式的基础上,要求关系模式中的每一个非主属性都完全函数依赖于主键。这意味着,如果一个属性不是主键的一部分,那么它必须完全依赖于主键,而不能部分依赖于主键的某个子集。通过消除部分函数依赖,第二范式有助于减少数据冗余和避免插入、删除、修改异常。
  3. 第三范式(3NF):在满足第二范式的基础上,要求关系模式中的每一个非主属性都不传递依赖于主键。这意味着,如果一个属性依赖于另一个属性,而那个属性又依赖于主键,则这个属性应该被分解出来形成一个新的关系模式。通过消除传递函数依赖,第三范式进一步减少了数据冗余和提高了数据的完整性。

B-C范式:

        BC范式要求,在关系模式R中,如果每一个非平凡多值依赖X→→Y(X,Y均不为空)的X都含有候选键,则称R满足BC范式。换句话说,只要属性或属性组A能够决定任何一个属性B,则A的子集中必须有候选键(或者说A必须为超键)。必须包含函数依赖,其中决定因素必须含有码 。


http://www.ppmy.cn/news/1547269.html

相关文章

化学反应数据库合集!Reaxys、CAS SciFindern领衔

化学反应数据库对于实验人员设计合成路线具有很高的价值,尤其在有机化学领域中显得尤为重要。 化学反应数据库作为化学研究和工业应用中不可或缺的资源,不仅极大地提升了实验人员设计合成路线的效率,促进了化学知识的积累与传承,…

uni-app请求方法封装⑦

文章目录 十一、请求方法封装实现流程一、定义公共的 http 请求方法二、创建接口文件进行公共方法的调用三、方法挂载到 Vue 原型上,供每个界面进行使用四、页面/组件内部进行方法的调用 十一、请求方法封装 为了减少代码的冗余,优化代码的可读性&#x…

什么是UDP和TCP?有什么区别?应用场景分别都有哪些?

UDP(用户数据报协议)和TCP(传输控制协议)都是互联网协议套件的一部分,用于在网络中传输数据。它们都位于OSI模型的传输层,但两者在工作方式、可靠性和使用场景上存在显著差异。 UDP (User Datagram Protoc…

Linux各种解压命令汇总

1 常见Linux压缩包格式 .tar.gz \ .zip \.7z \.xz \.rar \ .bzip2 最常用的是.tar.gz,原因:linux各种版本标准压缩方式,几乎各大版本可以直接用; 7Z和ZIP要另外下载单独的软件,才能压缩和解压; 【注意】…

「QT」文件类 之 QIODevice 输入输出设备类

✨博客主页何曾参静谧的博客📌文章专栏「QT」QT5程序设计📚全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

制作图片木马

图片文件通常有称作幻数的头字节,我们来看一下几种图片文件的幻数: (注意!下面是二进制而不是文本格式的数据) 通过检查头几位字节,可以分辨是否是图片文件! 通过检查头几位字节,可…

数据库基础(11) . SQL脚本

1.概述 SQL脚本 : 是由一系列SQL命令组成在一起执行以完成特定的任务。 SQL脚本通常用于执行批量操作,如创建数据库对象(表、视图、存储过程等)、插入数据、执行批处理更新等。 1.1.标识符命名 对象起名(变量、常量、函数等&a…

llama factory lora 微调 qwen2.5 7B Instruct模型

项目背景 甲方提供一台三卡4080显卡 需要进行qwen2.5 7b Instruct模型进行微调。以下为整体设计。 要使用 LLaMA-Factory 对 Qwen2.5 7B Instruct模型 进行 LoRA(Low-Rank Adapters)微调,流程与之前提到的 Qwen2 7B Instruct 模型类似。LoRA …