软考53-上午题-【数据库】-关系模式的范式

一、范式

关系模式的规范化标准,达到范式的关系才是规范化的。

1-1、目前有6种范式:

  • 第一范式:1NF;(满足最低要求)
  • 第二范式:2NF;(在第一范式的基础上进一步的满足一些要求)
  • 第三范式:3NF;
  • BC范式:BCNF;
  • 第四范式:4NF;
  • 第五范式:5NF;

各范式之间存在的联系:

 

 

1-2、规范化

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

判断范式,第一步:求出候选码,并将主属性、非主属性分开。

1-3、第一范式

1NF——>2NF,要解决部分函数依赖。 

反例:

改进方式:

 

1-3-1、数据冗余 

示例:表中学生信息重复

1-3-2、更新异常

1、修改异常

基于数据冗余引起的修改异常。

2、插入异常

理应能插入的信息,实际却不能插入,如下所示:

实体完整性约束:

关系中,主码的值不能为空或部分为空,多个属性构成的主码,不能部分为空。

此时,若是只想在表中插入课程信息:课程号、课程名,则会破坏实体完整性。因为学生信息为空。但是一般的逻辑是:先有课程,再让学生选择课程。

3、删除异常

 把不该删除的数据删除了,如下所示:

若是只想删除课程信息,却把与之相关的学生信息也删除了。

1-4、第二范式

【回顾】:

第一范式存在的问题:

        部分函数依赖。

部分函数依赖,导致的结果:

数据冗余、更新异常(插入、删除、修改)

第一范式,消除部分函数依赖的问题,得到:第二范式。

1-4-1、第二范式的定义

示例:

 问题的解决:规范化,即:分解。

1-4-2、关系模式的分解

将一个关系模式分解为多个关系模式,相应的,原来存储在一个二维表中的数据就要分散到多个二维表中。要使这个分解有意义,起码要求:后者不能丢失前者的信息(无论是表,还是关系,都不能丢失)

1-4-3、消除部分函数依赖

示例:

此时R1,R2,R3符合第二范式的定义。 

单个属性作为候选码的时候,不存在部分函数依赖。

候选码为属性组合的时候,存在部分函数依赖。

1-4-4、第二范式存在的问题

属于2NF的关系模式R也存在问题:数据冗余更新异常

因为:传递函数依赖

示例:

此时,R1存在的传递函数依赖,如下:

1、R1的数据冗余问题:

若是多个学生都属于同一个学院,则:学院信息和院长信息会重复多次。

2、R1的更新异常问题 
2-1、修改异常

若是R1中要修改周八院长的信息,则需要修改多次,可能导致一部分数据修改,一部分没有修改,则会出现修改的不一致性。

2-2、插入异常

若是只想新增一个学员信息:学院、院长,但是没有学生信息,则不能插入,因为R1中学号是主键。

 

2-3、删除异常

若是只是删除学生信息,或是,只是删除学员信息,关联的学院或学生信息都会被删除,这是不恰当的。

第二范式,规范化(关系模式的分解),消除传递函数依赖, 得到:第三范式。

1-5、第三范式

1-5-1、第三范式的定义

1-5-2、消除传递函数依赖

示例:R1

 

将R1中的院长拆分出去,此时关系:学号——>院长、学院——>院长也从R1中删除了。

保留关系:学院——>院长(若是保留学号——>院长,则还是存在传递依赖。)

以上,是R1中存在单个传递函数依赖问题的解决;若是R1中存在多个传递函数依赖呢?如下所示: 

 

此时将人数属性也放到新的分解表中:

 

也就是说,若是存在如下情况的传递函数依赖:

X——>Y,Y——>Z1, Y——>Z2,Y——>Z3

此时,将Y、Z1、Z2、Z3都放到新的分解表中。

分解完成后,符合第三范式的示例:

此时,所有的表中,都满足:

1、非主属性,完全依赖于,主属性;

2、非主属性,非传递依赖于,主属性。

1-5-3、第三范式存在的问题

属于第三范式的关系模式R可能存在:主属性对码的部分函数依赖、传递依赖。

属于第三范式的关系模式R可能存在:非主属性对码的部分函数依赖、传递依赖。

示例:(前提:每个书店只有1名店长,每个店长只在一个书店)

由此可得:

 

先求候选码,再由此得到主属性、非主属性。 

 

第一范式:R中每个属性A的值域只包含原子项。 

第二范式:每个非主属性,都完全依赖于,候选码。

第三范式:每个非主属性,都非传递依赖于,候选码。

由此可知,改表格符合第三范式。

 

1、数据冗余

若是书店1有100本不同的书,则店长张三的姓名要重复100次。

