【软考数据库】第七章 关系数据库

news2024/11/23 12:17:57

目录

7.1 关系数据库概述

7.2 关系代数

7.3 元组演算与域演算

7.4 查询优化

7.5 关系数据库设计 

7.6 模式分解


前言:

笔记来自《文老师软考数据库》教材精讲,精讲视频在b站,某宝都可以找到,个人感觉通俗易懂。

7.1 关系数据库概述

  • 关系模型采用单一的数据结构一关系,来表示现实世界的实体以及实体间的联系,对应的逻辑结构为二维表。
  • 候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。
  • 主码(Primary Key):或称主键,若一个关系有多个候选码,则选定其中一个为主码。
  • 主属性(Primeattribute):包含在任何候选码中的属性称为主属性。不包含在任何候选码中的属性称为非主属性(NonPrime attribute)
  • 外码(Foreignkey):如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
  • 全码(AIl-key):关系模型的所有属性组是这个关系模式的候选码,称为全码。

7.2 关系代数

  • 并:结果是两张表中所有记录数合并,相同记录只显示一次;
  • 交:结果是对长表中相同的过录;
  • 差:S1- S2 结果是S1表中有,而S2表中没有的那些记录。

  • 笛卡尔积:S1*S2,产生的结果包括S1和S2的所有属性列,并且S1中每条记录依次和S2中所有记录组合成一条记录,最终属性列为S1+S2属性列,记录数为S1*S2记录数;
  • 投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示;
  • 选择:实际是按条件选择某关系模式中的某条记录。

  • 自然连接的结果显示全部的属性列,但是相同属性列只显示一次,显示两个关系模式中属性相同且值相同的记录设有关系R、S如下左图所示,自然连接结果如下右图所示:

  • 一般连接(\theta连接)和等值连接:先做笛卡尔积,在其基础上满足连接条件,如下图分别是选取RS笛卡尔积后条件第C行小于第E的数据,R的第B行等于S的第B行数据

  • 全外连接(FULLOUTERJOIN):关系RS进行自然连接时,把舍弃的元组也保存在结果关系中,在其他表的属性上填NULL。
  • 左外连接(LEFTOUTERJOIN):关系RS进行自然连接时,只把左边关系R中要舍弃的元组保留。
  • 右外连接:关系RS进行自然连接时,只把右边关系S中要舍弃的元组保留

7.3 元组演算与域演算

把数理逻辑的谓词演算引入到关系运算中,就可得到以关系演算为基础的运算关系演算又可分为:
● 元组关系演算(元组演算):以元组为变量
● 域关系演算(域演算):以属性(域)为变量

7.4 查询优化

【选择操作的实现】

  • 查询方法:
    简单的全表扫描方法:对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出。
    对于小表,这种方法简单有效;对于大表,顺序扫描十分费时,效率低。
  • 优化方法:索引(或散列)扫描方法:如果选择条件中的属性上有索引(如hash索引),用索引扫描法通过索引先找到满足条件的元组主键或元组指针,再通过元组指针直接在查询的基本表中找到元组。

【连接操作的实现】
连接操作是查询处理中最耗时的操作之一。

  • 查询方法:
    嵌套循环方法:对外层循环R的每一个元组,检索内层循环S中的每一个元组,并检查这两个元组在连接属性sno上是否相等,如果满足连接条件,则串接后作为结果输出,直到双重循环结束。
  • 优化方法:
    排序-合并方法:适合连接的各表已经有序的情况,步骤为:
    (1)先给各表排序;
    (2)取R表中第一个sno,依次扫描S表中具有相同sno的元组把它们连接起来;
    (3)当扫描到sno不相同的第一个元组时,返回到R表扫描其下一个元组,再用其下一个元组去S表中查找相同sno的元组,重复这个过程。
  • 查询优化的目标:选择有效策略,求得给定关系表达式的值,使得查询代价最小。
  • 优化准则:
    (1)提早执行选择运算,目的是减少中间结果
    (2)合并乘积与选择运算为连接运算,目的是避免扫描大的关系
    (3)将投影运算与其他运算同时进行,目的是避免重复扫描关系
    (4)将投影运算与二目运算结合起来,目的是减少扫描关系的次数
    (5)在执行连接前对关系适当的预处理,如索引连接法、排序合并法存储公共子表达式,目的是只需检索中间结果,不需重复计算。
  • 效率问题
    关系代数运算的效率,归根结底是看参与运算的两张表格的属性列数和记录数属性列和记录数越少,参与运算的次数自然越少,效率就越高。

