数据库-第六/七章 关系数据理论和数据库设计【期末复习|考研复习】

前言

总结整理不易,希望大家点赞收藏。

给大家整理了一下数据库系统概论中的重点概念,以供大家期末复习和考研复习的时候使用。
参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。


数据库系统概论系列文章传送门:
第一章 绪论
第二/三章 关系数据库和标准语言SQL
第四/五章 数据库安全性和完整性
第六/七章 关系数据理论和数据库设计
第八/九章 数据库编程和优化
第十章 数据库恢复技术
第十一章 并发控制


文章目录

  • 前言
  • 第六章 关系数据理论
    • 6.1 规范化
    • 6.2 范式
    • 6.3 规范化小结
  • 第七章 数据库设计
    • 7.1 数据库设计
    • 7.2 数据库设计六个阶段
    • 7.3 需求分析主要任务
    • 7.4 数据字典
    • 7.5 概念结构设计
    • 7.6 E-R模型:实体、属性、实体之间的联系。
    • 7.7 概念结构设计过程
    • 7.8 E-R图的集成
    • 7.9 E-R图向关系模型的转换(就是概念模型转逻辑模型)
    • 7.10 数据模型的优化
    • 7.11 数据库的物理设计通常分两步:
    • 7.12 存取方法:快速存取数据库中的数据技术
    • 7.13确定数据库的存储结构
    • 7.14 数据库的实施
    • 7.15数据库的运行和维护
  • 练手题
    • 8.1
    • 8.2
    • 8.3
    • 8.4
    • 8.5
    • 8.6
    • 8.7 语法树
    • 8.8
  • 下一章传送门


第六章 关系数据理论

6.1 规范化

函数依赖:
关系r中不可能存在两个元组在X属性上相等,在Y属性上不相等。成为X->Y。Y函数依赖于X。X决定Y。一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号。学号->学生姓名
函数依赖从性质上分为完全函数依赖、部分函数依赖和传递函数依赖。
完全函数依赖和部分函数依赖:
例,(sno,con)->grade是完全函数依赖 (sno,cno)->sdept是部分函数依赖因为sno->sdept。
传递函数依赖 A->B B->C 所以A->C
候选码:U是R上的属性。U完全函数依赖于K,K为R的候选码
超码: U部份依赖于K,K为U的超码。候选码是最小的超码
候选码多于一个选定一个为主码

6.2 范式

1NF第一范式:
关系中的每一个分量必须是不可分的数据项。规范化:一个低级的范式的关系模型通过模式分解可以转换成若干高一级的范式。
2NF第二范式:
每一个非主属性完全函数依赖于任何一个候选码,也就是说第二范式是消除了非主属性对码的部份依赖。例如:SLC(sno,sdept,sloc,cno,grade)满足第一范式,不满足第二范式。(sno,cno)->sdept是部分函数以来。要把表拆开。SLC1(sno,sloc,sdept) SLC2(sno,cno,grade)
3NF第三范式:
每一个非主属性既不传递依赖于码,也不部分依赖于码,第三范式消除了非主属性对码的传递依赖。例如:SLC1(sno,sloc,sdept) 满足第二范式,不满足第三范式。再拆SD(sno,sdept) SL(sno,sloc)
BCNF BC范式:
每一个决定因素都有码。不允许主键的一部分被另一部分或者其他部分决定。BC范式一定满足第三范式,但是第三范式不一定满足BC范式。例如:(S,J)->T,(S,T)->J T->J 所有属性都是主属性,满足第三范式,(但T不是码,不满足BCNF)
多值依赖 设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。Z为空时,X->->Y平凡的多值依赖,多值依赖具有对称性,多值依赖具有传递性,X->->Y, Y->->Z则X->->Z-Y
4NF限制不允许有非平凡非函数依赖的多值依赖

6.3 规范化小结

规范化的基本思想:逐步消除数据依赖中不合适的部分,达到某种程度上的分离,即“一事一地”的设计原则。规范化的目的就是为了解决插入异常,删除异常,数据冗余等问题。规范化实质上是概念的单一化。

第七章 数据库设计

7.1 数据库设计

