数据库系统 复习总结

2023-11-05


填空(10)、选择(5)、简答(10)、解答(75)

绪论

数据库管理系统:管理数据库,支持应用的软件系统 DataBase Management System (DBMS)
数据字典 是数据库管理系统的信息中心

  • 数据
    描述现实世界对象或抽象概念的信息载体
    数据有不同的类型及语义
  • 数据库
    存储在计算机系统 中的数据集合
    数据库模式、数据库实例
  • 数据库管理系统
    管理数据库的软件系统
    支持数据存储、维护、查询、安全、正确
  • 数据库系统
    DB、DBMS、开发工具、应用系统、用户
  • 三层数据抽象
    视图抽象、概念抽象、物理抽象
    外模式、逻辑模式、内模式
  • 两级数据独立性
    物理独立性、逻辑独立性
  • 数据模型
    数据结构、数据操作、数据约束
    ER模型、关系模型、面向对象模型等
  • 数据语言
    DDL(Description 数据定义语言)、DML(Manipulation 数据操纵语言)、DCL(Control 数据控制语言)

关系数据库

关系模型

数据库中常见的关系类型

  • 基本关系(又称基本表、基表):
    • 由用户定义的,在数据库中实际存储的关系
    • 可以查询与更新(增、删、改)
  • 中间结果关系
    • 对关系进行查询,产生的中间结果
    • 在数据库中临时/永久存储(由系统建立)
    • 只可查询,不可更新
  • 视图关系(简称视图,又叫虚表)
    • 用户根据需要定义的关系
    • 定义在基本关系或视图上
    • 只有模式,没有实例
    • 没有对应的实际存储的数据
    • 可查询,更新受限

完整性约束

软件系统无法保证数据的真实正确性,但是可以保证数据符合明确定义的约束

  • 超码:超码的值可以在关系模式R中唯一地标识一个元组
  • 候选键:只有其任何真子集都不是超码的 超码 才是候选键,即候选键 ⊆ 超码
    如 student(stuID, sName, sSex, sGrade…) 中,(stuID),(stuID, sName),(stuID, sName, sSex),都是超码,但是只有(stuID)是候选键,没有多余的属性

关系运算

选择 σ X θ Y ( R ) \sigma_{X \theta Y}(R) σY(R),其中 θ ∈ { = , ≠ , > , ≥ , < , ≤ } \theta ∈\{=, ≠, >, ≥, <, ≤\} θ{=,=,>,,<,}. X, Y是属性名或常量
投影

SQL语句

数据定义语句(DDL):

创建表:		create table Student
				(Name	VARCHAR(15) NOT NULL,
				 SSN	CHAR(9) NOT NULL,
				 Primary key (SSN));	
			create table Grade
				(SSN	CHAR(8) NOT NULL,
				 CNO	CHAR(7) NOT NULL,
				 Score	INTEGER,
				 Primary key (SSN, CNO),
				 Foreign key (SSN) references Student);
删除表:		drop table Student;
修改表:		alter table Student ADD Age INTEGER;  /* 增加一个属性Age */
			alter table Student DROP Age;  /* 删除属性Age */
创建视图: 	create view <视图名> AS <SELECT语句>
删除视图:	drop view <视图名>
创建索引:	create index	删除索引:	drop index

数据库安全

数据库安全性

CASCADE(级联):在父表上update/delete记录时,同步update/delete掉子表的匹配记录 
RESTRICT:同no action, 都是立即检查外键约束

授权:
GRANT [权限] ON [数据库对象] TO 用户

权限回收:
REVOKE [权限] ON TABLE [表名] From [用户];
示例:REVOKE UPDATE(Cno) ON TABLE Course From Bob;

数据库完整性

在这里插入图片描述

  • 触发器 Trigger
    用户定义在关系表上的一类由事件驱动的特殊过程,定义之后的触发器存储在数据库服务器中
定义触发器的语法:
1	CREATE TRIGGER <触发器名>
2	{BEFORE | AFTER} <触发事件> ON <表名>    
3	REFERENCING NEW|OLD ROW|TABLE AS <变量>
4	FOR EACH {ROW | STATEMENT}
5	[WHEN <触发条件>] <触发动作体>;

