【数据库系统概论】关系数据理论、范式

news2024/10/7 20:31:16

数据库一二三范式简单解释

第一范式

一个关系模式应当是一个五元组。
R ( U , D , D O M , F ) R(U,D,DOM,F) R(U,D,DOM,F)
这里:

  • 关系名 R R R是符号化的元组语义
  • U U U为一组属性
  • D D D为属性组 U U U中的属性所来自的域
  • D O M DOM DOM为属性到域的映射
  • F F F为属性组 U U U上的一组数据依赖

由于 D , D O M D,DOM D,DOM与模式设计关系不大,因此在此把关系模式看作一个三元组: < U , F > <U,F> <U,F>
当且仅当 U U U上的一个关系 r r r满足 F F F时, r r r成为关系模式 R < U , F > R<U,F> R<U,F>的一个关系。

作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项
满足了这个条件的关系模式就属于第一范式(1NF)
在这里插入图片描述

数据依赖:
数据依赖是一个关系内部属性与属性之间的一种约束关系。
这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。

人们已经提出了许多种类型的数据依赖,其中最重要的是函数依赖多值依赖

但是,这个关系模式存在以下问题:

数据冗余
每一个系的系主任姓名重复出现,重复次数与该系所有学生的课程成绩出现的次数相同。
这将浪费大量的存储空间。
更新异常
某系更换系主任后,必须修改与该系学生有关的每一个元组。

插入异常
如果一个系刚成立,尚无学生,则无法将这个系及其系主任的信息存入数据库。

删除异常
如果某个系的学生全部毕业了,则在删除该系学生信息的同时,这个系及其系主任的信息也丢掉了。

一个好的模式应当不会发生插入异常、删除异常和更新异常,数据冗余应尽可能少。

规范化

函数依赖

R ( U ) R(U) R(U)是属性集 U U U上的关系模式, X , Y X,Y X,Y U U U的子集。若对于 R ( U ) R(U) R(U)的任意一个可能的关系 r r r r r r中不可能存在两个元组在 X X X上的属性值相等,而在 Y Y Y上的属性值不等,则称 X X X函数确定 Y Y Y Y Y Y函数依赖于 X X X
记作 X → Y X \rightarrow Y XY
函数依赖和别的数据依赖一样是语义范畴的概念,只能根据语义来确定一个函数依赖。

下面介绍一些术语和记号

  • X → Y X \rightarrow Y XY,但 Y ⊊ X Y \subsetneq X YX,则称 X → Y X \rightarrow Y XY非平凡的函数依赖

  • X → Y X \rightarrow Y XY,但 Y ⊆ X Y \subseteq X YX,则称 X → Y X \rightarrow Y XY平凡的函数依赖
    对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明,总是讨论平凡的函数依赖。

  • X → Y X \rightarrow Y XY,则 X X X称为这个函数依赖的决定属性组,也称为决定因素

  • X → Y X \rightarrow Y XY Y → X Y \rightarrow X YX,则记作 X ← → Y X \leftarrow \rightarrow Y XY

  • Y Y Y函数不依赖于 X X X,则记作 X ↛ Y X \nrightarrow Y XY

R ( U ) R(U) R(U)中,如果 X → Y X \rightarrow Y XY,并且对于 X X X的任何一个真子集 X ′ X^{'} X,都有 X ′ ↛ Y X^{'}\nrightarrow Y XY,则称 Y Y Y X X X完全函数依赖,记作 X → F Y X{\rightarrow}^{F} Y XFY
如果 X → Y X \rightarrow Y XY,但 Y Y Y不完全函数依赖于 X X X,则称 Y Y Y X X X部分函数依赖,记作 X → P Y X{\rightarrow}^{P} Y XPY

码是关系模式中的一个重要概念。
K K K R < U , F > R<U,F> R<U,F>中的属性或属性组合,若 R → F U R{\rightarrow}^{F} U RFU,则 K K K R R R候选码
注意 U U U是完全函数依赖于 K K K,而不是部分函数依赖于 K K K。一般地,如果 U U U函数依赖于 K K K,即 K → U K{\rightarrow} U KU,则 K K K称为超码