7.5 关系数据库设计 

  • 给定一个X,能唯一确定一个Y,就称X确定Y,或者说Y依赖于x,例如Y=X*X函数。
  • 函数依赖又可扩展以下两种规则:
    (1)部分函数依赖:A可确定C,(A,B)也可确定C,(A,B)中的一部分 (即A) 可以确定C,称为部分函数依赖。
    (2)传递函数依赖:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依赖;若A和B等价,则不存在传递,直接就可确定C。

  • 函数依赖的公理系统(Armstrong)设关系模式R<U,F>U是关系模式R的属性全集,F是关系模式R的一个函数依赖集。对于R<U,F>来说有以下的:

 【几个比较重要的概念】

  • 超键:能唯一标识此表的属性的组合;
  • 侯选键:超键中去掉冗余的属性,剩余的属性就是候选键;
  • 主键:任选一个候选键,即可作为主键;
  • 外键:其他表中的主键;
  • 主属性:候选键内的属性为主属性,其他属性为非主属性;
  • 实体完整性约束:即主键约束,主键值不能为空,也不能重复;
  • 参照完整性约束:即外键约束,外键必须是其他表中已经存在的主键的值或者为空;
  • 用户自定义完整性约束:自定义表达式约束,如设定年龄属性的值必须在0到150之间。

【第一范式1NF】
● 关系中的每一个分量必须是一个不可分的数据项。通俗地说,第一范式就是表中不允许有小表的存在。比如,对于如下的员工表,就不属于第一范式:

实例:用一个单一的关系模式学生来描述学校的教务系统学生(学号,学生姓名,系号,系主任姓名课程号,成绩)依赖关系(学号->学生姓名,学号->系号,系号->系主任姓名,学号->课程号,(学号,课程号) ->成绩)

【第二范式】
● 如果关系R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF。通俗地说,2NF就是在1NF的基础上,表中的每一个非主属性不会依赖复合主键中的某一个列。按照定义,上面的学生表就不满足2NF,因为学号不能完全确定课程号和成绩(每个学生可以选多门课)。

将学生表分解为:
● 学生(学号,学生姓名,系编号,系名,系主任)
● 选课(学号,课程号,成绩)
● 每张表均属于2NF。 

第二范式消除了非主属性对主属性的部分函数依赖

【第三范式】

● 在满足1NF的基础上,表中不存在非主属性对码的传递依赖;
继续上面的实例,学生关系模式就不属于3NF,因为学生无法直接决定系主任和系名,是由学号->系编号,再由系编号->系主任,系编号->系名,因此存在非主属性对主属性的传递依赖

将学生表进一步分解为:
学生(学号,学生姓名,系编号)
系(系编号,系名,系主任)
选课(学号,课程号,成绩)
每张表都属于3NF。

【BC范式BCNF】
是指在第三范式的基础上进一步消除主属性对于码的部分函数依赖和传递依赖。通俗的来说,就是在每一种情况下,每一个依赖的左边决定因素都必然包含候选律,如下:

  • 上图中,候选键有两种情况:组合键(S,T)或者(S,J),依赖集为(SJ-T,T一可知,STJ三个属性都是主属性,因此其达到了3NF(无非主属性),然而,第二种情况,即(SJ)为候选键的时候,对于依赖T->J,T在这种情况不是候选键,即T-J的决定因素不包含任意候选码,因此上图不是BCNF。
  • 要使上图关系模式转换为BCNF也很简单,只需要将依赖T->J变为TS->J即可这样其左边决定因素就包含了候选键之一S 

7.6 模式分解

  • 范式之间的转换一般都是通过拆分属性,即模式分解,将具有部分函数依赖和传递依赖的属性分离出来,来达到一步步优化,一般分为以下两种:
    (1)保持函数依赖分解对于关系模式R,有依赖集F,若对R进行分解,分解出来的多个关系模式,保持原来的依赖集不变,则为保持函数依赖的分解。另外,注意要消除掉冗余依赖(如传递依赖)
    ● 实例:设原关系模式R(A,B,C),依赖集F(A->B,B-C,A-C),将其分解为两个关系模式R1(A,B)和R2(B,C),此时R1中保持依赖A->B,R2保持依赖B->C,说明分解后的R1和R2是保持函数依赖的分解,因为A->C这个函数依赖实际是一个几余依赖,可以由前两个依赖传递得到,因此不需要管。

  • 无损分解:分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。

  • 当分解为两个关系模式,可以通过以下定理判断是否无损分解定理:如果R的分解为p=R1,R2),F为R所满足的函数依赖集合,分解p具有无损连接性的充分必要条件是R1nR2->(R1-R2)或者R1nR2->(R2-R1)。

  • 当分解为三个及以上关系模式时,可以通过表格法求解,如下

 


