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

【数据库设计】规范设计理论之数据依赖的公理系统(1)

知道范式的几种分类之后还并不能帮助我们设计一款好的数据库,在对关系进行拆解(指模式分解)之前,我们需要引入一个理论基础让设计过程变得有迹可循和具备一定的严谨性以此来支撑数据库背后的可靠性。

Armstrong公理系统

所谓公理就是那些不证自明的理论,比如欧几里得几何中:可以从任意一点向任意一点画一条直线、可以以任意一点和任意半径画成一个圆等,数据库中也有类似的公理。R<U,F>表示有关系R,且属性集为U,有函数依赖集合F的关系模式,用来描述数据库的关系模式和数据之间的约束关系。假如该关系模式中有任一关系r满足函数依赖X→Y,那么就说F逻辑蕴含X→Y,或者说X→Y是F的逻辑蕴含。根据已知的函数依赖比如A→B,B→C,就可以推理出A→C,或者说逻辑蕴含出A→C,而公理系统定义了几种可以推理的方法:

自反律

假如有U有子集X、Y,并且Y ⊆ X ⊆ U,很明显可以得出X→Y,自己当然可以推出自己,比如关系(Sno,Sname)→Sno。

增广律

有关系(Sno,Cno,Cname),其中存在Sno→Cno的函数依赖,那么也就意味着(Sno,Cname)→(Cno,Cname),就像a=b,那么a+c=b+c.定义是这样的:假设函数依赖集合F逻辑蕴含X→Y,且Z ⊆ U,那么存在XZ→YZ。

传递律

假如F逻辑蕴含X→Y和Y→Z,那么自然X→Z也是F的逻辑蕴含。

延伸规则

根据上面的三个定律可以推导出有下面的规则:

合并规则:若X→Y,Y→Z,则X→YZ。YZ是指Y和Z两个属性集合的并集。

分解规则:若X→Y,且Z⊆Y,那么很显然X→Z

伪传递规则:若X→Y,WY→Z,那么显然有WX→WY,再加上原来的WY→Z,因此自然有WX→Z.

引理1——基于公理

X → A1, A2, ..., An 成立的充分必要条件是 X → Ai (i = 1, 2, 3, ..., n) 成立。充分必要条件是指P⇔Q

两个条件可以互相推,也就意味着这两个条件在逻辑上时等价的。

例题

对于关系模式 R<U,F>U1,U2,U3,U4,U5,U6 是它的属性集 U 的子集,R 满足函数依赖为 {U1→U2U3U3U4→U5U6},证明函数依赖 U1U4→U6 成立。

证明:

因为U1→U2U3由分解规则,所以有U1→U3

再然后,由增广律U1U4→U3U4

U3U4→U5U6由传递律U1U4→U5U6;

最后,由分解规则有U1U4→U6

函数依赖 U1U4→U6 得证。

闭包

借助上面所讲的公理系统,依靠一组函数依赖我们就可以推导出关系中其他的函数依赖,直到全部集结完毕,也叫闭包,指关系R中所蕴含的所有函数依赖,即关系模式 R<U,F>中,由F逻辑蕴含出的所有函数依赖集合,用符号F+表示。除了整个函数的闭包,也可以单指属性集闭包。比如关系R中U={A1, A2, ..., An}, 有属性集合X,当然还有其他的属性集合Y等,那么X属性集合的闭包就是X+F={A|X→A,A是F的逻辑蕴含},那么就称X+F是属性集X关于函数依赖集F的闭包——属性依赖集的闭包。

引理2——基于公理和闭包

U={A1, A2, ..., An} 是关系模式 R中所有属性的集合,F是 U 上的一组函数依赖,X⊆U,Y⊆U,X→Y 能由 F 根据 Armstrong 公理系统推出的充分必要条件是 Y⊆X+F。

所以当我们要使X→Y 的办法是Y⊆X+F,这意味着我们需要求出属性集X的闭包。

具体的算法明天更新。

相关文章:

【数据库设计】规范设计理论之数据依赖的公理系统(1)