候选码是一类特殊的超码,即候选码的超集(如果存在)一定是超码,候选码的任何真子集一定不是超码。

若候选码多于一个,则选定其中的一个为主码
包含在任何一个候选码中的属性称为主属性;不包含在任何候选码中的属性称为非主属性非码属性
最简单的情况,单个属性是码;
最极端的情况,整个属性组是码,称为全码

范式

关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。

一个低一级的范式的关系模式通过模式分解可以转换为若干高一级范式的关系模式的集合,这种过程就叫规范化

第二范式

R ∈ 1 N F R\in 1NF R1NF,且每一个非主属性完全函数依赖于任何一个候选码,则 R ∈ 2 N F R\in 2NF R2NF
在这里插入图片描述
在这里插入图片描述

第三范式

设关系模式 R < U , F > ∈ 1 N F R<U,F> \in1NF R<U,F>1NF,若 R R R中不存在这样的码 X X X,属性组 Y Y Y及非主属性 Z ( Z ⊊ Y ) Z(Z \subsetneq Y) Z(ZY)使得 X → Y X \rightarrow Y XY, Y → Z Y \rightarrow Z YZ, Y ↛ X Y\nrightarrow X YX,则称 R < U , F > ∈ 3 N F R<U,F>\in3NF R<U,F>3NF
在这里插入图片描述

扩充的第三范式

BCNF是修正的第三范式,有时也称为扩充的第三范式。
关系模式 R < U , F > ∈ 1 N F R<U,F>\in1NF R<U,F>1NF,若 X → Y X \rightarrow Y XY Y ⊊ X Y\subsetneq X YX X X X必含有码,则 R < U , F > ∈ B C N F R<U,F>\in BCNF R<U,F>BCNF

N C N F NCNF NCNF的定义可以得到结论,一个满足 B C N F BCNF BCNF的关系模式有:

  • 所有非主属性对每一个码都是完全函数依赖。
  • 所有主属性对每一个不包含它的码也是完全函数依赖。
  • 没有任何属性完全函数依赖于非码的任何一组属性。

多值依赖

R ( U ) R(U) R(U)是属性集 U U U上的一个关系模式。 X , Y , Z X,Y,Z X,Y,Z U U U的子集,并且 Z = U − X − Y Z=U-X-Y Z=UXY。关系模式 R ( U ) R(U) R(U)中多值依赖 X → → Y X\rightarrow\rightarrow Y XY成立,当且仅当对 R ( U ) R(U) R(U)的任一关系 r r r,给定的一对 ( x , z ) (x,z) (x,z)值,有一组 Y Y Y的值,这组值仅仅决定于 x x x值而与 z z z值无关。

多值依赖具有以下性质:

  1. 对称性
  2. 传递性
  3. 函数依赖可以看作是多值依赖的特殊情况

与函数依赖相比,多值依赖有下面两个基本的区别:

  1. 多值依赖的有效性与属性集的范围有关
  2. 见P188

4NF

4 N F 4NF 4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。

数据依赖的公理系统

A r m s t r o n g Armstrong Armstrong公理系统:设 U U U为属性集总体, F F F U U U上的一组函数依赖,于是有关系模式 R < U , F > R<U,F> R<U,F>,对其来说有以下的推理法则:

  • A1 自反律
  • A2 增广律
  • A3 传递律

根据 A 1 , A 2 , A 3 A1,A2,A3 A1,A2,A3这三条推理规则可以得到下面三条有用的推理规则:

  • 合并规则
  • 伪传递规则
  • 分解规则

在这里插入图片描述

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

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

相关文章

RabbitMQ_概述

