数据库笔记
数据库原理及应用
半期考:运筹学,概率论,数据库
文章目录
- 数据库原理及应用
- 1.课程的考核
- 2.数据库的运用
- 3.数据库学什么?
- 第一章 绪论
- 1.1数据库系统概述
- 1.1.1基本概念
- 1.1.2数据管理技术的生产和发展
- 人工管理
- 文件系统
- 数据库系统
- 1.2数据模型 (2.27)
- 1.2.1概念模型
- 两个实体之间的联系
- 同一个实体集内各实体之间的联系
- 1.2.2数据模型组成要素:
- 数据结构:数据组织==静态==
- 数据操作:增删改查==动态==
- 完整性约束条件:(eg:限制性别男女)通用或专用
- 1.关系模型数据结构
- 关系模型的基本概念:
- 关系模型的数据操作:
- 关系模型优缺点:
- 层次模型
- 1.3数据库系统结构
- 开发人员角度
- 最终用户
- 1.3.1数据库系统模式
- 型:对某一类数据的结构和属性的说明
- 值:是型的一个具体赋值
- 模式:
- 数据库系统的三级模式结构:
- 模式:(外模式、内模式(物理)、模式(逻辑))
- 三级模式与二级映像
- 1.4数据库系统的组成
- 第二章 关系数据库
- 2.1 关系数据结构及形式化定义 关系数据结构及形式化定义
- 2.1.1 关系
- 笛卡尔积
- 关系
- 码:
- 基本关系的性质:
- 2.1.2 关系模式
- 2.1.3 关系数据库
- 2.2 关系操作
- 常用的关系操作
- 关系操作的特点
- 2.3 关系的完整性
- • 实体完整性 (必须满足)
- • 参照完整性(必须满足)
- 2.外码
- • 用户定义的完整性
- 2.4 关系代数
- 广义笛卡尔积
- 专门的关系运算
- 实例
- 连接:
- 自然连接:
- 悬浮元组:
- 外连接:
- 第三章 SQL语句
- 更新
- 1.插入数据
- 插入单个元祖
- 插入子查询结果
- 2.修改数据
- 语句格式
- 修改某一个元组的值
- 修改多个元组的值
- 带子查询的修改语句
- 3.删除数据
- 语句格式
- 删除某一个元组的值
- 删除多个元组的值
- 带子查询的删除语句
- 4.视图
- 定义视图
- 定义视图
- 基于多个基表的视图
- 基于视图的视图
- 带表达式的视图
- 建立分组视图
- 删除视图
- 视图作用
- 第七章 数据库设计
- 7.1.3数据库设计的基本步骤
- 7.2.3数据字典
- 7.3概念结构设计(重点)
- 7.3.1概念模型
- 7.3.2 E-R模型
- 7.3.2概念结构设计
- E-R图的集成
- 7.4逻辑结构设计
- 第四章 数据库安全性
- 数据安全性:
- 计算机系统安全性:
- 三类:
- 安全标准简介:
- 数据库安全性控制:
- 第五章 数据库完整性
- 5.1实体完整性:
- 5.2参照完整性
- 5.3用户定义的完整性
- 5.4完整性约束命名子句
- 第十章 数据库恢复技术
- 10.1 事务的基本概念
- 事务:
- 定义事物:
- 事物的特性(ACID特性)
- 10.2 数据库恢复概述
- 10.3 故障的种类
- 事务故障
- 系统故障
- 介质故障
- 计算机病毒
- 10.4 恢复的实现技术
- 转储:
- 登记日志文件
- 第十一章 并发控制
- 1并发控制概述
- 2封锁
- 3封锁协议
- 4活锁和死锁
- 5并发调度的可串行性
- 6两段锁协议
- 介质故障
- 计算机病毒
- 10.4 恢复的实现技术
- 转储:
- 登记日志文件
- 第十一章 并发控制
- 1并发控制概述
- 2封锁
- 3封锁协议
- 4活锁和死锁
- 5并发调度的可串行性
- 6两段锁协议
1.课程的考核
期末成绩70%
平时作业10%
- 超星平台上布置的作业
- 超星平台上的视频学习
- 课前测试
实验占10%
- 实验测试(12次)从超星平台上下载实验指导手册
- 实验报告
半期测试10%
旷课扣5分,迟到早退扣2分
2.数据库的运用
电子商务,超市,各种信息
数据来自数据库:修改后数据需要存储到数据库中
3.数据库学什么?
学习目的:基本概念和理论,SQL,管理维护技术,设计方法和应用
第一章 绪论
1.1数据库系统概述
1.1.1基本概念
基本概念 | 描述 |
---|---|
数据Data | 数据库中存储的基本对象:音乐,一句话,视频(后期),信息存在的一种形式 |
数据模型 | 描述现实世界的方法,比如把人抽象成身高、体重… |
数据模式 | 用某个模型描述的结果,比如用c语言编写出一个表 |
数据库DB | Database,简称DB是长期存储在计算机内,有组织,可共享的。支持企业各种应用开发,数据集合。对企业中各种单位实体及其他们之间的联系,进行建模,把它存储起来 |
数据库管理系统DBMS | 位于用户和操作系统之间,就是软件。功能(定义、提供数据定义语言DDL、操纵、运行管理) |
数据库系统DBS(database system) | 计算机系统引入数据库之后的称呼,DBS = DB + DBMS(用户和数据库之间) + 用户 + 软硬件环境 |
1.1.2数据管理技术的生产和发展
人工管理
40-50年代
特点:数据不保存,没有软件对系统进行管理,不具有独立性
文件系统
50-60年代
特点:
-
有早期的存储设备:磁带,磁盘,文件系统,批处理
-
数据可以长期保存
-
数据具有共享性
-
由文件系统管理数据
数据库系统
60年代末
从文件系统到数据库系统,是一个大飞跃
特点: |
---|
数据结构化(与文件系统的本质关系) |
数据共享性高,冗余度低, |
数据独立性高, |
数据由DBMS统一控制:安全保护、完整、并发控制(对多用户的并发操作加以控制,防止相互干扰而得到错误的结果) |
1.2数据模型 (2.27)
世界· | 说明 |
---|---|
现实 | 客观存在的对象,如人 |
信息 | 由概念模型描述,如人的身高、体重、性别、年龄 |
机器 | 将概念模型数字化 |
数据模型要求:能真实的模拟现实世界、容易为人所理解、便于在计算机上实现
1.2.1概念模型
基本概念 | 说明 |
---|---|
实体Entity | 客观存在的对象 |
属性Attribute | 实体具有的某一特性 |
码Key | 能唯一标识一个实体的(学号) |
域Domain | 属性的取值范围(如整数、{a-z}) |
实体型 | 实体及其属性名集合,如学生(姓名、学号、性别) |
实体集 | 同类实体比如研究生和本科生 |
联系 | 现实世界中内部及事物之间的联系 |
两个实体之间的联系
一对一联系、一对多联系、多对多联系(课程和学生)
同一个实体集内各实体之间的联系
一对一联系(夫妻)、一对多联系(领导和职工)、多对多联系(课程和预选课)
1.2.2数据模型组成要素:
数据结构:数据组织静态
数据操作:增删改查动态
完整性约束条件:(eg:限制性别男女)通用或专用
关于数据模型的讨论:
- 层次模型不能直接表示哪一种联系?多对多
- 网状模型的数据结构是什么?图
- 层次模型和网状模型的查询效率如何,哪个更优?层次
1.关系模型数据结构
关系模型的基本概念:
关系(二维表)、元祖(表中的一行)、属性(表中的列)、主码(唯一确定主体属性的)
分量(表中的单个元素)、关系模式(学生(学号,姓名,年龄))、域(取值)
不允许表中套表
关系的每一个分量必须是不可分的数据项
关系模型的数据操作:
增删改查
关系模型优缺点:
建立在严格的数据概念基础上
概念单一。数据结构简单、清晰
缺点:查询效率不如非关系模型高
层次模型
一对多(树形结构)PCR
1.3数据库系统结构
开发人员角度
三级模式结构(数据库内部)
最终用户
- 单用户数据库系统(不共享)
- 主从式结构(一个用户带多个终端比如银行机房的主机和ATM机)
- 分布式结果数据库(逻辑上整体,物理分布不同。优点:便于组织管理 缺点:效率低)
- 客户/服务器(qq软件是客户,腾讯服务器。优点:减少数据传输量。缺点:“胖客户”:维护困难。改进:B/S结构。游览器)
- 游览器-应用服务器/数据库服务器多层结构
1.3.1数据库系统模式
型:对某一类数据的结构和属性的说明
值:是型的一个具体赋值
例如
学生记录:
(学号,姓名,性别,系别,年龄,籍贯) (学号,姓名,性别,系别,年龄,籍贯)
一个记录值:
( (201315130 ,李明,男,计算机系,19,江苏南京市) ,江苏南京市)
模式:
一个数据库只有一个内模式
例如:在学生选课数据库模式中,包含学生记录、课程记
录和学生选课记录,一张包含了信息的表
数据库系统的三级模式结构:
模式:(外模式、内模式(物理)、模式(逻辑))
所有数据的一个共有的试图,比如很多张表组成的一个视图
三级模式与二级映像
外模式/模式映像
定义外模式与模式之间的对应关系(可以多个)
模式/内模式映像
唯一的,描述数据在磁盘上到底是怎么存的,比如一个表是用哈希文件,还是对文件来存,这种存储方式。
两层映象保证了数据库系统中的数据能够具有较高的逻
辑独立性和物理独立性。 辑独立性和物理独立性
1.4数据库系统的组成
- 数据库
- 数据库管理系统
- 应用程序
- 数据库管理员
当修改数据的存储方式时,用户程序也可以不变,这是数据的物理独立性
第二章 关系数据库
2.1 关系数据结构及形式化定义 关系数据结构及形式化定义
2.1.1 关系
笛卡尔积
笛卡尔积 | 给定一组域D1,D2,D3……Dn,(允许某些域是相同的)。两两集合的乘积,所有排列组合的总和,可以表示为一张二位表,表中的每行对应笛卡尔积的一个元素,表中每列对应一个域 |
---|---|
元组 | 表中的一行 |
分量 | 表中的单个元素(值) |
基数 | 排列组合的总个数,也就是笛卡尔积中元组的个数 |
交换? | 笛卡尔积不满足交换律D1D2≠D2D1 |
关系
笛卡尔积中取出的有实际意义的元组来构造的关系(二维表)
笛卡尔积的有限子集
属性:列名
码:
候选码 | 某一(多个)属性值能唯一确定一个元组,该属性组为候选码 |
---|---|
全码 | 所有的属性是候选码,所有属性算上才能决定一条元组 |
主码 | 若一个关系有多个候选码,选定一个为主码 |
主属性 | 候选码的各个属性 |
非主属性、非码属性 | 除了主属性之外的属性 |
基本关系的性质:
- 列同性质、顺序无所谓、任意两个元组不能完全相同、最小分量
2.1.2 关系模式
对关系的描述就是二维表结构
2.1.3 关系数据库
所有关系的集合构成的一个关系数据库
.关系数据库的型: 关系数据库模式,是对关系数据库的描述。 关系数据库模式,是对关系数据库的描述。
• 关系数据库的值: 关系模式在某一时刻对应的关系的集合,通
常称为关系数据库。
2.2 关系操作
• 查询操作:选择、投影、连接、除、并、差、交、
笛卡尔积
选择、投影、并、差、笛卡尔基是5种基本操作 种基本操作
• 数据更新:插入、删除、修改
• 集合操作方式:操作的对象和结果都是集合, 一次
一集合 的方式
2.3 关系的完整性
• 实体完整性 (必须满足)
若属性A是基本关系R的主属性,则属性A不能取空值(不知道,不存在,无意义)的值。实体完整性规则规定基本关系的所有主属性都不 能取空值
• 参照完整性(必须满足)
参照完整性要求关系中不允许引用不存在的实体。即参照的关系中的属性值必须能够在被参照关系找到或者取空值
- 关系间的引用(一对多、多对多【学生实体及其内部的领导联系】)
学生关系引用了专业关系的主码“专业号”。 学生关系中的“专业号”值必须是确实存在的专业
2.外码
在参照关系R中的候选键中的一个属性(不是其主键),中选一个对应被参照关系中的主键,则选出来的那个叫外码)
外码必须是本关系的一个或一组属性;
外码不是本关系的码;
外码与另一个关系(可能是同一关系)的主码相对应;
• 用户定义的完整性
- • 唯一值约束(UNIQUE);
- • 非空值约束(NOT NULL);
- • 检查约束(CHECK);
- • 缺省值约束(DEFAULT)。
2.4 关系代数
广义笛卡尔积
排列组合
专门的关系运算
关系运算 | 说明 |
---|---|
选择 | 选择又称为限制。它是在关系R中选择满足给定条件的各元 组从行的角度进行的运算,记作σF(R)={ t∈R ∧ F(t)=‘真’} |
投影 | 关系R上的投影是从R中选择出若干属性列组成新的关 系。从列的角度进行的运算,有可能删除某些元组,避免重复,记作: ΠA(R)={t[A] |t ∈R } |
连接 | θ连接是从两个关系的笛卡尔积中选取属性间满足一定 条件的元组。这种运算形式称作θ连接 |
除 | 把它看作寻找供应商 |
实例
连接:
步骤一(1)求R×S;(2)选择R中属性A和S中属性B满足条件的元组组成新关系即为连接运算的结果。
自然连接:
一种特殊的等值连接,它要求两个 关系中进行比较的分量必须是相同的属 性组,并且 在结果中把重复的属性列去掉
悬浮元组:
自然连接时,舍弃的元组
外连接:
- 如果把悬浮元组也保存在结果关系中,而在其他属 性上填空值(Null),就叫做外连接
- 左外连接:只保留左边关系R中的悬浮元组
- 右外连接: 只保留右边关系S中的悬浮元组
create database Example;
use example;
create table student(Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20) UNIQUE,Ssex INT,Sdept CHAR(15);)
select * from student;alter table student add scome datetime;
alter table student alter column Sage SMALLINT;alter table student drop constraint;
alter table student drop column scome;drop table student;
create unique index Stusno ON Student(Sno);
drop index stusno on student;
create unique index Stusno ON Student(Sno);insert into Student(Sno,sname,Ssex,Sage,Sdept)
values('95001','陈东','M','IS');insert into Student
values('95002','张成名','男','18','CS');
第三章 SQL语句
更新
1.插入数据
-
插入单个元祖
INSERT INTO <表名> [(<属性列1>[,<属性列2 >…)] VALUES (<常量1> [,<常量2>] … ) --eg --例:将一个新学生记录 (05001,陈冬,M,18 ,IS )插入到Student表中。INSERT INTO Student(sno,sname,ssex,sage ,sdept)VALUES ('05001','陈冬',‘M',18 ,'IS');
-
插入子查询结果
INSERT INTO <表名> [(<属性列1> [,<属性列2>… )] 子查询; --eg--例:对每一个系,求学生的平均年龄,并把结果存入数据库。--第一步建表 CREATE TABLE Deptage (Sdept CHAR(15) /* 系名*/ Avgage SMALLINT); /*学生平均年龄*/ --第二步,插入数据第二步:插入数据 INSERT INTO Deptage(Sdept,Avgage) SELECT Sdept,AVG(Sage) FROM Student GROUP BY Sdept;
2.修改数据
语句格式
UPDATE <表名> SET <列名>=<表达式>[,<列名>=<表达式>]… [WHERE <条件>];
-
修改某一个元组的值
--例:将学生05001的年龄改为22岁。UPDATE StudentSET Sage=22 WHERE Sno=' 05001 ';
-
修改多个元组的值
--例:将所有学生的年龄增加1岁。 UPDATE Student SET Sage= Sage+1;
-
带子查询的修改语句
--例:将计算机科学系全体学生的成绩置零。 UPDATE SC SET Grade=0 WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno = SC.Sno);
3.删除数据
语句格式
DELETE FROM <表名> [WHERE <条件>];--删除满足where子句条件的元祖
-
删除某一个元组的值
--例:删除学号为05010的学生记录。 DELETE FROM Student WHERE Sno=‘05010';
-
删除多个元组的值
--例:删除所有的学生选课记录。 DELETE FROM SC; --例:删除2号课程的所有选课记录。 DELETE FROM SC WHERE Cno='2';
-
带子查询的删除语句
--例: 删除计算机科学系所有学生的选课记录。 DELETE FROM SC WHERE 'CS'= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno);
4.视图
视图的特点
- 虚表,是从一个或几个基本表(或视图)导出的表
- 只存放视图的定义,不会出现数据冗余
- 基表中的数据发生变化,从视图中查询出的数据也 随之改变
基于视图的操作 : 查询 删除 受限更新 定义基于该视图的新视图
定义视图
-
定义视图
--[例1] 建立信息系学生的视图。CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS';--[例2] 建立信息系学生的视图,并要求透过该视图 进行的更新操作只涉及信息系学生。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS' WITH CHECK OPTION;--进行的更新操作只涉及信息系学生。 --透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件 (即子查询中的条件表达式)
-
基于多个基表的视图
--[例3] 建立信息系选修了1号课程的学生视图。 CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= 'IS' AND Student.Sno=SC.Sno AND SC.Cno= '1';
-
基于视图的视图
--[例4] 建立信息系选修了1号课程且成绩在90分以上的学 生的视图。 CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90;
-
带表达式的视图
-- [例5] 定义一个反映学生出生年份的视图。 CREATE VIEW BT_S(Sno,Sname,Sbirth) AS SELECT Sno,Sname,2020-Sage FROM Student --设置一些派生属性列, 也称为虚拟列--Sbirth --带表达式的视图必须明确定义组成视图的各个属性列名
-
建立分组视图
--[例6] 将学生的学号及他的平均成绩定义为一个视图 假设SC表中“成绩”列Grade为数字型 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;
删除视图
DROP VIEW <视图名>;
视图作用
-
视图能够简化用户的操作
-
视图使用户能以多种角度看待同一数据
-
视图对重构数据库提供了一定程度的逻辑独立性
-
视图能够对机密数据提供安全保护
第七章 数据库设计
-
手工试凑法
-
规范设计法:
Ø新奥尔良(New Orleans)方法
Ø基于E-R模型的数据库设计方法
Ø3NF(第三范式)的设计方法 Ø面向对象的数据库设计方法
Ø统一建模语言(UML)方法
7.1.3数据库设计的基本步骤
• 需求分析
是否做得充分与准确,决定了构建数据库的速度和质量
• 概念结构设计
通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 数据库管理系统的概念模型
• 逻辑结构设计
将概念结构转换为某个数据库管理系统所支持的数据模型,并 对其进行优化(转换为表)
• 物理结构设计
为逻辑数据结构选取一个最适合应用环境的物理结构 ,包括存储结构和存取方法
• 数据库实施
根据逻辑设计和物理设计的结果构建数据库 编写与调试应用程序 组织数据入库并进行试运行
• 数据库运行和维护
经过试运行后即可投入正式运行 在运行过程中必须不断对其进行评估、调整与修改
需求分析和概念设计独立于任何数据库管理系统
逻辑设计和物理设计与选用的数据库管理系统密切相关
7.2.3数据字典
-
数据项(最小单位)
不可再细分比如学生的学号、成绩
-
数据结构
反应了数据之间的组成关系,比如学生可以看做一个数据结构由姓名、学号、、、等数据项
组成
-
数据流
数据传输的路径(对数据动态的描述),比如订单
-
数据存储(静态)
数据结构在数据库中的存储位置,比如库存。
-
处理过程
是一个动作,比如输入所有学生信息,按照需求分配宿舍
7.3概念结构设计(重点)
7.3.1概念模型
将需求分析得到的用户需求抽象为信息结构(即概念模型)的过程
和用户进行交流、易于更改、易于向各个数据模型转换
用ER模型描述概念模型
7.3.2 E-R模型
实体之间的联系:一对一(班级与班长)、一对多(班级与学生一对多)、多对多(课程与学生);
联系关系到几个实体就叫做几元联系
E-R图
实体 | 属性 | 联系 | 连接方式 |
---|---|---|---|
矩形 | 圆形 | 菱形 | 无向边连接 |
第一步:确定有哪些实体,画出五个实体
第二步:判断每个实体间有什么联系
7.3.2概念结构设计
实体与属性的划分原则:现实世界的事物能作为属性对待就当属性(属性优先)
两条准则:不可再分不能描述,不能与其他属性有联系
E-R图的集成
-
合并。解决各分E-R图之间的冲突,将分E-R图合并起来生 成初步E-R图。
属性冲突 命名冲突 结构冲突 属性域冲突(类型、取值范围、取值集合) 同名异义 同一对象在不同应用中具有不同的抽象。(有的当做实体,有的当做属性) 属性取值单位冲突(公斤、斤) 异 名同义 同一实体在不同子系统的E-R图中所包含的属性个数和属性 排列次序不完全相同 命名冲突 实体间的联系在不同的E-R图中为不同的类型 -
修改和重构。消除不必要的冗余,生成基本E-R图。
• 所谓冗余的数据是指可由基本数据导出的数据, 冗余的联系是指可由其他联系导出的联系。
• 消除冗余主要采用分析方法,即以数据字典和 数据流图为依据,根据数据字典中关于数据项 之间逻辑关系的说明来消除冗余。
7.4逻辑结构设计
7.4.1E-R图向关系模型的转换
将概念模式转换为关系模式
转换原则:
- 实体转化为独立的关系模式
属性对应属性,码对应码
- 一对一转换:最好合并到某一 端,不要转换为独立的
- 一对多转换:独立、合并到N端(一端的码和联系的属性放进n端 )
- 多对多转换:两个多端的码合并(独立)
- 多元联系转换为独立的关系模式
E-R图不能出现业务流程
第四章 数据库安全性
数据安全性:
防止非法用户使用数据库,造成数据泄露、更改或破坏。
计算机系统安全性:
三类:
技术安全(软硬件)、管理安全(房间失火)、政策法律安全
安全标准:TCSEC.桔皮书(针对整个计算机系统) TDI 紫皮书(将TCSEC*扩展到数据库管理系统。)
数据库有哪些安全控制机制?
安全标准有那几个?
安全标准简介:
D级 | C1级 | C2级 | B1级 | B2级 | B3级 | A1级 |
---|---|---|---|---|---|---|
一切不符合最高标准的系统EG:DOS | 非常初级的自主安全保护eg:DAC | 安全产品的最低档 次 | 标记安全保护。MAC强制存取控制 | 结构化保护,有主体和客体实施DAC和MAC,(稀少) | 安全域 | 验证设计,即提供B3级保护的同时给出系统的形式 |
注:B2以上的系统还处于理论研究阶段,应用多限于一些特殊的部门如军队等。
数据库安全性控制:
应用:用户标识和鉴定(输入用户名和密码)—》DBMS:存取控制-----》
存取控制:定义存取
用户标识与鉴别 | 存取控制 | 自主存取控制方法 | 授权与回收 | 数据库角色 | 强制存取控制方法 |
---|---|---|---|---|---|
合法用户标识 | 先对每个用户定义存储权限 | 不同用户不同数据对象不同权限 | DBA和表的建立者定义 | 先进行DAC检查,通过DAC检查的数据对象再由系统 | |
用户名/口令 | 自主存取控制DAC,强制存取控制MAC | 能够通过授权机制有效地控制其他用户对敏感数 ,可能存在数据的无意泄露 | SQL语句;GRANT(授予权限),REVOKE(收回权限) |
--GRANT语句的一般格式:GRANT <权限>[,<权限>]...[ON <对象类型> <对象名>] TO <用户>[,<用户>]...[WITH GRANT OPTION]; --获得某种权限的用户还可以把这种权限再授予别的用户
-- GRANT功能:将对指定操作对象的指定操作权限授予 指定的用户。
先进行DAC检查,通过DAC检查的数据对象再由系统
进行MAC检查,只有通过MAC检查的数据对象方可存
取。
第五章 数据库完整性
完整性:防止合法用户输入输出防止数据破坏
安全性:防止非法用户
完整性控制机制:约束条件、完整性检查机制、违约处理
5.1实体完整性:
primary key 定义,表级完整性约束或列级完整性约束
5.2参照完整性
1,外码能否接受空值(如果是另一个关系的主属性就不允许取空值)
2,在被参照完整性中删除元组的问题
- 级联删除
- 受限删除
- 置空值删除
3,在参照关系中插入元组时
- 受限
- 递归
4,修改关系中的主码
- 级联修改(on update cascade(在定义表的时候加上这句话才能进行级联) 修改它,另一个参照它的也跟着修改)
- 受限修改
- 置空值修改
5.3用户定义的完整性
check约束(可列级,可表级)
列级非空,列级单一只能作为列级约束
--元组上的约束条件的定义 • CHECK短语
CREATE TABLE Student
(Sno CHAR(5) , Sname CHAR(20) NOT NULL, Ssex CHAR(1) , Sage INT, Sdept CHAR(15), PRIMARY KEY (Sno) CHECK (Ssex=‘女’ OR Sname NOT LIKE ‘Ms.%’) ); --元组上的约束条件检查和违约处理
5.4完整性约束命名子句
--完整性约束命名子句
CREATE TABLE Student
(Sno NUMERIC(6) CONSTRAINT C1 CHECK(Sno BETWEEN 90000 AND99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Ssex CHAR(2) CONSTRAINT C3 CHECK(Ssex IN (’男‘,’女‘)), CONSTRAINT C4 PRIMARY KEY (Sno) );-- 修改表中的完整性限制 ALTER TABLE Student DROP CONSTRAINT C4;
ALTER TABLE Student ADD CONSTRAINT C1 CHECK(Sno BETWEEN 900000 AND 999999);
第十章 数据库恢复技术
10.1 事务的基本概念
事务:
一个事务可以是一条SQL语句,一组 SQL语句或整个程序
( 一个应用程序通常包含多个事务)
定义事物:
BEGIN TRANSACTION
SQL 语句1
SQL 语句2
.....
COMMIT--事务正常结束 BEGIN TRANSACTION
SQL 语句1
SQL 语句2
.....
ROLLBACK--事务异常终止
事物的特性(ACID特性)
原子性(Atomicity) | 一致性(Consistency) | 隔离性(Isolation) | 持续性(永久)(Durability ) |
---|---|---|---|
·事务是数据库的逻辑工作单位 •事务中包括的诸操作要么都做,要么 都不做 | 数据库中只包含成功事务提交的结果 | 并发执行的各个事务之间不能互相干扰 | 一个事务一旦提交,它对数据库中数据的改变就应 该是永久性的 |
10.2 数据库恢复概述
数据库管理系统对故障的对策
•DBMS提供恢复子系统
• 保证故障发生后,能把数据库中的数据从错误状态 恢复到某种逻辑一致的状态
• 保证事务ACID
恢复技术是衡量系统优劣的重要指标
10.3 故障的种类
事务故障
某个事务在运行过程中由于种种原因未运行至正常 终止点就夭折了
- 输入数据有误
- 运算溢出
- 违反了某些完整性限制
- 某些应用程序出错
- 并行事务发生死锁
事务故障的恢复
- 发生事务故障时,夭折的事务可能已把对数据库的部分 修改写回磁盘
- 事务故障的恢复:撤消事务(UNDO)
- 强行回滚(ROLLBACK)该事务
- 清除该事务对数据库的所有修改,使得这个事务象根本 没有启动过一样
系统故障
系统故障常见原因
- 操作系统或DBMS代码错误
- 操作员操作失误
- 特定类型的硬件错误(如CPU故障)
- 突然停电
系统故障的恢复
-
清除尚未完成的事务对数据库的所有修改
• 系统重新启动时,恢复程序要强行撤消(UNDO)所 有未完成事务
-
将缓冲区中已完成事务提交的结果写入数据库
• 系统重新启动时,恢复程序需要重做(REDO)所有 已提交的事务
介质故障
计算机病毒
恢复操作的基本原理:冗余
• 利用存储在系统其它地方的冗余数据来重建数据库中 已被破坏或不正确的那部分数据
恢复的实现技术:复杂
• 一个大型数据库产品,恢复子系统的代码要占全部代 码的10%以上
10.4 恢复的实现技术
转储:
转储是指DBA将整个数据库复制到磁带或另一个磁盘上 保存起来的过程
登记日志文件
日志文件(log)是用来记录事务对数据库的 更新操作的文件
以数据块或日志为单位
日记文件内容:
开始标志、结束标志、所有更新操作、 与事务有关的内部更新操作
登记原则:
登记的次序严格按并行事务执行的时间次序
必须先写日志文件,后写数据库
第十一章 并发控制
1并发控制概述
多事物执行方式:串行、交叉并发、同时并发
并发操作带来的数据不一致性:丢失修改、不可重复读(不同值,【神秘消失,多数据记录】(幻影现象))、读‘’脏“数据
2封锁
在事务T释 放它的锁之前,其它的事务不能更新此数据对象
基本封锁类型:排他锁X锁、共享锁S锁
3封锁协议
一级:加X锁 不丢失修改
二级:加S锁,在操作结束后解锁释放 不丢失修改,不读‘’脏数据”
三级:在整个事务结束后解锁释放 不丢失修改,不读‘’脏数据” , 可重复读
4活锁和死锁
活锁:先来先服务
死锁:多个事物互相等待的情形
方法:
- 预防死锁(一次封锁法(降低了并发度,实际上不可行)、顺序封锁法(也不可行))
- 检测死锁:如果事物等待时间超过了约定时间,则确定发生了死锁。(等待图法)
- 解除死锁
5并发调度的可串行性
将所有事物串行起来的策略一定是正确的调度策略
当且仅当某结果与按某一次序串行执行结果相同
并发事物正确性准则:可串行性
如何保证并发操作的地调度正确?
6两段锁协议
1,在对任何数据进行读、写操作之前
明确的把事物加锁
-
将缓冲区中已完成事务提交的结果写入数据库
• 系统重新启动时,恢复程序需要重做(REDO)所有 已提交的事务
介质故障
计算机病毒
恢复操作的基本原理:冗余
• 利用存储在系统其它地方的冗余数据来重建数据库中 已被破坏或不正确的那部分数据
恢复的实现技术:复杂
• 一个大型数据库产品,恢复子系统的代码要占全部代 码的10%以上
10.4 恢复的实现技术
转储:
转储是指DBA将整个数据库复制到磁带或另一个磁盘上 保存起来的过程
登记日志文件
日志文件(log)是用来记录事务对数据库的 更新操作的文件
以数据块或日志为单位
日记文件内容:
开始标志、结束标志、所有更新操作、 与事务有关的内部更新操作
登记原则:
登记的次序严格按并行事务执行的时间次序
必须先写日志文件,后写数据库
第十一章 并发控制
1并发控制概述
多事物执行方式:串行、交叉并发、同时并发
并发操作带来的数据不一致性:丢失修改、不可重复读(不同值,【神秘消失,多数据记录】(幻影现象))、读‘’脏“数据
2封锁
在事务T释 放它的锁之前,其它的事务不能更新此数据对象
基本封锁类型:排他锁X锁、共享锁S锁
3封锁协议
一级:加X锁 不丢失修改
二级:加S锁,在操作结束后解锁释放 不丢失修改,不读‘’脏数据”
三级:在整个事务结束后解锁释放 不丢失修改,不读‘’脏数据” , 可重复读
4活锁和死锁
活锁:先来先服务
死锁:多个事物互相等待的情形
方法:
- 预防死锁(一次封锁法(降低了并发度,实际上不可行)、顺序封锁法(也不可行))
- 检测死锁:如果事物等待时间超过了约定时间,则确定发生了死锁。(等待图法)
- 解除死锁
5并发调度的可串行性
将所有事物串行起来的策略一定是正确的调度策略
当且仅当某结果与按某一次序串行执行结果相同
并发事物正确性准则:可串行性
如何保证并发操作的地调度正确?
6两段锁协议
1,在对任何数据进行读、写操作之前
明确的把事物加锁
满足两段锁协议一定是正确的调度,正确的调度不一定遵守两段锁协议
相关文章:
数据库笔记
数据库原理及应用 半期考:运筹学,概率论,数据库 文章目录 数据库原理及应用1.课程的考核2.数据库的运用3.数据库学什么? 第一章 绪论1.1数据库系统概述1.1.1基本概念1.1.2数据管理技术的生产和发展人工管理文件系统数据库系统 1.…...
AI是风口还是泡沫?
KlipC报道:狂热的人工智能追捧潮有所冷静,投资者在“上头”的追涨之后,开始回归到对基本面的关注。 KlipC的合伙人Andi D表示:“近日,有关英伟达二季度“破纪录”财报涉嫌造假的话题正在社交媒体和投资者论坛中甚嚣尘上…...
echarts环图配置
echarts环图配置 1、安装echarts npm install echarts4.9.02、页面引入echarts import echarts from echarts;3、应用 template片段 <div class"chart-wrap"><div id "treeChart" style "width: 180px; height:180px;" ><…...
Redis优化 RDB AOF持久化
---------------------- Redis 高可用 ---------------------------------------- 在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境…...
三维模型3DTILE格式轻量化压缩主要技术方法浅析
三维模型3DTILE格式轻量化压缩主要技术方法浅析 三维模型3DTILE格式轻量化压缩主要技术方法浅析 随着三维地理空间数据的应用日益广泛,为了更快速地传输和存储这些大规模数据,3DTile格式的轻量化压缩显得尤为重要。本文将浅析关于三维模型3DTile格式轻量…...
c++day2---9.7
1> 思维导图 2> 封装一个结构体,结构体中包含一个私有数组,用来存放学生的成绩,包含一个私有变量,用来记录学生个数, 提供一个公有成员函数,void setNum(int num)用于设置学生个数 提供一个公有成员…...
地震反演基础知识2(代码演示)
文章目录 数据集代码演示1. SEG盐真实数据2. SEG盐速度模型3. SEG盐模拟地震数据4. SEG盐模拟速度模型5. openfwi地震数据6. openfwi速度模型 数据集代码演示 1. SEG盐真实数据 # 绘制SEG盐层数据的地震图像 def pain_seg_seismic_data(para_seismic_data):Plotting seismic …...
C#学习 - 方法的定义、调用、调试
方法 方法(Method)是由C/C中的函数(Function)发展而来的 //C语言 #include <stdio.h> int Add(int x, int y) {return x y; }//函数 int main(void) {int a 4;int b 2;int c Add(a, b);printf("%d %d %d\n&quo…...
『PyQt5-Qt Designer篇』| 09 Qt Designer中分割线和间隔如何使用?
09 Qt Designer中分割线和间隔如何使用? 1 间隔1.1 水平间隔1.2 垂直间隔2 分割线2.1 水平线2.2 垂直线3 保存并执行1 间隔 间隔有水平间隔和垂直间隔: 1.1 水平间隔 拖动4个按钮,并设置为水平布局: 在第一个按钮的右边添加一个水平间隔: 设置其sizeType为Fixed,宽度为20…...
基于springboot2+mybatis-plus+jsp增删改查
概述 编写简单增删改查,理解之后可以自己试着扩展,相信你也可以,加油,我自己懂了的用注释记在下面方便理解 详细 一、需求(要做什么) 基于现今最流行的技术实现增删改查demo, 便于初学者上手…...
[PHP]empty一直返回true
class Post {public function __get($key){return true;} }$post new Post(); var_dump(empty($post->a));// bool(true) PHP: 重载 - Manual 读取不可访问(protected 或 private)或不存在的属性的值时,__get() 会被调用。 当对不可访…...
[2023.09.11]: Yew的SSR中的Cargo.toml配置
由于各种原因,我最后还是打算把Yew应用的开发从csr模式转成ssr模式。没想到这里面的水还是挺深的,这里面的Cargo.toml配置包含的信息量之大,着实让我头疼了一番。 Cargo.toml的配置如下 [package] name "app" version "0.…...
HTTPS加密协议详解:HTTPS性能与优化
1、HTTPS性能损耗 前文讨论了HTTPS原理与优势:身份验证、信息加密与完整性校验等,且未对TCP和HTTP协议做任何修改。但通过增加新协议以实现更安全的通信必然需要付出代价,HTTPS协议的性能损耗主要体现如下: (1).增加延时 分析前…...
9月11日,每日信息差
今天是2023年09月11日,以下是为您准备的13条信息差 第一、微软已停止向俄罗斯提供服务,俄罗斯接下来的举动震惊世人!对此俄罗斯回应称,他们将把微软的收费版改为免费版并推广至全球 第二、我国首套海洋漂浮式温差能发电装置完成…...
RHCSA-VM-Linux基础配置命令
1.代码命令 1.查看本机IP地址: ip addr 或者 ip a [foxbogon ~]$ ip addre [foxbogon ~]$ ip a 1:<Loopback,U,LOWER-UP> 为环回2网卡 2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP>为虚拟机自身网卡 2.测试网络联通性: [f…...
Web安全研究(四)
No Honor Among Thieves: A Large-Scale Analysis of Malicious Web Shells Stony Brook University Ruhr-University Bochum Web shell作为恶意脚本,攻击者将其上传到被攻陷的Web服务器,以远程执行任意命令、维护其访问权限并提升其特权。尽管在实践中它…...
【CS324】Large Language Models(持续更新)
note 文章目录 note一、引言二、大模型的能力三、大模型的有害性(上)四、大模型的有害性(下)五、大模型的数据Reference 一、引言 语言模型最初是在信息理论的背景下研究的,可以用来估计英语的熵。 熵用于度量概率分布…...
【学习笔记】「2020-2021 集训队作业」Communication Network
有点难😅 发现容斥系数设计的非常巧妙🤔 设 f ( i ) f(i) f(i)表示恰好有 i i i条边相同的方案数, g ( i ) g(i) g(i)表示至少有 i i i条边相同的方案数 根据二项式反演, g ( i ) ∑ j ≥ i ( j i ) f ( j ) ⇒ f ( i ) ∑ j…...
文章参考链接
文章参考: 前端 echsrt横轴文字过长,…展示【link】js数组去重【link】js数据是String去重【link】js数据是对象去重【link】小程序使用wxml-to-canvas【link】vantui【link】微信小程序使用vantui组件【link】【link】微信小程序,选项卡页面…...
SQLI-labs-第七关
知识点:单引号()加括号闭合错误的布尔盲注 思路: 寻找注入点 我们首先看一下正常的回显,并没有显示出什么明显的信息 输入?id1 发现报错 输入?id1 -- 还是报错,说明SQL语句的语法错误可能不是单引号闭合…...
腾讯云轻量2核4G5M服务器_CPU内存_流量_带宽_系统盘
腾讯云轻量2核4G5M服务器:CPU内存流量带宽系统盘性能测评:轻量应用服务器2核4G5M带宽,免费500GB月流量,60GB系统盘SSD盘,5M带宽下载速度可达640KB/秒,流量超额按照0.8元每GB支付流量费,轻量2核4…...
从零开始搭建Apache服务器并使用内网穿透技术实现公网访问
Apache服务安装配置与结合内网穿透实现公网访问 文章目录 Apache服务安装配置与结合内网穿透实现公网访问前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpo…...
unordered_map和unordered_set的使用
前言 在C98中,STL提供了底层为红黑树的结构的一系列关联式容器,在查询时效率可以达到logN,即使最差的情况下需要比较红黑树的高度次,当树中的节点较多时,查询的效率也不是很理想,最好的查询是,进…...
javascript【格式化时间日期】
javascript【格式化时间日期】 操作: (1) 日期格式化代码 /*** 日期格式化函数<br/>* 调用格式:需要使用日期对象调用* <p> new Date().Format("yyyy/MM/dd HH:mm:ss"); </p>* param fmt 日期格式* returns {*} 返回格式化…...
CCC数字钥匙设计【NFC】--什么是AID?
1、NFC中的AID是什么? AID,英文全称为Application Identifier,这是NFC技术中的概念,AID用于唯一标识一个应用。 NFC应用的AID相关操作,包括注册和删除应用的AID、查询应用是否是指定AID的默认应用、获取应用的AID等 …...
变压器耐压试验电压及电源容量的计算
被试变压器的额定电压为(11081. 25%) /10. 5kV, 联接组标号为 YNd11。 试验时高压分接开关置于第 1 分接位置, 即高压侧电压为 126kV, 高、 低压电压比 K1126/(√310. 5) 6. 93。 现以 A 相试验…...
uniapp实现底部弹出菜单选择
其实uniapp有内置的组件,不用自己去实现,类似于这样: uni.showActionSheet({itemList: [菜单一, 菜单二, 菜单三],success: function (res) {console.log(选中了第${res.tapIndex 1}个菜单);},fail: function (res) {console.log(res.errMs…...
14. 线性代数 - 线性方程组
文章目录 线性方程组矩阵行列式全排列和逆序数N阶行列式(非)齐次线性方程Hi,大家好。我是茶桁。 结束了「微积分」部分的学习之后我们稍作休整,今天正式开始另外一部分:「线性代数」的学习。小伙伴们放松完回来要开始紧张起来了。 我们之前说过,不管是哪一个工程学科,根…...
C++QT day4
仿照string类,完成myString类 #include <iostream> #include <cstring> using namespace std; class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():size(10){s…...
Python中的 if __name__ ==‘main‘
你编写的程序迟早需要创建目录以便在其中存储数据。 os 和 pathlib 包含了创建目录的函数。我们将会考虑如下方法: | 方法 | 描述 | | -------------------- | -------------------------- | | os.mkdir() | 创建单个子目录 | | os.makedirs() | 创建多个目录&…...
山东建设公司网站/360站长平台链接提交
先需求分析一下---传统的web应用是在线应用,这其实也是web的特色,对于PC时代问题并不大,但到了移动互联网时代,设备终端位置不再固定,依赖无线信号,网络的可靠性变得更低。比如:在火车上&#x…...
网站的关键词在哪设置/今日疫情最新情况
原标题:Linux吃掉我的内存在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上换入换出页会极大地影响系统的性能…...
企业网站建设参考资料/连云港seo优化
资源介绍资源名称:MSSQL、MySQL、Oracle 三大主流数据库快速上手教程目录:MSSQL、MySQL、Oracle 三大主流数据库快速上手第一章MSSQL、MySQL、Oracle 三大主流数据库快速上手第七章1-4MSSQL、MySQL、Oracle 三大主流数据库快速上手第三章1-5MSSQL、MySQL…...
深圳律师网站建设/网络推广优化是干啥的
转载于:https://www.cnblogs.com/bokeyuan11/p/9183990.html...
wordpress 更新失败/有什么功能
最近由于了解到公司业务系统中关于财务和费用报销方面的后台运维处理的案例特别多。 总结起来有如下几类: 1.财务对账到了审核日期没有审核的,过了对账日期但是没有对账提交的。 2.费用报销申请都过期了还没有提交的,有的甚至长达半年&#x…...
玉溪网站制作/上海百度公司地址
docker搭建npm仓库(verdaccio) 文章目录docker搭建npm仓库(verdaccio)拉去镜像设置存储目录创建目录结构配置文件内容运行拉去镜像 docker pull verdaccio/verdaccio 设置存储目录 mkdir -p ~/data/verdaccio/volume 创建目录…...