知道范式的几种分类之后还并不能帮助我们设计一款好的数据库&#xff0c;在对关系进行拆解&#xff08;指模式分解&#xff09;之前&#xff0c;我们需要引入一个理论基础让设计过程变得有迹可循和具备一定的严谨性以此来支撑数据库背后的可靠性。 Armstrong公理系统 所谓公理…...

Leetcode 合并两个数组

算法思想是双指针从后往前合并&#xff0c;利用了 nums1 数组的尾部空间来存储合并后的结果&#xff0c;从而避免了额外空间的使用。具体步骤如下&#xff1a; 初始化指针&#xff1a; i 指向 nums1 的有效元素末尾&#xff0c;即位置 m - 1。j 指向 nums2 的末尾&#xff0c;即…...

Native Crash 信号速查

重点信号 SIGSEGV&#xff08;11&#xff09; signal segmentation violation&#xff1a;段错误无效内存访问访问无权访问的内存空指针、越界访问&#xff08;mmap&#xff1f;&#xff09; SIGBUS&#xff08;7&#xff09; Bus Error&#xff1a;总线错误非法内存访问访问 …...

【工具变量】自由贸易试验区试点DID数据集(2003-2023年)

数据简介&#xff1a;自由贸易试验区&#xff08;Free Trade Zone&#xff0c;简称FTZ&#xff09;是中国ZF在新形势下为了推进GG开放、提高开放型经济水平而采取的重要战略举措。自贸试验区在一国的部分领土内运入任何货物&#xff0c;被认为在关境以外&#xff0c;免于实施惯…...

js-在数组中根据name查找出对应id(find与filter方法)

1.根据name查找出对应id 使用数组的 find 方法来根据对象的某个属性&#xff08;如名称&#xff09;查找对应的对象&#xff0c;并获取该对象的 id 属性。 2.find 方法 const array [ { id: 1, name: Alice }, { id: 2, name: Bob }, { id: 3, name: Charlie } ]; 使用…...

推荐:自然语言处理方向的一些创新点

以下是自然语言处理研究方向的一些创新点&#xff1a; 一、预训练模型的改进与优化 模型架构创新 融合多模态信息&#xff1a; 传统的自然语言处理模型主要处理文本信息。创新点在于将图像、音频等多模态信息融合到预训练模型中。例如&#xff0c;对于描述一幅画的文本&#x…...

成都睿明智科技有限公司抖音电商服务的领航者

在这个短视频风起云涌的时代&#xff0c;抖音电商以其独特的魅力迅速崛起&#xff0c;成为无数商家争夺流量与销量的新战场。在这片红海之中&#xff0c;如何脱颖而出&#xff0c;实现销售额的飞跃&#xff1f;今天&#xff0c;就让我们一同走进成都睿明智科技有限公司&#xf…...

【大数据学习 | kafka】kafka的整体框架与数据结构

1. kafka的整体框架 首先kafka启动以后所有的broker都会向zookeeper进行注册&#xff0c;在/brokers/ids中以列表的形式展示所有的节点&#xff0c;在/controller节点中使用独享锁实现broker的选举&#xff0c;其中一个机器为主节点。其他的为从节点&#xff0c;选举的根本原则…...

隐私保护下的数据提取策略

在隐私保护下进行数据提取&#xff0c;需要采取一系列策略来确保个人隐私得到妥善保护&#xff0c;同时满足数据使用的需求。以下是一些关键的策略和方法&#xff1a; 一、数据最小化原则 定义&#xff1a;仅收集和提取必要的数据&#xff0c;避免收集过多的个人信息或不相关…...

vue 和 django 报 CORS(跨域资源共享,Cross-Origin Resource Sharing)是一种跨域访问的机制,

在使用 Vue 和 Django 进行前后端分离开发时&#xff0c;如果遇到 AxiosError: Network Error 的错误&#xff0c;通常可能是由于以下几种原因引起的。下面列出了一些常见的原因和解决方案。 1. CORS&#xff08;跨源资源共享&#xff09;问题 当你的 Vue 应用和 Django 后端…...