RabbitMQ大致工作流程图 解释 Producer&#xff1a;生产者 Consumer&#xff1a;消费者 Connection&#xff1a;AMQP协议连接 Channel&#xff1a;信道&#xff0c;进行消息读写的通道&#xff0c;RabbitMQ的绝大部分操作在信道完成&#xff1b;客户端可以建立多个信道&…

用 AWTK 和 AWPLC 快速开发嵌入式应用程序 (4)- 自定义功能块(上)

AWPLC 目前还处于开发阶段的早期&#xff0c;写这个系列文章的目的&#xff0c;除了用来验证目前所做的工作外&#xff0c;还希望得到大家的指点和反馈。如果您有任何疑问和建议&#xff0c;请在评论区留言。 1. 背景 AWTK 全称 Toolkit AnyWhere&#xff0c;是 ZLG 开发的开源…

PTA题目 两个数的简单计算器

本题要求编写一个简单计算器程序&#xff0c;可根据输入的运算符&#xff0c;对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。 输入格式&#xff1a; 输入在一行中依次输入操作数1、运算符、操作数2&#xff0c;其间以1个空格分隔。操作数的数…

跟艾文学编程《Python基础》(7)pandas数据分析

作者&#xff1a; 艾文&#xff0c;计算机硕士学位&#xff0c;企业内训讲师和金牌面试官&#xff0c;公司资深算法专家&#xff0c;现就职BAT一线大厂。邮箱&#xff1a; 1121025745qq.com博客&#xff1a;https://wenjie.blog.csdn.net/内容&#xff1a;跟艾文学编程《Python…

汉字风格迁移篇---W-net:基于深度神经网络的一次任意风格汉字生成

文章目录一、摘要二、提出原因已有的一些模型解决方案依然存在的限制三、介绍与创新四、模型介绍预处理w-net结构优化策略和损失函数五、实验实验设置用zi2zi作为基线具体实现1、 W-Net训练期间的超参数设置如下&#xff1a;2、一些细节处理模型评估W-net、zi2zi-v1、zi2zi-v2不…

第2-3-7章 个人网盘服务接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

文章目录5.8 导入其他接口代码5.8.1 接口导入-分页查询附件5.8.2 接口导入-根据业务类型/业务id查询附件5.9 导入网盘服务接口5.9.1 导入FileController5.9.2 导入StatisticsController5.9.3 导入FileRestManager5.9.4 导入FileService5.9.5 导入FileServiceImpl5.9.6 扩展File…

面向OLAP的列式存储DBMS-8-[ClickHouse]的常用聚合函数

ClickHouse 中的常用聚合函数 1 聚合函数 ClickHouse 中的聚合函数&#xff0c;因为和关系型数据库的相似性&#xff0c;本来聚合函数不打算说的&#xff0c;但是 ClickHouse 提供了很多关系型数据库中没有的函数&#xff0c;所以我们还是从头了解一下。 1.1 count count&…

Vue3 用src动态引入本地图片

&#x1f4ad;&#x1f4ad; ✨&#xff1a; Vue3 用src动态引入本地图片   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 躲起来的星星也在努力发光 你也要&#x1f49c;&#x1f49c;   &#x1f338;: 如有错误或不足之处&#xff0c;希望可以指正&#…

Qt OpenGL(二十二)——Qt OpenGL 核心模式-VAO和VBO

Qt OpenGL(二十二)——Qt OpenGL 核心模式-VAO和VBO 一、再谈VAO、VBO 上一篇文章,通过VAO、VBO绘制了一个三角形,过程需要创建VAO、VBO和释放。之所以有这些步骤,就是因为OpenGL本质就是一个大的状态机。但是我们如果要继续学习核心模式的OpenGL的话,VAO、VBO是我们必…

Java集合(一):泛型与Collection集合

目录 集合预热&#xff1a;泛型 泛型的优点 自定义泛型类型 自定义泛型类/接口 泛型使用细节 自定义泛型方法 泛型与继承关系 不存在继承关系的情况 通配符与存在继承关系的情况 泛型受限 集合概述 集合的作用与存储内容 集合与数据结构 集合&#xff1a;Collectio…

