数据库讲解---(关系规范化)【二】

news2024/11/25 22:57:25

目录

前言

一.函数依赖相关

1.1函数依赖集F的逻辑蕴涵

1.2函数依赖集闭包

1.3函数依赖的推理规则

1.3.1独立推理规则

自反律

增广律

传递律

1.3.2其他推理规则

合并规则

分解规则

伪传递规则

二.数据集闭包与F逻辑蕴涵的充要条件

2.1属性集闭包

2.2F逻辑蕴涵的充要条件

2.3求属性集闭包算法

2.4例题

2.5算法终止条件

三.码值理论

3.1函数依赖集F的属性分类

 3.2(L、R、N、LR)四类属性的定理

 3.3例题

四.函数依赖集的等价和最小函数依赖集

4.1函数依赖集的覆盖与等价

4.2最小函数依赖集的定义

4.3求最小函数依赖集例题

五.关系模式的分解方法

5.1模式分解的概念

5.2分解的无损连接性判定(无损分解)

 5.3分解的函数依赖保持性判定

5.4满足3NF的函数依赖保持分解算法

5.5满足3NF的函数依赖保持和无损连接的分解算法

前言

数据库讲解---(关系规范化)【一】_关系数据库规范化-CSDN博客

一.函数依赖相关

1.1函数依赖集F的逻辑蕴涵

对于一个函数依赖F的关系模式R(U,F),其任何一个关系r,若函数依赖X->Y都成立,则称F逻辑蕴涵X->Y

1.2函数依赖集闭包

所有被一个已知函数依赖集F逻辑蕴涵的那些函数依赖的集合为F的闭包,记为F+

1.3函数依赖的推理规则

1.3.1独立推理规则

  • 自反律

如果Y包含于X,则X->Y

  • 增广律

如果Z包含于W,且X->Y,则XW->YZ

  • 传递律

如果X->Y且Y->Z,则X->Z

1.3.2其他推理规则

  • 合并规则

X->YX->Z,有X->YZ

  • 分解规则

X->YZ包含于Y,有X->Z

  • 伪传递规则

X->YWY->Z,有XW->Z

二.数据集闭包与F逻辑蕴涵的充要条件

2.1属性集闭包

X_{F}^{+}属性集X关于函数依赖集F闭包

换句话说,属性XF上的属性集闭包就是属性X能够推导出来的所有属性的集合

2.2F逻辑蕴涵的充要条件

于是判断某一函数依赖X->Y能否由F根据Armstrong公理导出的问题,就转换为求:X_{F}^{+}

2.3求属性集闭包算法

求:X_{F}^{+}

属性集X关于U上的函数依赖集F闭包X_{F}^{+}

步骤

PS:“该算法计算过程是有限的,经过有限次循环后,一定会得到一个不会再次迭代的结果

2.4例题

解法

  1. X_{F}^{0} = X = BD
  2. F中搜寻所有仅由X_{F}^{0}中属性决定的函数依赖,有一个:“D->EG”,注意“ACD->B”不能算作,因为其中还包含了“AC”,此时的X_{F}^{1} = BDEG
  3. F(此时的F中已经不包含“D->EG”了)中搜寻所有仅由X_{F}^{1}中属性决定的函数依赖,有一个:“BE->C”,此时的X_{F}^{2} = BCDEG
  4. F(此时的F中已经不包含“BE->C”了)中搜寻所有仅由X_{F}^{2}中属性决定的函数依赖,有三个:“C->A、BC->D、CG->BD”,此时的F_{X}^{3} = ABCDEG

此时F_{X}^{3}已经包含了F中所有属性可以直接退出算法此时的F_{X}^{3}就是最后所求X_{F}^{+}

2.5算法终止条件

  • X_{i}^{i+1} = X^{i}
  • 发现X^{i}包含全部属性
  • F中的函数依赖的右边属性中,再也找不到X^{i}中未出现过的属性
  • F中未用过的函数依赖的左边属性中已没有X^{i}的子集

三.码值理论

3.1函数依赖集F的属性分类

  • L类:仅出现在F的函数依赖左边的属性
  • R类:仅出现在F的函数依赖右边的属性
  • N类:在F的函数依赖左右两边均未出现的属性
  • LR类:在F的函数依赖左右两边均出现的属性

 3.2(L、R、N、LR)四类属性的定理

  1. 对于给定关系模式R及其函数依赖集F,若X是L类属性,则X必是R的候选码的成员
  2. 对于给定关系模式R及其函数依赖集F,若X是N类属性,则X必是R的候选码的成员
  3. 对于给定关系模式R及其函数依赖集F,若X是R类属性,则X不在任何候选码中
  4. 对于给定关系模式R及其函数依赖集F,若X是L类或N类属性组成的属性集,且X^{+}包含R的全部属性,则X是R的唯一候选码

 3.3例题

