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

目录

前言

一.函数依赖相关

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.mzph.cn/web/22426.shtml

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

相关文章

【uni-app】申请高德地图key,封装map.js,实现H5、iOS、Android通过getlocation获取地图定位信息

map组件基础使用 <template><view class"contact"><image class"img" :src"formData.headImg"></image><view class"info"><view click"callPhone">联系电话&#xff1a;{{formData.p…

线性代数|机器学习-P6正定和半正定矩阵

文章目录 1. 正定矩阵的判定标准2. 非正定矩阵3. 能量方程3. 正定方程4. 半正定矩阵 1. 正定矩阵的判定标准 目前我们有 5 种方法判断矩阵是否为正定矩阵&#xff1a; 所有的特征值大于零&#xff1a; λ i > 0 \lambda_i>0 λi​>0对于所有的非零向量x&#xff0c;…

RK3588 AB镜像升级学习(一)

参考资料&#xff1a;Android A/B 系统_洛奇看世界的博客-CSDN博客 一、AB镜像分区 区分了OTA升级镜像的两种方式&#xff1a; 传统的升级方式&#xff1a;设备有Android系统和Recovery系统&#xff0c;如果Android需要升级时&#xff0c;把内容存到cache分区。重启后进入re…

P3. 创建个人中心页面

P3. 创建个人中心页面 0 概述Tips1 个人中心页面1.1 创建 Bot 表及 pojo, mapper1.2 实现 Bot 增删改查的 API1.3 实现个人中心页面前端 0 概述 主要介绍了一下添加一个表(类)&#xff0c;及其CRUD的前端和后端的实现方式&#xff0c;介绍的是通用的方法。 后端的CRUD很好写&am…

5 - 无效的推文(高频 SQL 50 题基础版)

5. 无效的推文 知识点&#xff1a;计算字符长度 -- 查询所有无效推文的编号&#xff08;ID&#xff09; -- CHAR_LENGTH() 或 LENGTH() 函数来计算列中字符串的字符数。 -- 这两个函数的区别在于处理非 ASCII 字符时的行为&#xff1a; -- CHAR_LENGTH() 返回字符串的字符数&a…

可能是当下最能打的MCU图形库:LVGL

在讨论图形用户界面&#xff08;GUI&#xff09;库时&#xff0c;很多人会想到emWin、TouchGFX以及QT等。这些库虽然功能强大&#xff0c;但它们普遍存在一个共同的问题&#xff1a;对资源的需求较高&#xff0c;不适用于资源有限的微控制器&#xff08;MCU&#xff09;。有没有…

Spring Boot既打jar包又打war包如何做

你好&#xff0c;我是柳岸花开。 引言 在软件开发中&#xff0c;根据不同的部署需求&#xff0c;我们可能需要将应用打包成不同的格式。Spring Boot作为目前流行的Java应用开发框架&#xff0c;提供了一种简单的方式来打包应用。本文将介绍如何利用Maven Profiles在Spring Boot…

【linux】swap学习

在 Linux 系统中&#xff0c;swap 是一种用于扩展系统内存的技术。当物理内存&#xff08;RAM&#xff09;不足时&#xff0c;系统会将一部分不常用的内存数据移至 swap 空间&#xff0c;从而释放物理内存供其他程序使用。Swap 空间可以是一个单独的分区&#xff08;swap 分区&…

交互规范:苹果 iOS 11 设计规范

文件格式&#xff1a;PDF&#xff08;请与班主任联系获取原型文档&#xff09; 文件名称&#xff1a;苹果 iOS 11 设计规范 文件大小&#xff1a;29.2 MB 文档内容介绍 免费领取资料 添加班主任回复 “210421” 领取

数据结构_手撕七大排序(快排,归并,堆排,希尔,选择,插入,冒泡)

✨✨所属专栏&#xff1a;数据结构✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序…

企业数据安全管理容易忽视的关键点:云存储权限管控

云存储已经广泛应用于企业用户、教育领域、医疗领域以及政府和公共服务部门。具体应用场景包括文件共享、数据备份、在线课程、教学资源库、电子病历、医学影像、实验室数据、政务数据的集中管理和共享等。 云存储的优势非常明显&#xff1a; 可扩展性&#xff1a;云存储空间可…

Nginx漏洞解析及复现

Nginx漏洞 Nginx能做到正向代理、反向代理、负载均衡、HTTP服务器等&#xff0c;强大的功能不言而喻&#xff0c;但也伴随着使用 上的风险&#xff0c;深入理解Nginx的漏洞有助于创建安全的业务系统。 Nginx解析漏洞 漏洞原理 Nginx的解析漏洞的出现和Nginx的版本没有关系&…

基于深度学习的中文标点预测模型-中文标点重建(Transformer模型)【已开源】

基于深度学习的中文标点预测模型-中文标点重建&#xff08;Transformer模型&#xff09;提供模型代码和训练好的模型 前言 目前以深度学习对文本自动添加标点符号研究很少&#xff0c;已知的开源项目并不多&#xff0c;详细的介绍就更少了&#xff0c;但对文本自动添加标点符号…

三菱MR-J4系列伺服驱动器E7.1和32.3故障报警处理总结

三菱MR-J4系列伺服驱动器E7.1和32.3故障报警处理总结 三菱MR-J4系列伺服驱动器出现报警,故障代码为:E7.1和32.3,查阅手册可以看到E7.1和32.3的报警解释信息, 如下图所示,此时简单运动控制模块上的ERROR灯亮, 如下图所示,用GX WORKS3打开备份程序,找到FX5-80SSC-…

3 - 大的国家(高频 SQL 50 题基础版)

3.大的国家 -- 查询属性&#xff1a;国家名称、人口和面积 select name,population,area fromWorld where area>3000000 OR population>25000000;

组件框架信息泄露

后端spring-boot框架 actuator组件信息泄露 Actuator是Spring-Boot提供的服务监控和管理中间件&#xff0c;默认配置会出现接口未授权 访问&#xff0c;部分接口会泄露网站流量信息和内存信息等&#xff0c;使用Jolokia库特性甚至可以远程执行任意代码&#xff0c;获 取服务器…

科技赋能,无障碍出行的新纪元

在现代社会&#xff0c;公共设施的建设不仅是衡量城市文明程度的标尺&#xff0c;更是实现社会公平与包容的重要载体。对于盲人群体而言&#xff0c;一个完善的公共设施网络&#xff0c;意味着他们能够更加独立、自信地融入社会&#xff0c;享受与视力健全者同等的公共服务与便…

使用onnxruntime加载YOLOv8生成的onnx文件进行目标检测

在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集&#xff0c;使用 LabelMe 工具进行标注&#xff0c;然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件&#xff0c;并自动生成YOLOv8支持的目录结构&#xff0c;包括melon.yaml文件&#xff0c;其内容…

干货!如何在Jmeter中实现对NCR响应的解析

最近做接口测试时发现了一个问题&#xff0c;部分请求的响应是通过NCR编码实现的&#xff0c;这样就导致了无法对这些请求进行断言&#xff0c;为了解决这个问题进行了如下调研&#xff0c;大家可以参考下面两篇文章&#xff1a; 使用Java apache commons包五分钟搞定NCR解析&…

CCIG 2024:大模型技术及其前沿应用论坛深度解析

一、CCIG论坛介绍 中国图象图形大会&#xff08;CCIG 2024&#xff09;是一场备受瞩目的学术盛会&#xff0c;近期在陕西省西安市曲江国际会议中心举行。这次会议以“图聚智生&#xff0c;象合慧成”为主题&#xff0c;由中国图象图形学学会主办&#xff0c;旨在汇聚图像图形领…