【基础算法系列】离散化与前缀和算法的运用

⭐️前面的话⭐️ 本篇文章将主要介绍离散化算法&#xff0c;所谓离散化算法&#xff0c;就是将一个无限区间上散点的数&#xff0c;在不改变相对大小的情况下&#xff0c;映射到一个较小的区间当中&#xff0c;然后对这个较小的区间进行操作的过程就是离散化的过程&#xff0…

【C++笔试强训】第二十八天

&#x1f387;C笔试强训 博客主页&#xff1a;一起去看日落吗分享博主的C刷题日常&#xff0c;大家一起学习博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a;夜色难免微凉&#xff0c;前方必有曙光 &#x1f31e;。 &#x1f4a6;&a…

微信小程序自定义tabBar(实操)

文章目录一、前言二、固定效果图实现步骤实现步骤完整代码-矢量图images图片app.json代码三、自定义效果图实现步骤实现步骤完整代码-矢量图images图片app.json代码custom-tab-bar下的代码使用自定义TaBar一、前言 一般使用tabBar的样式&#xff0c;固定不能改变。如下固定效果…

java计算机毕业设计springboot+vue村委会管理系统

项目介绍 本村委会管理系统是针对目前村委会管理的实际需求,从实际工作出发,对过去的村委会管理系统存在的问题进行分析,完善用户的使用体会。采用计算机系统来管理信息,取代人工管理模式,查询便利,信息准确率高,节省了开支,提高了工作的效率。 本系统结合计算机系统的结构、概…

DPDK-A3: KVM使用SRIOV和虚机使用DPDK

虚拟机基本管理 如下命令可以修改默认网段 sudo virsh net-edit --network default<network><name>default</name><uuid>45ed012c-3933-4f3e-9575-b37bffa21b83</uuid><forward modenat/><bridge namevirbr0 stpon delay0/><ma…

解决javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)V异常

文章目录异常&#xff1a;不同jar包的多xml解析器冲突解决其他异常&#xff1a; java.lang.AbstractMethodError:javax.xml.parsers.DocumentBuilderFactory.setFeature(Ljava/lang/String;Z)可能原因&#xff1a; 在本地WINDOWS编译测试没问题&#xff0c;只在LINUX服务器上面…

通讯录的实现【涉及动态内存管理和文件操作】【从易到难】【详解】

本期介绍&#x1f356; 主要介绍&#xff1a;如何实现一个通讯录&#xff0c;从静态版通讯录&#xff0c;到动态内存版通讯录&#xff0c;再到文件存储版通讯录&#xff0c;详细讲述了每一个通讯录的实现步骤以及思维逻辑&#xff0c;以及通讯录的完整代码&#x1f440;。 文章…

基于Springboot+mybatis+mysql+html图书管理系统

基于Springbootmybatismysqlhtml图书管理系统一、系统介绍二、功能展示1.用户登陆2.图书管理3.读者管理4.借还管理5.密码修改6.图书查询&#xff08;读者&#xff09;7.个人信息&#xff08;读者&#xff09;8.我的借还&#xff08;读者&#xff09;一、系统介绍 系统主要功能…

深究为啥Vue管理的函数不能是箭头函数

首先明确一点&#xff0c;箭头函数的this指向是根据上下文作用域确定的 Vue框架中&#xff0c;容易搞错的一点就是认为对象也有作用域 了解作用域与作用域链这个问题就迎刃而解了 假设Vue管理的函数是箭头函数时&#xff1a; 此时this是windows&#xff0c;Vue中data与metho…

生物识别技术在汽车领域带来了巨大变革

智能汽车时代 2022年10月28日&#xff0c;工信部发布《道路机动车辆生产准入许可管理条例&#xff08;征求意见稿&#xff09;》&#xff08;“《准入管理条例草案》”&#xff09;。包含了更全面的汽车准入管理规定&#xff0c;同时较为系统地增加了针对智能汽车的准入管理规定…