Database BFU-CS 2021-2022 期末总结
全文PDF版下载链接:
第一章 概 述
五、数据模型
- 数据模型的概念及分类
<1>定义:来抽象、表示和处理现实世界中的数据和信息的工具。
<2>分类
①概念模型(信息模型):它是按用户的观点来对生活中的数据和信息建模,用于数据库设计。
②逻辑模型和物理模型
逻辑模型(数据模型)主要包括网状模型、层次模型、关系模型、面向对象模型等,按计算机系统的观点对数据建模,用于DBMS实现。
物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法。 - 客观对象的抽象过程
①第一次抽象:现实世界中的客观对象抽象为概念模型;
②第二次抽象:把概念模型转换为某一DBMS支持的数据模型。 - 数据模型的组成要素
<1>数据结构
①描述数据库的组成对象,以及对象间的联系。
②数据结构是对系统静态特性的描述。
<2>数据操作
①对数据库中各种对象(型)的实例(值)允许执行的操作及有关的操作规则。
②数据操作是对系统动态特性的描述。
<3>完整性约束条件
四种数据模型
- 层次模型
- 数据结构:树形,1:n
- 优缺点:
- 网状模型
- 数据结构:有向图
- 优缺点:
- 关系模型
- 数据结构:二维表(表名、表头、表体)
- 优缺点:
- 面向对象模型:嵌套与递归
外部体系结构
单用户、主从式、分布式、客户/服务器(C/S)、浏览器/服务器 (B/S)
第二章 关系数据库
一 关系模型数据结构
- 域:一组具有相同数据类型的值的集合,称为值域
- 笛卡尔积:实际是一张二维表,每一行是元组,每一列是一个域。
- 关系:笛卡尔积的任一个子集称为定义在域上的关系,由关系头和关系体组成
- 关系的性质:
- 列是同质的,每一列中的分量必须来自同一个域,必须是同一类型的数据
- 不同属性可以来自同一个域,但不同属性必须有不同的名字 eg:职业与兼职
- 列的顺序可以任意交换
- 元组的顺序可以任意
- 不允许出现相同的元组
- 每一分量必须是不可分的数据项
- 关系模式是静态稳定的,关系式动态变化的。关系模式形式化表示为:R(U),其中R为关系名,U为组成该关系的属性名集合,由关系数据结构、关系操作、关系完整性约束三部分组成。
二 码与完整性
码
- 候选码:能唯一标识关系中元组的一个属性或属性集 :唯一性、最小性
- 主码:从很多候选码中选择一个作为查询、输入、删除的操作变量。一个关系只有一个主码。
- 主属性:包含在主码中的各个属性
- 非主属性
完整性
- 实体完整性(必须满足):主码值不能为空或部分为空
- 参照完整性(必须满足):外码的每一个值或者等于主码中的某一个值或者为空
- 用户自定义完整性
三 关系代数
关系代数以集合运算为基础,要求关系必须是相容的:具有相同的列数,列同质。
专门关系运算:选取、投影、连接
基本的运算:并、差、笛卡尔积、选择、投影;
传统的集合运算:并、差、交、笛卡尔积;
关系演算以谓词演算为基础
第三章 SQL语言
- SQL具有**数据查询(query)、数据定义(definition)、数据操纵(manipulation)、数据控制(control)**四种功能。
- 包含两个文件:
- 数据文件:存放数据库数据和数据库对象的文件
- 事务日志文件:保存用于恢复数据库的日志信息
- 文件组
null 约束:constraint sn not null
unique 约束: constraint sn unique
primary 约束:constraint sn primary key
foreign key 约束:包含外部键的叫从表,包含外部键引用的主键或唯一键的表为主表 constraint sn foreign key s(sn)
check 约束:constraint c_score check (score>=0 and score <= 100)
基本表(Base Table):一个关系对应一个基本表;
视图(View):视图是从一个或几个基本表导出的表,是一个虚表;
索引(index):是一种可以加快检索的数据库结构,它包含从表或视图的一列或多列生成的键,以及映射到指定数据存储位置的指针;
系统权限:指被授权用户是否可以连接到数据库上及数据库中可以进行哪些系统操作;
对象权限:指用户对数据库中具体对象所拥有的权限,对象权限针对某个特定的模式对象执行操作的权利,只能针对模式来设置和管理;
视图通常用来集中、简化和自定义每个用户对数据库的不同认识,可用作安全机制,可用于提供向后兼容接口来模拟曾经存在但其架构已更改的基础表,还可以在向SQL Server复制数据和从其中复制数据时使用视图,以便提高性能并对数据进行分区;
通过创建设计良好的索引,可以显著提高数据库查询和应用程序的性能。除提高检索速度外,索引还可以强制表中的行具有唯一性,从而确保数据的完整性;
角色用于区分不同的数据库用户,通过不同的权限设置,可保证数据在数据库中,为便于对用户及权限进行管理,可以将一组具有相同权限的用户组织在一起,这一组具有相同权限的用户就称为角色(Role)。使用角色能够更加方便和高效地对权限进行管理。
第五章 数据库安全保护
DBMS对数据库的安全保护功能有以下四点:
一 安全性控制
-
安全性是指保护数据库以防止非法使用所造成的数据泄露、更改或破坏。
-
DBMS要进行存取权限控制,只允许用户进行合法的操作。
-
防范非法用户与非法操作。
-
五种方法:
1. 用户标识和鉴定- 用户名和用户标识符正确
- 用户名与口令
- 约定函数
2. 用户存取权限控制
- 指不同用户对于不用数据对象允许执行的操作权限。
- 存取权限的两个要素:数据对象 对象权限
- 定义用户存取权限称为授权。
- 用户存取权限两种:
系统权限:DBA授予。只有得到系统权限,才能成为数据库用户
对象权限:DBA或者数据对象的创建者授予。使数据库用户具有对某些数据对象进行某些操作的权限。
3. 定义视图
- 为不同用户定义不同视图,限制用户访问范围。对数据提供一定程度的安全保护。
4. 数据加密
- 根据一定算法将原始数据加密为不可直接识别的格式,数据以密文的形式
传输。
5. 审计
- 跟踪记录有关数据的访问活动
-
SQLserver 2012数据安全性机制:
- 安全模型三层结构:服务器安全管理、数据库安全管理、数据库对象访问权限控制
- 两种身份验证模式:Windows身份验证模式、混合身份验证模式(SQLserver与Windows)
- 服务器角色:对权限集中管理的一种机制。支持服务器角色和数据库角色。
二 完整性控制
-
定义:数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。
-
防范对象:防止合法用户使用数据库时向数据库中加入不符合语义的数据。
-
完整性规则的组成:
触发条件:规定系统什么时候使用完整性规则来检查数据
约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件。
违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条
件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情。
完整性规则从执行时间上可分为立即执行约束和延迟执行约束。 -
完整性约束条件的分类:
(一)值的约束 和 结构的约束
(二)静态约束和动态约束
-
数据完整性的实施
(一)实施形式
①声明式数据完整性
②程序化数据完整性
(二)实施方法
①约束:优先
②默认值
③规则
④存储过程
⑤触发器
三 并发控制与封锁
- 事务
<1>定义
事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序
列。
<2>事务的特征
①原子性(Atomicity)
一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”的原则,即不允许完成部分的事务。
②一致性(Consistency)
事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数据满足完整性约束。
③隔离性(Isolation)
如果多个事务并发地执行,应像各个事务独立执行一样,一个事务的执行不能被其他事务干扰。
④持久性(Durability)
持久性指一个事务一旦提交,它对数据库中数据的改变就应该是持久的,即使数据库因故障而受到破坏,DBMS也应该能够恢复。 - 并发操作与数据的不一致性
①丢失更新
当两个事务T1和T2读入同一数据,并发执行修改操作时,T2把T1或T1把T2的修改结果覆盖掉,造成了数据的丢失更新问题,导致数据的不一致。
②污读
事务T1更新了数据R,事务T2读取了更新后的数据R,事务T1由于某种原因被撤销,修改无效,数据R恢复原值。事务T2得到的数据与数据库的内容不一致,这种情况称为“污读”。
③不可重读
事务T1读取了数据R,事务T2读取并更新了数据R,当事务T1再读取数据R以进行核对时,得到的两次读取值不一致,这种情况称为“不可重读”。 - 封锁
实现并发控制的方法主要有两种:封锁技术和时标技术。
<1>封锁类型
①排它型封锁(写封锁,简称为X封锁)
原理:禁止并发操作。
②共享封锁(读封锁,简称为S锁)
原理是允许其他用户同时对该数据对象读取,但不能对该数据对象进行
修改。
<2>封锁协议
①一级封锁协议
事务T在修改数据对象之前必须对其加X锁,直到事务结束。
②二级封锁协议
在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后释放S锁。
③三级封锁协议
在一级封锁协议的基础上,另外加上事务T在读取数据R之前必须先对其加S锁,读完后并不释放S锁,而直到事务T结束才释放。
<3>活锁与死锁
①活锁:永久等待→先来先服务策略解决
②死锁:事务依赖图沿着箭头方向存在一个循环,死锁的条件就已产生。
<4>预防死锁:一次加锁法、顺序加锁法,一般情况下,允许发生死锁,死锁发生后可以自动诊断并接触死锁。
四 数据库恢复
- 原理:利用数据的冗余
- 两种类型的功能:生成冗余数据、冗余重建
- 生成冗余数据常用技术:登记日志文件、数据转储
第六章 数据库设计
概述
- 数据库设计的内容
- 结构设计
- 行为设计
- 常用的规范设计方法
- 基于E-R模型(实体-联系图)的数据库设计方法
- 基于3NF的数据库设计方法
- 基于视图的数据库设计方法
- 数据库设计的六个阶段:前四个分析设计,后两个实施运行
- 系统需求分析阶段
- 概念结构设计阶段
- 逻辑结构设计阶段
- 物理结构设计阶段
- 数据库实施阶段
- 数据库运行与维护阶段
一 系统需求分析
最简单实用的方法:自顶向下分析方法(结构化分析方法,SA)
- 数据流图
处理过程的处理逻辑借助判定表或判定树来描述,系统中的数据借助数据字典来描述。 - 数据字典
数据字典是对系统中数据的详细描述,是各类数据结构和属性的清单 。在需求分析阶段,它通常包含以下五部分内容: - 数据项
- 数据结构
- 数据流:可以是数据项也可以是数据结构
- 数据存储
- 处理过程
二 概念结构设计
将需求分析得到的用户需求抽象为信息结构,即概念模型
- 优点
设计复杂程度大大降低,便于组织管理
不受特定的DBMS限制,独立于存储安排和效率方面的考虑,比逻辑模型更稳定
不含有具体的DBMS附加的技术细节,容易为用户理解,更有可能准确反映用户的信息需求。
- 特点
语义表达能力丰富
易于交流和理解
易于修改和扩充
易于向各种数据模型(关系、网状、层次)转换
- E-R模型表示方法
方法:自顶向下、自底向上、逐步扩张、混合策略 - 自底向上方法两步:
进行数据抽象,设计局部E-R模型,即设计用户视图
分类与聚集
集成各局部E-R模型,形成全局E-R模型。即视图集成
多元集成、二元集成
分为两步骤:
- 合并
要合理消除各局部E-R图中的冲突:
- 优化
消除不必要的冗余,生成基本E-R图
三 逻辑结构设计
将概念模型转换为某个具体的DBMS支持的数据模型:网状、层次、关系
分为三步:
- 初始关系模式设计
- 关系模式规范化
- 模式的评价与改进
- 模式评价
- 模式改进
若因为不满足用户需求:增加新的关系模式或属性
若性能要求改进:合并或分解
四 物理结构设计
为了有效地实现逻辑模式
- 确定物理结构
-
存储记录结构的设计
物理结构中,数据的基本存取单位是存储记录
一个存储记录可以和一个或多个逻辑记录相对应
决定存储结构的主要因素包括存取时间、存储空间、维护代价。
-
访问方法的设计
-
数据存放位置的设计
-
系统配置的设计
- 评价物理结构
五 数据库实施
- 建立实际数据库结构
- 装入数据(数据库加载):主要工作
- 应用程序编码与调试
- 数据库试运行
- 整理文档
六 数据库运行和维护
- 维护数据库的安全性与完整性
- 监测并改善数据库性能
- 重新组织和构造数据库
课后习题:
第七章 T-SQL
一 transact SQL程序设计
- 变量
- 全局变量: 对用户只读,@@开头
- 局部变量:名称不能与全局变量相同
-声明:DECLARE @ 变量名 变量类型
-赋值:SELECT @变量名=变量值 或 SET @变量名=变量值 - 注释符:单行–,多行/…/
- 运算符
- 算术运算符 + - * / %
- 赋值运算符 =
- 字符串连接运算符 +
- 比较运算符:比较除了text、ntext、image之外的所有数据类型,结果为TRUE OR FALSE =,>, <, <=, >=, <>(不等于),!=不等于,!<,!>
- 逻辑运算符
- 按位运算符:&, |,^
- 一元运算符:+,-,~按位取反
- 运算符优先级:使用括号
- 批处理:每两个go之间是一个批处理单元
- 流程控制语句:
- begin…end:定义一个程序块
- if…else
- if [not] exists
- case
- while…continue
- waitfor:waitfor time 11:24:00 SQL语句
- goto
- return
- 常用命令
- backup:备份命令
- checkpoint:将当前数据库中被更改过的数据页或日志页从数据缓冲器中强制写入硬盘
- dbcc:一致性检查程序
- declare:声明一个或多个局部、游标、表变量
- execute:执行存储过程
- kill:终止执行
- print:显示
- raiserror:返回错误信息时同时返回用户指定的信息
- restore:将数据库或其事务处理日志备份文件由存储介质存储到SQLserver
- select:给局部变量赋值
- set:给局部变量赋值、SQLserver处理选项的设定
- shutdown:停止执行
- use:改变为指定的数据库
- 常用函数
- 统计函数:stdev标准差 stdevp总体标准差 varp总体变异数
- 算术函数
- 字符串函数:字符串转换、字符串操作、字符串比较、取子串、日期、数据转换
- 用户自定义函数:标量值函数(数值函数)、表值函数(内联表值函数、多语句表值函数)
二 存储过程
- 概念:是一组为了完成特定功能的SQL语句集,编译后存储在数据库中,可以被客户机管理工具、应用程序、其他存储过程调用,可以传递参数。
- SQL语句 和 流程控制语句 的集合
- 优点:模块化程序设计、高效率执行、减少网络流量、作为安全机制使用
- 分类:系统存储过程、用户自定义存储过程、扩展存储过程
三 触发器
- 是一种特殊的存储过程
- DML触发器:insert、update、delete
- DDL触发器:create、alter、drop
- 登录触发器
- 工作原理:SQL为每个触发器建立两个特殊表:插入表(inserted表)、删除表(deleted表)
四 备份和还原
备份
- 对数据库或事务日志进行复制
- 运行方式:在线备份、离线备份
类型:
- 完整备份:对所有对象备份,包括事务日志
- 差异备份:湾镇备份的补充,变动的部分
- 事务日志备份:只备份事务日志内容
- 文件及文件组备份
策略:
- 完整
- 完整+事务日志
- 完整+差异=完整
依据:
- 对数据库一致性的要求程度
- 备份或还原所需时间
- 应使用哪种备份设备
还原
- 概念:把遭到破坏、丢失的数据或出现错误的数据库还原到原来的正常状态
策略:
- 简单还原
- 完全还原
- 批日志还原
homework:
减少备份或还原操作的执行时间的三种方法:
- 使用多个备份设备来同时进行备份处理
- 综合使用前三种备份方式来减少每次需要备份的数据量
- 使用文件或文件组备份和事务日志,只备份包含相关数据的文件,而不是整个数据库