第2行:触发时机:
• after 触发事件执行之后激活触发器
• before 触发事件执行之前。激活触发器
第3行:触发动作体:
• 可以是一个匿名的PL/SQL过程块, 也可以是对已创建存储过程的调用
• 行级触发器中可以使用NEW ROW和OLD ROW引用UPDATE/ INSERTION之后的新值以及UPDATE/DELETION之前的旧值
• 语句级触发器使用NEW TABLE和OLD TABLE引用包含所有被影响的行的临时表
第4行:触发器分类:
按照所触发动作的间隔粒度分为:
• 行级触发器(FOR EACH ROW)
• 语句级触发器(FOR EACH STATEMENT)
• 在SC表上定义一个After Update触发器,SC有100个元组,
执行UPDATE SC SET GRADE=0;
• 行级触发器的触发动作体执行100次; 语句级中执行1次
第5行:触发条件:
• 触发器被激活时,只有当触发条件为真时触发动作体才执行
• 如果省略WHEN触发条件,触发动作体在触发器激活后立即执行

删除触发器的语法:
1	DROP TRIGGER <触发器名> ON <表名>;

在这里插入图片描述

create trigger check1 after insert on SC
	referencing new row as nrow
	for each row
	when (nrow.cno not in 
		(select cno from course))
	begin
		rollback;
	end;

create trigger check2 after delete on Course
	referencing old row as orow
	for each row
	when (orow.cno not in (select cno from Course)
	  and orow.cno in (select cno from SC))
	 begin
	 	rollback;
	 end;

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

数据库设计

数据库设计概述与需求分析

函数依赖

在这里插入图片描述

  • Armstrong公理:
    自反律:在这里插入图片描述
    增广律:在这里插入图片描述
    传递律:在这里插入图片描述
    合并规则:在这里插入图片描述
    分解规则:在这里插入图片描述

  • 闭包算法
    在这里插入图片描述
    在这里插入图片描述
    然后,再利用Armstrong定理求解 L 类和 N 类属性构成唯一候选键

  • 极小函数依赖集:
    在这里插入图片描述
    解析:每个函数依赖 左部 不包含多余的属性,右部 只包含一个属性每个函数依赖都不能被其他的替代

极小函数依赖集 不唯一
函数依赖集 与 其极小函数依赖集 与 其闭包 都是等价的

练习:
在这里插入图片描述
在这里插入图片描述

无损连接验证算法

在这里插入图片描述
练习:
在这里插入图片描述

范式

1NF:每个关系的属性值都不可分(可能存在问题: 非键属性 部分函数依赖于 候选键)
2NF:1NF + 每一个非键属性 都完全函数依赖于 候选键
3NF:2NF + 非键属性 都不传递函数依赖于 候选键
BCNF:1NF + 对于每个函数依赖X→Y,X必包含候选键 或 3NF + 主属性也满足3NF的依赖性
示例:
在这里插入图片描述

在这里插入图片描述