解题方法

  • 在做这种题时,我们要首先写出R的L类属性和N类属性,因为只有这两个属性才是候选码中成员
  • 在这道题中,L类属性有:“CE”,N类属性有:“P
  • 因此X为:“CEP”,而X^{+}为“ABCDEPX^{+}包含了R的全部属性,因此“CEP”是R的唯一候选码

四.函数依赖集的等价和最小函数依赖集

4.1函数依赖集的覆盖与等价

  • F和G是依赖集,若F^{+}=G^{+},则称F与G等价,记为F\equivG
  • F和G等价充分必要条件是:“F\subseteqG^{+},且G\subseteqF^{+}

检查两个函数依赖集F合G是否等价的方法

  1. 检查F中的每个函数是否属于G^{+},若全部满足,则F\subseteqG^{+}。例如:“若有X->Y\inF,则计算X_{G}^{+},若果Y\subseteqX_{G}^{+},那么X->Y\inG^{+}
  2. 检查是否G\subseteqF^{+}
  3. 如果G\subseteqF^{+},且F\subseteqG^{+},则F与G等价

4.2最小函数依赖集的定义

如果函数依赖集F满足下列条件,则称F是一个极小函数依赖集最小覆盖

  • F中每一个函数依赖的右边都是单个属性
  • 对F中任一函数依赖X->A,F-(X->A)都不与F等价
  • 对于F中的任一函数依赖X->A,{F-(X->A)}∪{Z->A}都不与F等价,Z为X的任一子集

如果函数依赖集F与某个最小函数依赖集Fm等价,则称Fm是F的最小覆盖或Fm是F的最小依赖集

最小函数依赖集的求解算法

  1. 检查F中的每个函数依赖X->A,若A = A1,A2,....,则根据分解规则,用X->A_{i}(i=1,2,3...,k)取代X->A
  2. 检查F中的每个函数依赖集X->A,令G = F - (X->A),若有A\inX_{G}^{+},则从F中去掉此函数依赖
  3. 检查F中各函数依赖X->A,设X = B1,B2,....,Bm,检查B_{i}(i=1,2,3,...,m),当A\in(X-B_{i})时,即以X-B_{i}替换X

4.3求最小函数依赖集例题

问题

将下列函数依赖集F划分为最小函数依赖集

解答

  1. 消去F中冗余的函数依赖,即可求得最小函数依赖集
  2. 考察A->B,将A->B从F中删除,令X=A,则X^{+}=AC,因为B不属于X^{+},所以A->B不冗余,保留
  3. 考察B->A,将B->A从F中删除,令X=B,则X^{+}=ABC,因为A属于X^{+},所以B->A冗余,删除
  4. 考察B->C,将B->C从F中删除,令X=B,则X^{+}=B,因为C不属于X^{+},所以B->C不冗余,保留
  5. 考察A->C,将A->C从F中删除,令X=A,则X^{+}=ABC,因为C属于X^{+},所以A->C冗余,删除
  6. 考察C->A,将C->A从F中删除,令X=C,则X^{+}=C,因为A不属于X^{+},所以C->A不冗余,保留
  7. 因此可以得到F2 = {A->B,B->C,C->A}
  8. 判断每个函数依赖左边是否有冗余属性(即判断左边属性是否仅为单属性)
  9. 如果首先考察B->C,那么求得F3 = {A->B,B->A,A->C,C->A}也是F的最小覆盖,因此可知函数依赖集

五.关系模式的分解方法

5.1模式分解的概念

5.2分解的无损连接性判定(无损分解)

无损分解的判定算法

输入

一个关系模式R(A1,A2,...,An),R上的一个函数依赖集F以及R的一个分解ρ = {{R1,F1},{R2,F2},...,{Rk,Fk}}

输出

确定ρ是否是一个连接不失真分解

方法

  1. 构造一个n列k行表,第i对应于R_{i},第j列对应于属性A_{j}
  2. 填表:若A_{j}\inR_{i}则第i行第j列上填入a_{j},否则填入b_{ij}
  3. 修改表:注意检查F中的每一个函数依赖X->Y,如果在对应于X的那些属性的所有列上X的符号相同,就使这些符号相同的行中对应于Y的那些属性的那些列上的符号也相同。即如果其中有a_{j},则将b_{ij}改为a_{j},若没有a_{j},则将它们全部改为b_{ij}
  4. 反复进行(3),如发现某一行变成a1,a2,....,ak,则此分解ρ具有连接不失真性

例题