数据库设计是指对于一个给定的应用环境,设计构造数据库和应用系统使之能够有效地存储和管理数据。满足各种用户地应用需求。
“三分技术,七分管理,十二分基础数据”。重要环节是数据的收集,整理,组织和不断更新。

7.2 数据库设计六个阶段

1、需求分析
2、概念结构设计
3、逻辑结构设计
4、物理结构设计
5、数据库实施
6、数据库运行和维护

7.3 需求分析主要任务

通过详细调查现实世界要处理的对象,明确用户的各种需求,以此确定系统要实现的功能。
用户的要求:
(1) 信息要求
(2)处理要求
(3)安全性和完整性要求

7.4 数据字典

是关于所有数据库数据的描述,即元数据。在需求分析阶段建立,在设计过程中不断修改、完善。在数据库设计过程中有很重要的地位。通常包括数据项、数据结构、数据流、数据存储等。

7.5 概念结构设计

将需求分析得到的用户需求抽象为概念模型的过程就是概念结构设计。是整个数据库设计的关键。
概念模型能真实、充分的反映现实世界。易于理解,易于更改,易于向各种数据模型转换。是数据模型地基础。

7.6 E-R模型:实体、属性、实体之间的联系。

(1)实体型的联系:一对一 (1:1);一对多(1:n);多对多(m:n)
(2)实体用矩形,属性用椭圆形,联系用菱形表示

7.7 概念结构设计过程

(1)确定属性和实体,属性必须不能具有描述的性质,不包含其他属性。
(2) 找到属性之间的联系,(一对一之类)
(3) 画E-R图
(4) 大型系统可能会需要集成(先设计子系统的E-R图,然后集成)

7.8 E-R图的集成

(就是将子系统得E-R图集成在一起)一般分两步:合并,修改重构
合并需要消除冲突:属性冲突、命名冲突、结构冲突。
1、属性冲突:属性值的类型、取值范围,单位不一致。
2、命名冲突:同名异义,异名同义。
3、结构冲突:同一对象在不同应用中具有不同的抽象。实体联系在不同的关系中为不同的类型。

7.9 E-R图向关系模型的转换(就是概念模型转逻辑模型)

一个实体型转换为一个关系模型,关系的属性就是实体的属性,关系的码就是实体的码。
根据实体间的联系转换成不同的关系模型(1:1,1:n, m:n)

7.10 数据模型的优化

(1) 确定数据依赖
(2) 对于各关系模型之间的数据依赖进行极小化处理,消除冗余的联系
(3) 按照数据依赖理论对关系模型逐一进行分析
(4) 找到合适的范式来进行分解和合并

7.11 数据库的物理设计通常分两步:

(1) 确定数据库的物理结构:存取方法和存储结构
(2) 对物理结构进行评价,重点是时间和空间效率。之后再进行进一步操作,修改或者数据库实施

7.12 存取方法:快速存取数据库中的数据技术

1、B+树索引,hash索引,聚簇方法。
2、前两者都是建立索引,具体概念参照数据结构
聚簇方法:为了提高某个属性的查询速度,把这个属性上具有相同值的元素集中存放在连续的物理块中称为聚簇,该属性称为聚簇码。一个数据库可以建立多个聚簇,一个关系只能加入一个聚簇。聚簇的开销是相当大的,会导致物理位置发生变化.
在这里插入图片描述
B+Tree与 B-Tree 的区别:
1、所有的数据都会出现在叶子节点。
2、叶子节点形成一个单向链表。
MySQL 索引数据结构对经典的B+Tree 进行了优化。在原B+Tree 的基础上,增加一个指向相邻叶子节点的链表指针,就形成了带有顺序指针的 B+Tree,提高区间访问的性能。变成了双向循环链表。

为什么 InnoDB 存储引擎选择使用 B+Tree 索引结构?
答:相对于二叉树,层级更少,搜索效率高。对于 B-Tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针也跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低。相对于 Hash 索引,B+Tree 支持范围匹配及排序操作。

7.13确定数据库的存储结构

考虑三方面:存取时间、存储空间利用率、维护代价三方面。

7.14 数据库的实施

