数据依赖的公理系统

2024-01-06 13:08
文章标签 数据 系统 依赖 公理

本文主要是介绍数据依赖的公理系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据依赖的公理系统

在说公理系统前,要理解函数依赖的概念(可以看我博客里面讲范式的文章也有提到函数依赖的定义)

一 函数依赖

在这里插入图片描述
理解是,我们在R里面任意找一个r关系,对于这个关系的元组s和t,当s和t在属性(组)X上面相等,则s和t在Y属性(组)上也相等。这样被称为,X函数确定Y函数或者说Y函数依赖于X函数(X->Y).

二 逻辑蕴含

在这里插入图片描述
理解是,在R关系模式里面,U是属性集,F是函数依赖集(一些函数依赖组成),在这个关系模式里面,如果所有关系都满足 X->Y这一个函数依赖,则成为F逻辑蕴含X->Y。

例如
R<U,F>: U = {A,B,C} F={A->B,B->C}
则有,F逻辑蕴含A->B,AB->B,A->C

理由是:A->B是在F函数依赖集里面显式给出的,AB->B B属性式AB的一个子集,所以AB必然决定B, A->C则是通过函数依赖传递得到的。

Armstrong(阿姆斯特朗)公理系统

它是一套推理规则,是模式分解算法的理论基础,
以下是公理系统的重要规律和推论

规律

  1. 自反律(Reflexivity):若Y X  U,则X →Y为F所蕴含。
    //X包含Y,即Y是X的子集,所以必然有X决定Y
  2. 增广律(Augmentation):若X→Y为F所蕴含,且Z  U,则XZ→YZ为F所蕴含。
    //可以在函数依赖两边加一样的属性。
  3. 传递律(Transitivity):若X→Y及Y→Z为F所蕴含,则X→Z为F所蕴含。

导出推论:

  1. 合并规则:由X→Y,X→Z,有X→YZ
  2. 伪传递规则:由X→Y,WY→Z,有XW→Z。
  3. 分解规则:由X→Y及 Z含于Y,有X→Z。

性质

有效性/确定性:函数依赖集F根据公理推出的每一条函数依赖都是正确的,而且都在F的闭包中。
完备性:函数依赖集F闭包中所有的函数依赖都可以用公理导出。

三 函数依赖的闭包

定义:若F为关系模式R(U)的函数依赖集,我们把F以及所有被F逻辑蕴涵的函数依赖的集合称为F的闭包,记为F+。

函数依赖的闭包指F所逻辑蕴含的所有成立的函数依赖,而对于平凡函数依赖(如 (A,B)—>A )都被F所逻辑蕴含,即便F是一个空集,其闭包也包含很多函数依赖
在这里插入图片描述
这样把闭包的所有成员全部罗列出来通常是没有很大意义的。

属性集的闭包

定义:设F位属性集U上的一组函数依赖,X含于U,则

称为是属性集X关于函数依赖集F的闭包
在F确定的情形下,也可以写成X+

*例如
R<U,F>: U ={A,B,C} F={A->B,B->C}
则X关于函数依赖集F的闭包是ABC({A,B,C}的简写)
因为A->A,A->B,A->C都可以直接或者间接得出

前面提及是罗列出闭包的所有成员是不实际的,有很多,而且是意义不大的一件事情。但是我们如果真的要表示一个闭包时该怎么办呢?或者说我们在要判断一个函数依赖是否成立(是否在一个函数依赖集里面)时,我们要怎么求解呢?

接下来的定理,它将函数依赖是否成立 转化为 属性集闭包的问题
在这里插入图片描述
说明:X决定Y当且仅当Y时X属性集闭包的一个子集 或者可以说, Y要在X属性集闭包里面,才可以说X确定Y.

这样我们就把本来要计算一个函数依赖闭包的问题,转化位了一个属性集闭包的问题

对于属性集闭包的求解
我们提供一套算法:
在这里插入图片描述

例题:
在这里插入图片描述


在这里插入图片描述
在这里插入图片描述

这篇关于数据依赖的公理系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/576447

相关文章

MyBatisPlus如何优化千万级数据的CRUD

《MyBatisPlus如何优化千万级数据的CRUD》最近负责的一个项目,数据库表量级破千万,每次执行CRUD都像走钢丝,稍有不慎就引起数据库报警,本文就结合这个项目的实战经验,聊聊MyBatisPl... 目录背景一、MyBATis Plus 简介二、千万级数据的挑战三、优化 CRUD 的关键策略1. 查

python实现对数据公钥加密与私钥解密

《python实现对数据公钥加密与私钥解密》这篇文章主要为大家详细介绍了如何使用python实现对数据公钥加密与私钥解密,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录公钥私钥的生成使用公钥加密使用私钥解密公钥私钥的生成这一部分,使用python生成公钥与私钥,然后保存在两个文

mysql中的数据目录用法及说明

《mysql中的数据目录用法及说明》:本文主要介绍mysql中的数据目录用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、版本3、数据目录4、总结1、背景安装mysql之后,在安装目录下会有一个data目录,我们创建的数据库、创建的表、插入的

Navicat数据表的数据添加,删除及使用sql完成数据的添加过程

《Navicat数据表的数据添加,删除及使用sql完成数据的添加过程》:本文主要介绍Navicat数据表的数据添加,删除及使用sql完成数据的添加过程,具有很好的参考价值,希望对大家有所帮助,如有... 目录Navicat数据表数据添加,删除及使用sql完成数据添加选中操作的表则出现如下界面,查看左下角从左

解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题

《解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘问题》:本文主要介绍解决未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4... 目录未解析的依赖项:‘net.sf.json-lib:json-lib:jar:2.4‘打开pom.XM

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

SpringBoot中4种数据水平分片策略

《SpringBoot中4种数据水平分片策略》数据水平分片作为一种水平扩展策略,通过将数据分散到多个物理节点上,有效解决了存储容量和性能瓶颈问题,下面小编就来和大家分享4种数据分片策略吧... 目录一、前言二、哈希分片2.1 原理2.2 SpringBoot实现2.3 优缺点分析2.4 适用场景三、范围分片

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

浅析如何保证MySQL与Redis数据一致性

《浅析如何保证MySQL与Redis数据一致性》在互联网应用中,MySQL作为持久化存储引擎,Redis作为高性能缓存层,两者的组合能有效提升系统性能,下面我们来看看如何保证两者的数据一致性吧... 目录一、数据不一致性的根源1.1 典型不一致场景1.2 关键矛盾点二、一致性保障策略2.1 基础策略:更新数