【软考数据库】第一章 计算机系统基础知识 
【软考数据库】第二章 程序语言基础知识
【软考数据库】第三章 数据结构与算法
【软考数据库】第四章 操作系统知识
【软考数据库】第五章 计算机网络
【软考数据库】第六章 数据库技术基础

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

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

相关文章

服务端接口优化方案

一、背景 针对老项目&#xff0c;去年做了许多降本增效的事情&#xff0c;其中发现最多的就是接口耗时过长的问题&#xff0c;就集中搞了一次接口性能优化。本文将给小伙伴们分享一下接口优化的通用方案。 二、接口优化方案总结 1. 批处理 批量思想&#xff1a;批量操作数据…

YOLOv5s GTX 1660 Ti训练时出现,box,obj,cla全是nan的问题,Pytorch和cuda、cudnn版本不对

这里写自定义目录标题 参考资料问题描述当前使用版本尝试解决问题版本&#xff08;1&#xff09;尝试解决问题版本&#xff08;2&#xff09;CUDA卸载参考CUDA卸载之后发现依然还在&#xff0c;需要把torch卸载掉。 参考资料 1.Github_YOLOv5_nan问题 2.查看CUDA最高可使用版…

PHP+vue基于web的新闻发布投稿系统评论网站

运行环境:phpstudy/wamp/xammp等 开发语言&#xff1a;php 后端框架&#xff1a;Thinkphp5 前端框架&#xff1a;vue.js 服务器&#xff1a;apache 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat/phpmyadmin 系统包含了二个用户&#xff0c;即管理员和用户&#xff0…

ThingsBoard使用docker compose集群部署的问题以及如何解决问题