有了数据冗余,就有更新异常。

2、更新异常
2-1、修改异常

修改店长张三的值,修改不彻底,导致数据的不一致性。

2-2、插入异常

此时,有2个主码,三个主属性。

若是只想插入书店的信息,没有店长和图书信息,则不能添加。

2-3、删除异常

想要删除一本书的信息,对应的这条数据整个删除后,店长和书店的信息也没有了。

出现这些问题的原因:主属性对码的部分函数依赖、传递依赖。

示例:

 

书店,依赖于店长,店长是候选码(店长,图书)的部分;

店长,依赖于书店,书店是候选码(书店,图书)的部分。

解决方式:第三范式,消除主属性对码的部分函数依赖、传递依赖,升级到:BC范式。

1-6、BC范式

1-6-1、BC范式的定义

一个满足BC范式的关系模式,有如下特点:

一个满足BC范式的关系模式R已消除了插入和删除异常。

1-6-2、消除主属性对码的部分函数依赖、传递依赖

1-7、多值依赖和第四范式

1-7-1、多值依赖 

示例:

一门课程,对应多个任课老师;

一门课程,对应多本参考书;

1-7-2、第四范式的定义

看到多值依赖,想到第四范式;(考的极少,简单了解即可)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024最新版聚合支付彩虹易支付PHP源码

彩虹易支付是一种便捷的支付解决方案,属于聚合易支付平台的一部分。它提供了即时到账功能,无需签约即可使用。通过这个平台,您可以方便地接入多种支付方式,包括支付宝当面付、QQ钱包、财付通、微信扫码支付和个体商户聚合收款码等…

2024尼泊尔徒步旅行记

2.8日至2.24日这段时间去了尼泊尔徒步旅行,是的今年没有在家过春节。 加德满都 当我到了尼泊尔的首都加德满都,下飞机了坐在一辆狭小的出租车上,行驶在狭窄的路上。看到的是路上很多人,有很多摩托车,没有红绿灯&…

剑指 Offer 42. 连续子数组的最大和

目录 题目 代码实现 输出 题目 代码实现 #include <vector> #include <iostream> using namespace std;class Solution { public:int maxSubArray(vector<int>& nums) {vector<int> sum;sum.resize(nums.size() + 1);for (size_t i = 1; i <…

UCSF DOCK 分子对接详细案例(01)- rigid, fixed anchor, flexible dock

欢迎浏览我的CSND博客&#xff01; Blockbuater_drug …点击进入 文章目录 前言一、操作环境二、研究背景三、受体-配体结构文件准备3.1准备文件夹DOCK_workdir, 下载晶体结构3.1.1 来自湿实验的受体配体共晶结构&#xff1a;3.1.2 来自深度学习和语言模型推理预测的蛋白结构&a…

用电商API,轻松获取淘宝商品数据!

我们进入到淘宝商品数据页面&#xff0c;按F12打开开发者模式&#xff0c;对页面进行观察&#xff0c;我们发现淘宝页面是Ajax方式加载的&#xff0c;而且它的接口参数很复杂且没有固定的规律&#xff0c;但是Selenium又被淘宝反爬限制了&#xff0c;所以我们不能使用Ajax来获取…

vue2 设置keepAlive之后怎么刷新页面数据

场景&#xff1a;移动端有 A、B、C 三个页面&#xff0c;A、B 页面路由设置了keepAlive属性&#xff0c;有下面两个场景&#xff1a; 1、A 页面 --> B 页面&#xff0c;B 页面刷新。 2、C 页面 --> B页面&#xff0c;B 页面不刷新。 一、分为以下两个情况讨论&#xf…

cAdvisor+Prometheus+Grafana 搞定Docker容器监控平台

cAdvisorPrometheusGrafana cAdvisorPrometheusGrafana 搞定Docker容器监控平台1、先给虚拟机上传cadvisor2、What is Prometheus?2.1、架构图 3、利用docker安装普罗米修斯4、安装grafana cAdvisorPrometheusGrafana 搞定Docker容器监控平台 1、先给虚拟机上传cadvisor cAd…

fastjson反序列化漏洞

fastjson反序列化漏洞 文章目录 fastjson反序列化漏洞1.漏洞原理2.探测方式2.1 查看回显2.2 LDAP/RMI服务测试 3.LDAP/RMI服务搭建要求4.漏洞复现4.1 fastjson <1.2.47 反序列化导致任意命令执行漏洞4.1.1 环境准备4.1.2 复现过程 4.2 fastjson <1.2.24 反序列化导致任意…

OpenHarmony、HarmonyOS打开编辑 PDF 等操作的三方组件使用教程