「Mac畅玩鸿蒙与硬件3」鸿蒙开发环境配置篇3 - DevEco Studio 插件安装与配置

本篇将专注于如何在 DevEco Studio 中安装和配置必要的插件&#xff0c;以增强开发功能和提升效率。通过正确配置插件&#xff0c;开发流程能够得到简化&#xff0c;开发体验也会更加顺畅。 关键词 插件安装配置优化DevEco Studio开发工具 一、插件的重要性 插件可以大幅扩展…...

【论文阅读】PGAN

1. WHY 问题 图像超分辨率一直是一个热门研究课题&#xff0c;具有重要的应用价值。基于生成对抗网络GAN的单幅图像超分辨率方法显示重建图像与人类视觉特征更一致。因此&#xff0c;基于 GAN 的网络优化已成为图像超分辨率的主流。然而&#xff0c;一些最新研究表明&#xf…...

基于Unet卷积神经网络的脑肿瘤MRI分割

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【YOLO模型实现农作物病虫害虫识别带GUI界面】 2.【卫星图像道路检测DeepLabV3P…...

[java][基础]HTTPTomcatServlet

1&#xff0c;Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网&#xff0c;也称为万维网(www)&#xff0c;能够通过浏览器访问的网站。 在我们日常的生活中&#xff0c;经常会使用浏览器去访问百度、京东、传智官网等这些网站&#xff0c;这些网站统称为Web网站。如下就是通…...

【开源免费】基于SpringBoot+Vue.JS网上超市系统(JAVA毕业设计)

本文项目编号 T 037 &#xff0c;文末自助获取源码 \color{red}{T037&#xff0c;文末自助获取源码} T037&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…...

【单片机】深入剖析USART与UART的区别

在嵌入式系统和微控制器开发中&#xff0c;串行通信是一个非常关键的概念&#xff0c;涉及到不同设备之间的数据传输。常见的串行通信协议包括UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09;和USART&#xff08;Universal Synchronous/Asynchronous…...

‌Linux tac命令‌

‌Linux tac命令‌是一个用于逆序显示文件内容的工具&#xff0c;其名称来源于“cat”的反向拼写。tac命令的基本功能是将文件的内容从最后一行开始输出&#xff0c;直到第一行结束&#xff0c;这与cat命令的功能相反&#xff0c;cat命令是从第一行开始输出直到最后一行。 tac…...

从简单的demo开始让您逐步了解GetX的用法

目录 前言 一、从demo开始体现下Getx的用法 二、从最简单的功能开始 1.新建一个Flutter工程 2.GetX初体验 1.路由跳转 1.普通路由跳转 2.跳转并从堆栈中销毁当前页面 3.跳转并销毁之前所有页面 4.跳转以及传值 2.更方便的实现SnackBar、Dialog、BottomSheet 三、Ge…...

JAVA的动态代理

Java 动态代理是 Java 语言中一项强大的特性&#xff0c;它允许在运行时动态地创建符合一组接口的代理类。这种机制广泛应用于各种框架和工具中&#xff0c;如 Spring AOP、Hibernate 数据查询、Mockito 测试框架等。通过动态代理&#xff0c;可以在不修改原有代码的前提下&…...

「图文详解」Pycharm 远程服务器Debug

首先声明一点&#xff0c;社区版的无法使用&#xff0c;需要使用 专业版Pycharm 才可以使用&#xff0c;至于密钥可以去TB购入&#xff0c;价格低廉、有效期长 相信很多小伙伴会面临本地电脑显存不够&#xff0c;但是服务器代码又无法直观的调试&#xff0c;只能靠打日志的方法…...

Apache Tomcat 在 IDEA 中配置完整教程(手把手保姆教程)

目录 文章内容简介 配置前提 IDEA 准备 IDEA 中的配置 文章内容简介 本文详细介绍了在IDEA中配置Apache Tomcat服务器的完整步骤。首先指导用户创建Maven Archetype项目。重点讲解了Tomcat服务器的配置过程&#xff0c;包括设置服务器路径、部署工件、修改HTTP端口等关键操…...