设计人员根据上面的概念模型、逻辑模型、物理设计对数据库进行程序设计、编码。调试,最后运行。
数据要分批分期地组织数据入库,待运行稳定后再大批入库。也要做好转储和恢复的工作防止出现故障。

7.15数据库的运行和维护

(1) 数据库的转储和恢复
(2) 数据库的安全性和完整性控制
(3) 性能的监督、分析和改造
(4) 数据库的重组织与重构造。
数据库重组织不修改原设计的逻辑结构和物理结构,而数据库的重构造会部分修改模式和内模式。

练手题

8.1

在这里插入图片描述
这里答案仅作参考,我自己随便写的,照着书好好好好做做,这个题很重要的
在这里插入图片描述

8.2

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

8.3

在这里插入图片描述

在这里插入图片描述

8.4

在这里插入图片描述

8.5

在这里插入图片描述

8.6

在这里插入图片描述

8.7 语法树

我不知道会不会考,期末考过反正是
弄两个做做吧
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

8.8

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

下一章传送门

第八/九章 数据库编程和优化

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

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

相关文章

【Docker】容器的概念

容器技术:容器技术是基于虚拟化技术的,它使应用程序从一个计算机环境快速可靠地转移到另一个计算机环境中,可以说是一个新型地虚拟化技术。 一、docker容器 Docker:是一个开源地容器引擎Docker 是一种轻量级的容器化技术,其主要原…

阿里云服务器租用多少钱一个月?9元1个月?

阿里云服务器租用多少钱一个月?9元1个月?已经降价到5元一个月了。阿里云服务器1个月最低5元/月起,阿里云服务器价格可以按年、按月和按小时购买,本文阿里云服务器网aliyunfuwuqi.com来详细说下阿里云服务器一个月收费价格表&#…

计算机系统结构-中断例题笔记

背景:计算机系统结构考试中,中断处理程序、运行程序的过程示意图是重要考点。 中断概念:CPU中止正在执行的程序,转去处理随机提出的请求,待处理完后,再回到原先被打断的程序继续恢复执行的过程。 考点1.设…

WPF 自定义彩色控制台功能

文章目录 前言环境流内容一个简单的控制台 自动添加数据无法添加数据模板代码添加参数简单的案例添加和清空功能完善代码 额外功能添加移动到底部添加样式 总结 前言 在WPF中添加模拟控制台,可以试试的看到最新的日志信息。但是普通的TextBlock只是纯粹的黑色&…

分布式执行引擎ray入门--(2)Ray Data

目录 一、overview 基础代码 核心API: 二、核心概念 2.1 加载数据 从S3上读 从本地读: 其他读取方式 读取分布式数据(spark) 从ML libraries 库中读取(不支持并行读取) 从sql中读取 2.2 变换数据…

html--彩虹马

文章目录 htmljscss 效果 html <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>Rainbow Space Unicorn</title> <link rel"stylesheet" href"css/style.css"> &l…

TCP/IP 七层架构模型

传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议。 套接字&#xff08;socket&#xff09;是一个抽象层&#xff0c;应用程序可以通过它发送或接收数据&#xff0c;可对其进行像对文…

【Linux】常用操作命令

目录 基本命令关机和重启帮助命令 用户管理命令添加用户&#xff1a;useradd 命令修改密码&#xff1a;passwd 命令查看登录用户&#xff1a;who 命令查看登录用户详细信息 :w切换用户 目录操作命令cdpwd命令目录查看 ls [-al] 目录操作【增&#xff0c;删&#xff0c;改&#…

NUMA(Non-Uniform Memory Access)架构的介绍

1. NUMA由来 最早的CPU是以下面这种形式访问内存的&#xff1a; 在这种架构中&#xff0c;所有的CPU都是通过一条总线来访问内存&#xff0c;我们把这种架构叫做SMP架构&#xff08;Symmetric Multi-Processor&#xff09;&#xff0c;也就是对称多处理器结构。可以看出来&…

Uniapp开发模板unibest

&#x1f3e0;简介 unibest 是一个集成了多种工具和技术的 uniapp 开发模板&#xff0c;由 uniapp Vue3 Ts Vite4 UnoCss uv-ui VSCode 构建&#xff0c;模板具有代码提示、自动格式化、统一配置、代码片段等功能&#xff0c;并内置了许多常用的基本组件和基本功能&#…