解法

  1. 首先构造初始表,并填表:
  2. 逐一考察函数依赖并修改表
  3. S->D,可以将b_{36}改为a_{6}
  4. I->B,b_{31}改为a_{1}
  5. IS->Q,因为IS上没有值相等的行,所以不用修改表
  6. B->O,将b_{22}b_{32}都改为a_{2}
  7. 此时表中出现了“a1、a2、a3、a4、a5、a6”的行,所以该分解具有无损连接性

 5.3分解的函数依赖保持性判定

保持依赖的判定算法

  • 检验任一个函数依赖X->Y\inF是否可以用G根据Armstrong公理导出,即Y\subseteqX_{G}^{+}是否成立
  • 检验任一个函数依赖X->Y\inG是否可以用F根据Armstrong公理导出,即Y\subseteqX_{F}^{+}是否成立
  • 若上述Y\subseteqX_{G}^{+}与Y\subseteqX_{F}^{+}均成立,则函数保持依赖 

例题

解法

5.4满足3NF的函数依赖保持分解算法

例题

解法

5.5满足3NF的函数依赖保持和无损连接的分解算法

例题

解法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1797248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Kubernetes和DeepSpeed进行分布式训练的实战教程

目录 ​编辑 一、前期准备 二、部署和配置训练任务 三、编写和运行训练代码 四、监控和调优 五、代码实现 5.1. Dockerfile 5. 2. DeepSpeed 配置文件 (ds_config.json) 5.3. Kubernetes 部署文件 (deployment.yaml) 5.4. PyTorch 训练脚本 (train.py) 注意事项&am…

HTML5常用标签表单from

form表单标签 <!-- form表单其实就是一种&#xff1a;客户端和服务端数据交流一种方式机制。1&#xff1a; 服务端&#xff0c;提供数据接受地址&#xff08;gin/beego/inris&#xff09;比如&#xff1a;http://localhost:8080/toLogin2: 因为浏览器&#xff0c;在提交数据…

算法类学习笔记 —— 典型卷积神经网络

文章目录 介绍LetNet填充&步长&通道数填充步长通道数卷积层池化层全连接层激活函数常见的激活函数Sigmoid函数tanh函数ReLU激活函数LReLUPReLUSwish softmax分类 AlexNetVGGNetGoogleNetResNetDenseNetSENet 介绍 现有的卷积神经网络的结构可以按照下图机型分类&#x…

沃可趣产品增PC版,员工社区登上大屏幕

作为企业内部沟通与协作的枢纽&#xff0c;员工互动社区在促进信息流通、增强团队凝聚力方面扮演着关键角色。 沃可趣&#xff0c;这一匠心打造的员工互动社区&#xff0c;融汇了工作、学习与社交的精髓&#xff0c;为职场人构筑了一站式互动天地。 为了满足更广泛的工作场景…

基于Python+FFMPEG环境下载B站歌曲

题主环境 WSL on Windows10 命令如下 # python3.9 pip install --pre yutto yutto --batch https://www.bilibili.com/video/BV168411o7Bh --audio-only ls | grep aac | xargs -I {} ffmpeg -i {} -acodec libmp3lame {}.mp3WinAmp

[word] word图片环绕方式怎么设置? #经验分享#笔记#媒体

word图片环绕方式怎么设置&#xff1f; 在文档中图片排版是很常见的&#xff0c;在图片排版的过程中我们如何利用小技巧快速处理呢&#xff1f;下面给大家分享word图片环绕方式怎么设置的操作方法&#xff0c;一起来学习下吧&#xff01; 1、修改图片环绕方式 在Word文档中图…

JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测

JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测 目录 JCR一区级 | Matlab实现TCN-BiLSTM-MATT时间卷积双向长短期记忆神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.JMatlab实现TCN-BiLSTM-MATT时间卷积双…

AI辅助论文:探索AI查重与AI降重技术

在科研领域&#xff0c;AI写作工具如同新一代的科研利器&#xff0c;它们能够极大提高文献查阅、思路整理和表达优化的效率&#xff0c;本质上促进了科研工作的进步。AI写作工具不仅快速获取并整理海量信息&#xff0c;还帮助我们精确提炼中心思想&#xff0c;显著提升论文写作…

使用Obfuscar 混淆WPF(Net6)程序

Obfuscar 是.Net 程序集的基本混淆器&#xff0c;它使用大量的重载将.Net程序集中的元数据&#xff08;方法&#xff0c;属性、事件、字段、类型和命名空间的名称&#xff09;重命名为最小集。详细使用方式参见&#xff1a;Obfuscar 在NetFramework框架进行的WPF程序的混淆比较…

电商数据采集决策智慧:深度解析数据采集与应用||电商API数据采集接口的接入与应用