FreeRTOS+LwIP 2.2.0实战:手把手教你理解tcpip_thread的消息处理机制

FreeRTOSLwIP 2.2.0实战&#xff1a;深入解析tcpip_thread的消息驱动架构 在嵌入式网络开发中&#xff0c;理解协议栈的线程模型是构建稳定系统的关键。当FreeRTOS遇上LwIP&#xff0c;tcpip_thread就像一位不知疲倦的邮差&#xff0c;日夜处理着来自各方的网络报文。本文将带您…...

不止于仿真:用COMSOL LiveLink玩转超声相控阵动态聚焦与参数化扫描

超越静态仿真&#xff1a;COMSOL LiveLink在超声相控阵动态聚焦中的高阶应用 当超声相控阵技术遇上COMSOL的多物理场仿真能力&#xff0c;工程师们便获得了一把打开声波精准操控之门的钥匙。不同于传统静态仿真&#xff0c;动态聚焦与参数化扫描技术让声场控制如同探照灯般灵活…...

追踪Elsevier审稿进度:开源工具如何提升学术投稿效率

追踪Elsevier审稿进度&#xff1a;开源工具如何提升学术投稿效率 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 学术出版流程中&#xff0c;审稿进度的不确定性常给研究者带来困扰。Elsevier作为全球领先的学术出版…...

电磁学核心概念与解题框架精讲(猴博士风格)

1. 电磁学基础概念拆解&#xff1a;从场强到电势 电场强度E和电势U是电磁学中最基础的两个物理量&#xff0c;就像描述一个人需要身高和体重两个指标一样。很多同学刚开始学电磁学时容易混淆这两个概念&#xff0c;我用一个简单的类比帮大家理解&#xff1a;想象电场强度就像山…...

新手福音:用快马平台生成Anaconda环境下的Python数据分析示例代码

作为一名刚接触Python数据分析的新手&#xff0c;我最近在学习Anaconda环境下的数据处理和可视化。刚开始配置环境和写代码时&#xff0c;经常被各种报错搞得手忙脚乱。后来发现了InsCode(快马)平台&#xff0c;它帮我快速生成了一个完整的示例项目&#xff0c;让我对数据分析流…...

5分钟玩转OpenClaw:nanobot镜像云端体验与本地调试对比

5分钟玩转OpenClaw&#xff1a;nanobot镜像云端体验与本地调试对比 1. 为什么需要对比云端与本地两种体验方式 作为一个长期折腾AI工具的开发者&#xff0c;我最近在测试OpenClaw时遇到了一个典型困境&#xff1a;是直接在本地电脑安装全套环境&#xff0c;还是先用云端沙盒快…...

VSCode远程开发必备:SSH端口转发一键配置指南(含常见问题排查)

VSCode远程开发实战&#xff1a;SSH端口转发高效配置与深度排错 当你在咖啡厅修改代码时&#xff0c;远程服务器上的数据库服务突然需要紧急调试&#xff1b;当团队协作时&#xff0c;同事的内网API接口需要临时开放给你测试——这些场景下&#xff0c;SSH端口转发就像一把瑞士…...

基于.NET 11 与C# 14的高性能安全客户端应用开发

基于.NET 11 与C# 14的高性能安全客户端应用开发 前言 在客户端应用开发领域&#xff0c;性能与安全始终是关键指标。随着.NET 11 和 C# 14 的推出&#xff0c;开发者拥有了更强大的工具来构建高性能且安全可靠的客户端应用。这些新技术不仅提升了应用的运行效率&#xff0c;还…...

【Godot】【整活】用 50 行代码做一个“抖音同款解压小游戏”(附源码)

最近短视频平台上经常能看到一种“解压小游戏”: 点一下 → 爆炸特效 💥 滑一下 → 连锁反应 🎯 满屏粒子 → 爽感拉满 😎 这些游戏的核心特点只有三个字: 👉 简单、直接、上头 今天我们就用 Godot 4,只用 约 50 行代码,实现一个“点击爆炸”的解压小游戏。 精…...