当前位置: 首页 > article >正文

数据库SQL——函数依赖

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

码和函数依赖

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.kler.cn/a/394190.html

相关文章:

  • Vim 编辑器详细教程
  • springboot使用自定义的线程池 完成 多线程执行网络请求,返回数据后,统一返回给前段
  • VSCode 插件开发实战(七):插件支持了哪些事件,以及如何利用和监听这些事件
  • MySQL索引为什么是B+树
  • 高强度螺栓等级划分
  • vue3封装而成的APP ,在版本更新后,页面显示空白
  • python基础大杂烩
  • 机器学习 贝叶斯公式
  • 设计模式之单例模式和工厂模式(代码+举例)
  • Android 10 默认授权安装app运行时权限(去掉运行时所有权限授权弹窗)
  • Python简单文件操作day9
  • RocketMQ学习笔记
  • vue3 中那些常用 靠copy 的内置函数
  • ChatGPT提问prompt范例模板
  • MySQL高级(二):一条更新语句是如何执行的
  • Flutter:input输入框
  • DOCKER 镜像基础命令
  • Windows 云服务器搭建 FTP 服务
  • 深度学习之全连接、局部连接、全卷积与局部卷积
  • 大数据-224 离线数仓 - 数仓 技术选型 版本选型 系统逻辑架构 数据库命名规范
  • CTF攻防世界小白刷题自学笔记13
  • Mybatis中批量插入foreach优化
  • Jmeter基础篇(22)服务器性能监测工具Nmon的使用
  • zookeeper之节点基本操作
  • Spark 读取 HDFS 文件时 RDD 分区数的确定原理与源码分析
  • ubuntu[无桌面]——使用FileZilla连接本地和虚拟机实现文件共享