1、问题回顾 接着上一节继续讲解,上一节我们把整个服务全部都运行起来了,但是访问页面报错,最后查看的问题是前端的容易里面报错: 然后执行脚本删除所有的容器 2、问题分析 当遇到这个问题的时候,我当时真的不知道如何去解决,然后我又尝试使用官方的镜像来部署,发现官…

Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换ScaleImage算法增强(C#)

Baumer工业相机堡盟工业相机如何联合BGAPISDK和Halcon实现图像的线性灰度变换算法增强&#xff08;C#&#xff09; Baumer工业相机Baumer工业相机使用图像算法增加图像的技术背景Baumer工业相机通过BGAPI SDK联合Halcon使用线性灰度变换增强算法1.引用合适的类文件2.BGAPI SDK在…

人大金仓亮相国际金融展,打造“金融+产业+生态”创新模式

4月27日&#xff0c;以“荟萃金融科技成果&#xff0c;展现数字金融力量&#xff0c;谱写金融服务中国式现代化新篇章”为主题的2023中国国际金融展圆满落幕。作为已经举办30年的行业盛会&#xff0c;人大金仓再一次重磅亮相&#xff0c;全方位展示国产数据库前沿应用和创新服务…

C/C++开发神器CLion全新发布v2023.1——新软件包管理解决方案

CLion是一款专为开发C及C所设计的跨平台IDE。它是以IntelliJ为基础设计的&#xff0c;包含了许多智能功能来提高开发人员的生产力。这种强大的IDE帮助开发人员在Linux、OS X和Windows上来开发C/C&#xff0c;同时它还使用智能编辑器来提高代码质量、自动代码重构并且深度整合CM…

国产仪器 6914CA/6914DA/6914EA/6914CX/6914DX/6914EX数字示波器

6914系列数字示波器将台式示波器的Any Acquire Phosphor技术融入到PXI/PXIe架构中&#xff0c;以模块化的结构形式提供台式示波器的功能和性能。该系列示波器具有6个产品型号&#xff0c;带宽350MHz~1GHz&#xff0c;最高采样率5GSa/s&#xff0c;最大存储深度200Mpts/CH&#…

vue项目将多张图片生成一个gif动图

当前做项目有一个需求是将多张图片生成一个gif动图的形式 类似下面图片几张图片叠加生成一个gif动图 图片涉及工作隐私&#xff0c;就不公开啦 我们要引入一个gif.js的引入包&#xff0c;但是他没有直接引入的方式&#xff0c;只能从官方下载文件包&#xff0c;下载地址&#…

面向航空智能制造的边缘计算光交换技术研究

源自&#xff1a;航空科学技术 作者&#xff1a;赵俊 吴宝锋 徐盛果 孙小菡 摘 要 面向航空智能制造大批量数据采集与传递的实时性要求&#xff0c;提出一种基于异步光分组交换&#xff08;optical packet switching,OPS&#xff09;技术的具有多级管理能力的边缘计算系统…

关于千兆和万兆电口模块,你了解多少?

网络技术的不断发展&#xff0c;使得传输速度的要求越来越高。为了满足这种需求&#xff0c;千兆和万兆电口模块逐渐成为了现代网络设备中的重要组成部分。 一、什么是千兆电口模块&#xff1f; 千兆电口模块是一种用于网络设备之间传输数据的光转电模块&#xff0c;它们可以…

谷粒商城二十四Sentinel限流熔断降级

我们在秒杀服务加的以上所有手段都是为了快&#xff0c;除了快之外&#xff0c;我们还需要保证稳定。 我们即使再快也会有一个极限值&#xff0c;现在假设单机下每秒处理一万个单&#xff0c;这已经是超高的处理能力了&#xff0c;秒杀服务上了五台服务器&#xff0c;有三台掉…

【直播预告】“知·道关基 行·筑安全”关基保护线上研讨会将于5月5日、5月9日开启

随着信息化建设的不断发展&#xff0c;网络安全形势日趋严峻&#xff0c;围绕网络空间主导权和控制权的竞争加剧&#xff0c;全球网络安全博弈日趋激烈。 关键信息基础设施是数字经济社会运行的神经中枢&#xff0c;事关国家网络安全和数据安全&#xff0c;日益成为国家网络空…

BetaFlight统一硬件配置文件研读之serial命令

BetaFlight统一硬件配置文件研读之serial命令 1. 源由2. 代码分析3. 实例分析4. 配置情况5. 参考资料 统一硬件配置文件的设计是一种非常好的设计模式&#xff0c;可以将硬件和软件的工作进行解耦。 1. 源由 cli命令中serial是对UART串口的配置&#xff0c;通常情况下BetaFli…

信创赛道全国二等奖!创邻科技国产化解决方案再获佳绩

4月27日&#xff0c;第六届数字中国建设峰会在福建省福州市开幕。本届峰会以“加快数字中国建设&#xff0c;推进中国式现代化”为主题&#xff0c;以宣传贯彻落实《数字中国建设整体布局规划》为主线&#xff0c;集中展示数字中国建设最新成果&#xff0c;分享发展经验&#x…

C++题解:静态区间最大值

题目链接 P3865 ST 表 题目描述 这是一道 ST 表经典题——静态区间最大值 请注意最大数据时限只有 0.8s&#xff0c;数据强度不低&#xff0c;请务必保证你的每次查询复杂度为 O ( 1 ) O(1) O(1)。若使用更高时间复杂度算法不保证能通过。 如果您认为您的代码时间复杂度正…

java版企业电子招投标采购系统源码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

ansible常见概念总结

目录 1、play和playbook和role 2、幂等性 3、清单 4、配置文件(ansible.cfg) 5、变量 5.1 在playbook中使用变量&#xff1a; 5.2 在playbook中使用变量文件&#xff1a; 6、事实 7、循环 8、处理程序 9、块 10、动态清单文件 11、角色 1、play和playbook和role …

本地事务,分布式事务(Seata)

本地事务 四大特性ACID A:原子性(Atomicity)&#xff1a;事务是不可分割的最小操作但愿&#xff0c;要么全部成功&#xff0c;要么全部失败 C:一致性(Consistency)&#xff1a;事务完成时&#xff0c;必须使所有数据都保持一致状态 l:隔离性(Isolation)&#xff1a;数据库系统…

[架构之路-188]-《软考-系统分析师》-3-操作系统 - 图解页面替换算法LRU、LFU

目录 一、内存置换算法的缘由 二、算法详解 2.1 最佳页面置换算法&#xff08;OPT&#xff09; 》 理论上的最优&#xff0c;实际无法保证 2.2 先进先出置换算法&#xff08;FIFO&#xff09;-- 按加载时间/最早访问时间排序 2.3 最近最久未使用的置换算法&#xff08;L…