引言 在数字化时代&#xff0c;数据已成为电商企业最宝贵的资产之一。通过有效的数据采集&#xff0c;企业能够洞察市场动态、理解消费者需求、优化运营策略&#xff0c;从而在激烈的市场竞争中脱颖而出。本文将深入探讨电商数据采集的重要性、常用方法以及应用实践。 一、电…

无锡哲讯携手SAP,赋能装备制造业数字化转型

在当今快速发展的工业4.0时代&#xff0c;装备制造业作为国民经济的重要支柱&#xff0c;正面临着前所未有的机遇与挑战。无锡哲讯智能科技有限公司凭借其深厚的行业经验和专业的SAP实施能力&#xff0c;为装备制造业提供全面的数字化解决方案&#xff0c;助力企业实现智能化、…

背包问题(第k优解问题)

这篇博客先说一道洛谷蓝题&#xff08;实际难度其实可能也就是在橙题左右&#xff0c;难度不大&#xff0c;请放心食用&#xff09; 1.背包问题的第k优解 首先&#xff0c;我们知道背包问题的最优解&#xff0c;我们可以通过状态转移方程来求出最优解 状态转移方程&#xff…

创业项目TensorLink开源了,没有显卡也可以玩大模型、SD。

显卡是很贵的、也是稀缺的。但是AI又是很火的&#xff0c;每个人都不想错过这个机会&#xff0c;公司也一样。 假设你是公司或者团队的负责人&#xff0c; 为了拥抱AI&#xff0c;先要解决显卡算力问题。如果要给每个人都配置一个显卡&#xff0c;哪怕是消费卡&#xff0c;也是…

Git - 详解 创建一个新仓库 / 推送现有文件夹 / 推送现有的 Git 仓库 到私有Gitlab

文章目录 【推送现有文件夹】详细步骤指令说明Git 全局设置设置Git全局用户名设置Git全局电子邮件地址 推送现有文件夹1. 进入现有文件夹2. 初始化Git仓库并设置初始分支为main3. 添加远程仓库4. 添加所有文件到暂存区5. 提交更改6. 推送代码到远程仓库并设置上游分支 创建一个…

麦克风什么牌子的音质效果好?揭秘最好的无线麦克风品牌排行

最近几年可以说全民短视频也不为过&#xff0c;越来越多人开始通过用手机拍摄短视频、vlog记录自己的生活&#xff0c;而领夹式无线麦克风的需求也开始激增。毕竟一个好的视频除了要有巧妙的构思和清晰稳定的拍摄外&#xff0c;干净的声音也是必不可少的部分。 要知道短视频归根…

pytorch构建模型训练数据集

pytorch构建模型训练数据集 pytorch构建模型训练数据集1.AlexNet:1.1.导入必要的库&#xff1a;1.2.数据预处理和增强&#xff1a;1.3.加载数据集&#xff1a;1.4.划分测试集和训练集&#xff1a;1.5.创建数据加载器&#xff1a;1.6.加载AlexNet模型&#xff1a;1.7.修改模型以…

【Python报错】已解决AttributeError: list object has no attribute ’shape‘ ( Solved )

解决Python报错&#xff1a;AttributeError: ‘list’ object has no attribute ‘shape’ (Solved) 在Python中&#xff0c;AttributeError表明你试图访问的对象没有你请求的属性或方法。如果你遇到了AttributeError: list object has no attribute shape的错误&#xff0c;这…

OpenMV学习笔记3——画图函数汇总

画图&#xff0c;即在摄像头对应位置画出图形&#xff0c;对于需要反馈信息的程序来说很直观。就如上一篇文章颜色识别当中的例子一样&#xff0c;我们在识别出的色块上画出矩形方框&#xff0c;并在中间标出十字&#xff0c;可以直观的看到OpenMV现在识别出的色块。 目录 一…

【机器学习】Python与深度学习的完美结合——深度学习在医学影像诊断中的惊人表现

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、深度学习在医学影像诊断中的突破1. 技术原理2. 实际应用3. 性能表现 三、深度学习在医学影像诊断中的惊人表现1. 提高疾病诊断准确率2. 辅助制定治疗方案 四、深度学习对医疗行业的影响和推动作用 一、引言 随着…

冯喜运:6.7今日外汇黄金原油走势分析及日内操作策略

【黄金消息面分析】&#xff1a;美国初请失业金人数超预期&#xff0c;市场对美联储9月降息预期升温&#xff0c;全球降息潮起&#xff0c;黄金市场受支撑。北京时间本周四&#xff0c;美国劳工部公布的数据显示&#xff0c;截至6月1日当周初请失业金人数增加至22.9万人&#x…