项目场景: 随着数字化时代的发展,PDF 文档成为广泛应用于各行业的重要文件格式。为了提高OpenHarmony/HarmonyOS生态系统的功能性和用户体验,我们需要一款支持打开、编辑PDF文件的应用程序。 使用户能够轻松打开、浏览和编辑PDF文件。该应用将充分利用OpenHarmony/HarmonyO…

激光雷达原理

全球汽车行业正在进行自动化变革&#xff0c;这将彻底改变交通运输的安全和效率水平。 戴姆勒在S级豪华车型中引入L3级自动驾驶&#xff08;L3&#xff0c;在特定条件下自动驾驶&#xff0c;人类驾驶员一旦被请求就会随时接管&#xff09;是自动驾驶革命的一个重大突破。其他多…

Zoho Projects 8.0震撼来袭,项目管理再升级! 全方位功能变化解读

有效的项目管理方法保证项目按照进度、成本、质量要求进行交付&#xff0c;是针对单个项目或项目群的管理&#xff0c;从而确保项目符合企业的战略目标&#xff0c;实现企业收益最大化。 对于项目管理工作来说&#xff0c;我们通常会认为只有专业的经理才能胜任&#xff0c;软件…

k8s中容器的调度与创建:CRI,cgroup

container调度与创建 选自&#xff1a;K8s、CRI与container - packy的文章 - 知乎 https://zhuanlan.zhihu.com/p/102897620 Cgroup创建&#xff1a; cgexec -g cpu,memory:$UUID \ > unshare -uinpUrf --mount-proc \ > sh -c "/bin/hostname $UUID &…

力扣hot100题解(python版36-40题)

36、二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 *中序 遍历* 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2]示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[]示例 3&#xff1a; 输入&am…

四、西瓜书——支持向量机

第六章 支持向量机 1.间隔与支持向量 支持向量机的原理是寻找与支持向量具有最大间隔的划分超平面。支持向量机具有一个重要性质: 训练完成后,大部分的训练样本都不需保留,最终模型仅与支持向量有关. 首先&#xff0c;超平面的方程为&#xff1a; 点到超平面的距离为&#xff…

如何通过Jenkins进行自动化构建项目

1. 介绍 Jenkins 是一个开源的持续集成&#xff08;CI&#xff09;和持续交付&#xff08;CD&#xff09;工具&#xff0c;旨在自动化软件开发过程中的构建、测试和部署。它是一个基于 Java 编写的自动化服务器&#xff0c;在软件开发生命周期的各个阶段提供自动化支持。 官方…

c语言经典测试题10

1.题1 int fun( int x) {int n 0;while (x 1){n;x x | (x 1);}return n; } int main() {int ret fun(2014);printf("%d", ret);return 0; } 上述代码运行结果是什么呢&#xff1f; 我们来分析一下&#xff1a;这里的fun函数有一个while循环&#xff0c;其判断…

改造小技巧:如何将客厅与阳台完美连通?福州中宅装饰,福州装修

问1&#xff1a;什么户型结构更适合客厅打通阳台&#xff1f; 一般来说&#xff0c;现代、简约或者开放式的户型结构更适合将客厅与阳台打通。这样可以通过移除非承重墙来增加室内采光和空间感。需要注意的是&#xff0c;在打通之前&#xff0c;需要考虑房屋的结构和承重墙的位…

Qt下使用modbus-c库实现PLC线圈/保持寄存器的读写

系列文章目录 提示&#xff1a;这里是该系列文章的所有文章的目录 第一章&#xff1a;Qt下使用ModbusTcp通信协议进行PLC线圈/保持寄存器的读写&#xff08;32位有符号数&#xff09; 第二章&#xff1a;Qt下使用modbus-c库实现PLC线圈/保持寄存器的读写 文章目录 系列文章目录…

【活动】前端世界的“祖传代码”探秘:从古老魔法到现代重构

作为一名前端工程师&#xff0c;我时常在项目中邂逅那些被岁月打磨过的“祖传代码”。它们就像古老的魔法书页&#xff0c;用HTML标签堆砌起的城堡、CSS样式表中的炼金术&#xff0c;以及JavaScript早期版本中舞动的符咒。这些代码承载着先驱们的探索精神和独特智慧&#xff0c…

内网信息搜集

目录 内网基础知识 基本流程图 怎么判断是否在域内 常规信息类收集-应用&服务&权限等 cs信息搜集 bloodhound安装及使用 内网基础知识 工作组&#xff1a;将不同的计算机按照功能分别列入不同的组&#xff0c;想要访问某个部门的资源&#xff0c;只要在【网络】里…