关系模式分解

  • 3NF分解算法1(保持函数依赖):
    ① 求出函数依赖集的极小依赖集(左无多余、右单一、互相不可代替
    ② 将极小依赖集的每一个函数依赖 转化为 一个关系模式
    例题:
  • 3NF分解算法2(保持函数依赖和无损连接):
    ① 先利用算法1求出保持函数依赖的分解 ρ = { R 1 , R 2 , . . . , R n } \rho=\{R_1,R_2,...,R_n\} ρ={R1,R2,...,Rn}
    ② 再构造一个包含候选键的分解 τ = { R 1 , R 2 , . . . , R n , R k } \tau=\{R_1,R_2,...,R_n,R_k\} τ={R1,R2,...,Rn,Rk},其中 R k R_k Rk是由候选键构成的关系
    在这里插入图片描述
  • BCNF分解算法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

物理存储结构

磁盘容错技术

RAID1 策略:每个数据盘附加一个冗盘(也称镜像盘)
RAID4 策略:仅使用一个冗余盘完成n个数据盘的奇偶校验
RAID5 策略:每个磁盘作为某些磁盘扇区的冗余磁盘

主索引 辅助索引

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

在这里插入图片描述
在这里插入图片描述
主索引方法中,索引记录数 等于 存储F文件的磁盘块数 r/(B/L)


辅助索引方法中,索引记录数 等于 F文件的记录数 r
在这里插入图片描述
在这里插入图片描述

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

事务

事物的特性ACID:原子性、一致性、隔离性、持久性

事务的并发执行和调度

事务并发执行带来的问题
① 产生 多个事务同时存取同一数据 的情况
② 可能会存取不正确的数据,破坏事务隔离性和数据库的一致性(丢失修改、不可重复读)

不可重复读 示例:
事务T1 按一定条件从数据库中读取了某些数据记录后,事务T2 插入(或删除)了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录多出来(或消失)了。(这两种不可重复读也称为“幻影现象”)

死锁:在数据库系统运行期间,如果存在一组事务{T0,T1,…,Tn},使得T0等待T1持有的数据库元素锁,T1等待T2持有的锁,……, Tn-1等待Tn持有的锁,Tn等待T0持有的锁,则称系统处于死锁状态
解决方案:使用预防死锁协议,如:数据库图协议时间戳协议

数据库恢复技术

日志文件:是日志记录的一个序列,用于记载数据库事务对数据库的更新操作情况
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数据库系统 复习总结 的相关文章

  • SQLite 性能基准 - 为什么 :memory: 这么慢...只有磁盘速度的 1.5 倍?

    为什么 sqlite 中的 memory 这么慢 我一直在尝试查看使用内存中的 sqlite 与基于磁盘的 sqlite 是否可以获得任何性能改进 基本上我想用启动时间和内存来换取非常快速的查询not在应用程序过程中击中磁盘 然而 以下基准
  • 在 MongoDB 中查找 7 天前的记录

    我有一个包含对象的集合 如下所示 1 id ObjectId 551c6605e4c6ac495c923aab sender id ObjectId 551c6605e4c6ac495c923aac rep sender id 38 sen
  • 数据库设计 - 何时拆分表?

    有时创建一个单独的表会产生更多工作 我是否应该将其拆分 例如 在我的项目中 我有一张客户表 每个客户对每种产品都有自己的特殊价格 只有5种产品 未来不会计划更多产品 每个客户也有一周中公司向他交付产品的独特日子 当日期和产品价格是客户表中的
  • Firestore 每秒向一个集合写入 500 多次以上

    Firestore 的限制为每秒 500 次写入 to 一个集合 其中文档包含顺序值 索引字段 https cloud google com firestore quotas writes and transactions https cl
  • 什么时候数据库被称为嵌入式数据库?

    术语 嵌入式数据库 与 数据库 具有不同的含义吗 我见过的嵌入式数据库有两种定义 嵌入式数据库就像专门为 嵌入式 空间 移动设备等 设计的数据库系统一样 这意味着它们在紧张的环境中 内存 CPU 方面 可以合理地执行 嵌入式数据库就像不需要
  • 在哪里可以下载可用作数据仓库的示例数据库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以下载可用于创建数据仓库的示例数据库 它不应该是来自 Microsoft Northwind
  • cdb - 大文件(数百 GB)的常量键值存储

    我需要一个类似于 cdb 常量数据库 的工具 它允许我在索引文件中存储大量数据 数百 GB 范围内 CDB 是理想的候选者 但它有 2 GB 的文件大小限制 因此不适合 我正在寻找的功能是支持二进制键和值的持久键值存储 创建后数据库是只读的
  • Hibernate 乐观锁..它是如何工作的?

    我正在阅读下面关于休眠乐观锁定的博客 我打算将它与休眠一起使用 但是 我有一个担忧 我们有java代码和c 代码 都连接到一个数据库 虽然java代码可以使用hibernate来实现乐观锁定 但我想让c 代码做同样的事情 此外 C 代码正在
  • 从数据库中删除重复的行

    我需要从数据库中删除重复的行 我可以用简单的sql查询来完成吗 如果没有 请告诉我一些快速算法来做到这一点 Example id field one field two 1 0000000 11111111 2 2222222 333333
  • 非关系数据库设计[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有兴趣了解您使用过的设计策略非关系型 nosql 数据库 也就是说 不使用传统关系设计或 SQL 的 大多数是新的 数据存储类 例如
  • PostgreSQL 中字符串列类型的索引数组

    是否可以在类型为的列上创建索引文本数组 尝试使用GIN索引 但查询似乎没有使用这些索引 Example CREATE TABLE users name VARCHAR 100 groups TEXT Query SELECT name FR
  • 什么时候不应该使用 Cassandra? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 相关话题已经有很多讨论了卡桑德拉 http cassandra apache org lately Twitter Digg Facebook
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • fetchsize和batchsize对Spark的影响

    我想通过以下方式控制 RDB 的读写速度Spark直接 但标题已经透露的相关参数似乎不起作用 我可以得出这样的结论吗fetchsize and batchsize我的测试方法不起作用 或者它们确实会影响阅读和写作方面 因为测量结果基于规模是
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 如何在列上创建外键,该列的每条记录都可能引用多个表之一中的列?

    我正在创建一个社交网络 它有新闻 照片等多个实体 可以有评论 由于所有评论都具有相同的列并且行为方式相同 唯一的区别是它们的类型 新闻 照片或将来添加的其他内容 我决定为所有评论创建一个表 其中的列名为type 它工作得很好 直到我决定将外
  • 如何找到多个列中的最小值

    我在我的 DB 3 col 中有一个值 我想在所有这些值中找到一个值 如下所述 表名 MyTable id col1 col2 col3 1 200 300 400 2 100 150 300 3 800 102 20 4 80 80 0
  • HTML5 数据库存储(SQL lite) - 几个问题

    你好 我在网上找不到足够的关于 HTML5 数据库存储使用示例 CRUD 的初学者资源 我正在像这样打开 创建 我的数据库 var db document ready function try if window openDatabase
  • Android Realm.io:行/对象不再有效

    这是我的删除功能 它确实找到了workday1 object public static void delete Context context Workday workday Realm realm getRealm context re

随机推荐

  • 幸福感

    抱怨 坦荡的看自己 做自己 我有什么 我要什么 我愿意放弃什么 公平 我们过这一生是为什么呢 世界什么时公平与不公平呢 人最宝贵的 客观的 生命和时间 心态 幸福感来自于心态 一个乐观的心态 每天都会发生很多事情让自己很浮躁 有时会觉得身心
  • [1042]JWT加密

    文章目录 简介 起源 数据格式 JWT交互流程 python使用jwt 非对称加密 简介 JWT 全称是Json Web Token 是JSON风格轻量级的授权和身份认证规范 可实现无状态 分布式的Web应用授权 jwt的解析工具 http
  • 有人物联口红DTU DR154配置与RS 485传感器数据处理

    一 硬件设备 1 有人物联口红DTU DR154 RS 485版本 配置的话通过小程序 联博士 蓝牙配置 手机扫描DTU背后的二维码即可 蓝牙密码也在背面 省去了连接电脑硬件配置的繁琐步骤 2 温度传感器 速灵科RSDS5 RS485接口
  • C语言位运算符及作用:与、或、异或、取反、左移和右移

    一 按位与 如果两个相应的二进制位都为1 则该位的结果值为1 否则为0 应用 1 清零 若想对一个存储单元清零 即使其全部二进制位为0 只要找一个二进制数 其中各个位符合一下条件 原来的数中为1的位 新数中相应位为0 然后使二者进行 运算
  • java反编译篇--miaow.Y.Hu

    好了 好久没更新了 今天来一篇关于java反编译的篇举例子 Java编译文件是指通过Java编译器将Java源代码文件 java文件 编译成字节码文件 class文件 的过程 在Java中 源代码文件包含人类可读的文本 而字节码文件是计算机
  • 常见分布的密度函数图像

    常见分布的密度函数图像 作者 凯鲁嘎吉 博客园 http www cnblogs com kailugaji 一 gamma分布 1 2 3 二 beta分布 1 a 1 2 b 1 3 三 卡方分布 四 t分布 五 F分布 1 n1 5
  • 垃圾分类小程序(含源码)

    前言 鉴于前期一段时间 自己接触小程序这块儿 根据当时的政策 随编写了垃圾分类小程序 在后期也做了很多的功能迭代 基本满足目前市面上的使用需求 期间也对当时垃圾分类的方案进行了简单汇总 可回收物 可回收物就是再生资源 指生活垃圾中未经污染
  • JDK1.8中关于HashMap的红黑树讲解

    一 首先需要了解以下几个问题 为什么要引入红黑数 特殊的平衡二叉树 数据结构 引入红黑树HashMap做了哪些改造 红黑树的特性 红黑树的具体实现方式 二 逐一解释以上三个问题 1 1 为什么要引入红黑数 特殊的平衡二叉树 数据结构 由于在
  • Matlab:如何读取并处理txt数据?

    Matlab 如何读取并处理txt数据 在Matlab中 读取和处理文本文件是非常常见的任务 txt文件是最常见的文本文件格式之一 可以包含各种类型的数据 此处介绍在Matlab中如何读取和处理txt文件 导入txt文件 Matlab提供了
  • cpp课程设计实验题:设计一个时间类Time,要求: (1)包含时(hour)、分(minute)和秒(second)私有数据成员。 (2)包含构造函数,重载关于一时间加上另一时间的加法运算符+、重载

    设计一个时间类Time 要求 1 包含时 hour 分 minute 和秒 second 私有数据成员 2 包含构造函数 重载关于一时间加上另一时间的加法运算符 重载关于一时间减去另一时间的减加运算符 重载输出运算符 lt lt 与输入运算
  • 基础算法题——younik吃大餐(多重背包)

    younik吃大餐 题目描述 Younik的检查结果出来了 核酸检测为阴性 她非常高兴 立刻决定去饭店大吃一顿 到了饭店 Younik看到琳琅满目的菜单 开始犯了选择困难症 这时作为顶级吃货的你恰好坐到了Younik的旁桌 你决定发扬一下雷
  • UE发起的PDU Session Establishment流程详解(2)

    相关文章会在公众号同步更新 公众号 5G通信大家学 持续更新的相关5G内容都是直接根据3GPP整理 保证更新内容的准确性 避免通过二手 甚至多手的资料 以讹传讹误导网友 在介绍完流程详解后 会整理专题内容 比如切片 服务发现 QoS流端到端
  • upload-labs 第6-20关

    upload labs关数6 20 第6关 第7关 第8关 第9关 第10关 第11关 第12关 第13关 第14关 第15关 第16关 第17关 第18关 第19关 这几关都是特殊的绕过检测方式 第6关 第六关其实没什么思路 就是对比了一
  • 高亮必填字段

    程序需求 必填字段高亮提示 为输入文本框添加一个高亮样式 input ng invalid background color rgb 255 255 51 input ng invalid required background color
  • 2023年第五届人工智能与机器学习国际会议(FAIML 2023)

    2023年第五届人工智能与机器学习国际会议 FAIML 2023 重要信息 会议网址 www faiml org 会议时间 2023年4月14 16日 召开地点 中国北京 截稿时间 2023年3月15日 录用通知 投稿后2周内 收录检索 E
  • 高德地图android sdk 地图显示和定位 基本使用方法

    首先 定位和地图是分开的 定位有定位的sdk 地图有地图的sdk 地图显示分为MapView和 AMap 两个类 MapView重写activity内的基本所有生命周期方法 Amap由mapview产生 aMap mapView getMa
  • 剑指Offer 04. 二维数组中的查找

    原题链接 思路 题目中说 每一行都是 从左向右递增的 在一个递增的序列中 查找某个数是否是存在的 二分即可 注意对边界进行判断 时间复杂度 O nlogn 代码 class Solution public boolean check int
  • 将windows按键修改成mac的快捷键

    下载工具autoHotKey AutoHotkey 使用autoHotKey 下载后创建一个脚本 ahk文件 将下面的进行粘贴 右键run script运行当前的脚本 ahk文件 就可以实现mac的快捷键了 a Send a 将 Alt A
  • Visual Studio build tools 安装出错的一种解决办法

    一般是安装包丢失或损坏 那么我么可以用离线下载的方式来先行下载 用 h 看下帮助 主要是Layout参数 下载完 到下载目录安装吧 转载于 https www cnblogs com jackadam p 8279199 html
  • 数据库系统 复习总结

    绪论 关系数据库 关系模型 完整性约束 关系运算 SQL语句 数据库安全 数据库安全性 数据库完整性 数据库设计 数据库设计概述与需求分析 函数依赖 无损连接验证算法 范式 关系模式分解 物理存储结构 磁盘容错技术 主索引 辅助索引 事务