【PowerMockito:编写单元测试过程中原方法使用@Value注解注入的属性出现空指针】

错误场景 执行到Value的属性时会出现空指针&#xff0c;因为Value的属性为null 解决方法 在测试类调用被测试方法前&#xff0c;提前设置属性值&#xff0c;属性可以先自己定义好 ReflectionTestUtils.setField(endpointConnectionService, "exportUdpList", lis…

Linux 之七:Linux 防火墙 和进程管理

防火墙 查看防火墙 查看 Centos7 的防火墙的状态 sudo systemctl status firewalld。 查看后&#xff0c;看到active(running)就意味着防火墙打开了。 关闭防火墙&#xff0c;命令为&#xff1a; sudo systemctl stop firewalld。 关闭后查看是否关闭成功&#xff0c;如果…

【机器学习】一文掌握逻辑回归全部核心点(上)。

逻辑回归核心点-上 1、引言2、逻辑回归核心点2.1 定义与目的2.2 模型原理2.2.1 定义解析2.2.2 公式2.2.3 代码示例 2.3 损失函数与优化2.3.1 定义解析2.3.2 公式2.3.3 代码示例 2.4 正则化2.4.1 分类2.4.2 L1正则化2.4.3 L2正则化2.4.4 代码示例 3、总结 1、引言 小屌丝&#…

从空白镜像创建Docker hello world

文章目录 写在前面基础知识方法一&#xff1a;使用echo工具方法二&#xff0c;使用c语言程序方法三&#xff0c;使用汇编语言小结 写在前面 尝试搞了下docker&#xff0c;网上的教程大多是让下载一个ubuntu这种完整镜像&#xff0c;寥寥几篇从空白镜像开始创建的&#xff0c;也…

Oracle VM VirtualBox安装Ubuntu桌面版

背景&#xff1a;学习Docker操作 虚拟机软件&#xff1a;Oracle VM VirtualBox 7.0 系统镜像&#xff1a;ubuntu-20.04.6-desktop-amd64.iso 在Oracle VM VirtualBox新建一个虚拟电脑 选择好安装的目录和选择系统环境镜像 设置好自定义的用户名、密码、主机名 选择一下运行内…

执行除法运算返回浮点数结果operator.truediv()返回商的整数部分operator.floordiv()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 执行除法运算 返回浮点数结果 operator.truediv() 返回商的整数部分 operator.floordiv() 下列选项可以执行除法运算并得到浮点数结果的是&#xff08;&#xff09; import operator print(&…

凌鲨微应用架构

微应用是静态网页加上凌鲨提供的扩展能力而形成的一种应用&#xff0c;主要特点是开发便捷&#xff0c;安全。 微应用架构 组件说明 名称 说明 微应用 webview窗口&#xff0c;显示web服务器上的页面 接口过滤器 根据权限配置,屏蔽非授权接口访问 接口提供者 tauri注入…

文件操作上(c语言)

目录 1. 文件的作用2. 什么是文件2.1 程序文件2.2 数据文件2.3 文件名 3. 二进制文件和文本文件4. 文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 文件的打开与关闭4.3.1 文件的打开模式4.3.2 实例代码 1. 文件的作用 使用文件可以将数据进行持久化的保…

P1958 上学路线

难度&#xff1a;普及- 题目描述 你所在城市的街道好像一个棋盘&#xff0c;有 a 条南北方向的街道和 b 条东西方向的街道。南北方向的 a 条街道从西到东依次编号为 1 到 a&#xff0c;而东西方向的 b 条街道从南到北依次编号为 1 到 b&#xff0c;南北方向的街道 i 和东西方…

【期刊】ACM Transactions on Privacy and Security

首页截图 subject areas 混合模式 根据官网介绍&#xff0c;本期刊不在金OA行列&#xff0c;可以自主选择出版模式。 出版方向 Topics of interest include 发文量 季刊&#xff0c;发文量很小 图像安全领域 未在今年发表图像安全领域论文。