• 数据库笔记


    数据库原理及应用

    半期考:运筹学,概率论,数据库

    文章目录

    1.课程的考核

    期末成绩70%

    平时作业10%

    1. 超星平台上布置的作业
    2. 超星平台上的视频学习
    3. 课前测试

    实验占10%

    1. 实验测试(12次)从超星平台上下载实验指导手册
    2. 实验报告

    半期测试10%

    旷课扣5分,迟到早退扣2分

    2.数据库的运用

    电子商务,超市,各种信息

    数据来自数据库:修改后数据需要存储到数据库中

    3.数据库学什么?

    学习目的:基本概念和理论,SQL,管理维护技术,设计方法和应用

    第一章 绪论

    1.1数据库系统概述

    1.1.1基本概念

    基本概念描述
    数据Data数据库中存储的基本对象:音乐,一句话,视频(后期),信息存在的一种形式
    数据模型描述现实世界的方法,比如把人抽象成身高、体重…
    数据模式用某个模型描述的结果,比如用c语言编写出一个表
    数据库DBDatabase,简称DB是长期存储在计算机内,有组织,可共享的。支持企业各种应用开发,数据集合。对企业中各种单位实体及其他们之间的联系,进行建模,把它存储起来
    数据库管理系统DBMS位于用户和操作系统之间,就是软件。功能(定义、提供数据定义语言DDL、操纵、运行管理)
    数据库系统DBS(database system)计算机系统引入数据库之后的称呼,DBS = DB + DBMS(用户和数据库之间) + 用户 + 软硬件环境

    1.1.2数据管理技术的生产和发展

    人工管理

    40-50年代

    特点:数据不保存,没有软件对系统进行管理,不具有独立性

    文件系统

    50-60年代

    特点:

    1. 有早期的存储设备:磁带,磁盘,文件系统,批处理

    2. 数据可以长期保存

    3. 数据具有共享性

    4. 由文件系统管理数据

    数据库系统

    60年代末

    从文件系统到数据库系统,是一个大飞跃

    特点:
    数据结构化(与文件系统的本质关系)
    数据共享性高,冗余度低,
    数据独立性高,
    数据由DBMS统一控制:安全保护、完整、并发控制(对多用户的并发操作加以控制,防止相互干扰而得到错误的结果)

    1.2数据模型 (2.27)

    世界·说明
    现实客观存在的对象,如人
    信息由概念模型描述,如人的身高、体重、性别、年龄
    机器将概念模型数字化

    数据模型要求:能真实的模拟现实世界、容易为人所理解、便于在计算机上实现

    1.2.1概念模型
    基本概念说明
    实体Entity客观存在的对象
    属性Attribute实体具有的某一特性
    码Key能唯一标识一个实体的(学号)
    域Domain属性的取值范围(如整数、{a-z})
    实体型实体及其属性名集合,如学生(姓名、学号、性别)
    实体集同类实体比如研究生和本科生
    联系现实世界中内部及事物之间的联系
    两个实体之间的联系

    一对一联系、一对多联系、多对多联系(课程和学生)

    同一个实体集内各实体之间的联系

    一对一联系(夫妻)、一对多联系(领导和职工)、多对多联系(课程和预选课)

    1.2.2数据模型组成要素:
    数据结构:数据组织静态
    数据操作:增删改查动态
    完整性约束条件:(eg:限制性别男女)通用或专用

    关于数据模型的讨论:

    1. 层次模型不能直接表示哪一种联系?多对多
    2. 网状模型的数据结构是什么?图
    3. 层次模型和网状模型的查询效率如何,哪个更优?层次
    1.关系模型数据结构
    关系模型的基本概念:

    关系(二维表)、元祖(表中的一行)、属性(表中的列)、主码(唯一确定主体属性的)

    分量(表中的单个元素)、关系模式(学生(学号,姓名,年龄))、域(取值)

    不允许表中套表

    关系的每一个分量必须是不可分的数据项

    关系模型的数据操作:

    增删改查

    关系模型优缺点:

    建立在严格的数据概念基础上

    概念单一。数据结构简单、清晰

    缺点:查询效率不如非关系模型高

    层次模型

    一对多(树形结构)PCR

    1.3数据库系统结构

    开发人员角度

    三级模式结构(数据库内部)

    最终用户
    1. 单用户数据库系统(不共享)
    2. 主从式结构(一个用户带多个终端比如银行机房的主机和ATM机)
    3. 分布式结果数据库(逻辑上整体,物理分布不同。优点:便于组织管理 缺点:效率低)
    4. 客户/服务器(qq软件是客户,腾讯服务器。优点:减少数据传输量。缺点:“胖客户”:维护困难。改进:B/S结构。游览器)
    5. 游览器-应用服务器/数据库服务器多层结构
    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不能取空值(不知道,不存在,无意义)的值。实体完整性规则规定基本关系的所有主属性都不 能取空值

    • 参照完整性(必须满足)

    参照完整性要求关系中不允许引用不存在的实体。即参照的关系中的属性值必须能够在被参照关系找到或者取空值

    1. 关系间的引用(一对多、多对多【学生实体及其内部的领导联系】)

    ​ 学生关系引用了专业关系的主码“专业号”。 学生关系中的“专业号”值必须是确实存在的专业

    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');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    第三章 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')
      • 1
      • 2
      • 3
      • 4
      • 5
    • 插入子查询结果
       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;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11

    2.修改数据

    语句格式
      UPDATE  <表名>    SET  <列名>=<表达式>[<列名>=<表达式>][WHERE <条件>]
    • 1
    • 修改某一个元组的值
      --例:将学生05001的年龄改为22岁。
        UPDATE  Student
        SET Sage=22   
        WHERE  Sno=' 05001 '
      • 1
      • 2
      • 3
      • 4

    • 修改多个元组的值
      --例:将所有学生的年龄增加1岁。 
      UPDATE Student
      SET Sage= Sage+1
      • 1
      • 2
      • 3
    • 带子查询的修改语句
      --例:将计算机科学系全体学生的成绩置零。
      UPDATE SC
      SET  Grade=0 
      WHERE  'CS'=  
      (SELETE Sdept  FROM  Student   WHERE Student.Sno = SC.Sno)
      • 1
      • 2
      • 3
      • 4
      • 5

    3.删除数据

    语句格式
     DELETE 
     FROM <表名> 
     [WHERE <条件>]--删除满足where子句条件的元祖
    
    • 1
    • 2
    • 3
    • 4
    • 删除某一个元组的值
      --例:删除学号为05010的学生记录。
      DELETE 
      FROM Student
      WHERE Sno=05010';
      
      • 1
      • 2
      • 3
      • 4
    • 删除多个元组的值
      --例:删除所有的学生选课记录。
      DELETE  
      FROM SC; 
      --例:删除2号课程的所有选课记录。  
      DELETE   
      FROM SC  
      WHERE Cno='2'
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 带子查询的删除语句
      --例: 删除计算机科学系所有学生的选课记录。 
      DELETE     
      FROM SC  
      WHERE  'CS'=   
      (SELETE Sdept 
      FROM Student  
      WHERE Student.Sno=SC.Sno)
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

    4.视图

    视图的特点

    1. 虚表,是从一个或几个基本表(或视图)导出的表
    2. 只存放视图的定义,不会出现数据冗余
    3. 基表中的数据发生变化,从视图中查询出的数据也 随之改变

    基于视图的操作 : 查询  删除  受限更新 定义基于该视图的新视图

    定义视图
    • 定义视图
      --[例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--进行的更新操作只涉及信息系学生。   
      --透过视图进行增删改操作时,不得破坏视 图定义中的谓词条件 (即子查询中的条件表达式)
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
    • 基于多个基表的视图
      --[例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';
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 基于视图的视图
      --[例4]  建立信息系选修了1号课程且成绩在90分以上的学 生的视图。        CREATE VIEW IS_S2    
      AS              
      SELECT Sno,Sname,Grade    
      FROM  IS_S1              
      WHERE  Grade>=90
      • 1
      • 2
      • 3
      • 4
      • 5
    • 带表达式的视图
      -- [例5]  定义一个反映学生出生年份的视图。      
      CREATE  VIEW BT_S(Sno,Sname,Sbirth)  
      AS           
      SELECT Sno,Sname,2020-Sage    
      FROM  Student
      --设置一些派生属性列, 也称为虚拟列--Sbirth 
      --带表达式的视图必须明确定义组成视图的各个属性列名
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • 建立分组视图
      --[例6]  将学生的学号及他的平均成绩定义为一个视图 
      假设SC表中“成绩”列Grade为数字型       
      CREAT  VIEW S_G(Sno,Gavg)    
      AS          
      SELECT Sno,AVG(Grade) 
      FROM  SC             
      GROUP BY Sno;
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    删除视图
     DROP  VIEW  <视图名>
    • 1
    视图作用
    1. 视图能够简化用户的操作

    2. 视图使用户能以多种角度看待同一数据

    3. 视图对重构数据库提供了一定程度的逻辑独立性

    4. 视图能够对机密数据提供安全保护

    第七章 数据库设计

    • 手工试凑法

    • 规范设计法:

      Ø新奥尔良(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功能:将对指定操作对象的指定操作权限授予 指定的用户。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    先进行DAC检查,通过DAC检查的数据对象再由系统

    进行MAC检查,只有通过MAC检查的数据对象方可存

    取。

    第五章 数据库完整性

    完整性:防止合法用户输入输出防止数据破坏

    安全性:防止非法用户

    完整性控制机制:约束条件、完整性检查机制、违约处理

    5.1实体完整性:
    primary key 定义,表级完整性约束或列级完整性约束
    
    • 1
    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.%’)         )--元组上的约束条件检查和违约处理
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    5.4完整性约束命名子句
    --完整性约束命名子句 
    CREATE TABLE Student  
    (Sno       NUMERIC6CONSTRAINT 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);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    第十章 数据库恢复技术

    10.1 事务的基本概念

    事务:

    ​ 一个事务可以是一条SQL语句,一组 SQL语句或整个程序

    ( 一个应用程序通常包含多个事务)

    定义事物:
    BEGIN TRANSACTION
    SQL 语句1  
    SQL 语句2 
    .....
    COMMIT--事务正常结束 
    
    
    BEGIN TRANSACTION
    SQL 语句1  
    SQL 语句2 
    .....
    ROLLBACK--事务异常终止 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    事物的特性(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,在对任何数据进行读、写操作之前

    明确的把事物加锁

    满足两段锁协议一定是正确的调度,正确的调度不一定遵守两段锁协议

  • 相关阅读:
    tensorflow求解泊松方程
    【Java面试】70%的Java求职者都被问到过, Mysql中MyISAM和InnoDB引擎有什么区别?
    JDBC批处理
    2022.11.3 英语背诵
    HTML使用 crypto-js-AES 加密
    winform中更新UI控件的方案介绍
    Sheet保存到本地 dataList前8行不读取
    深入理解指针:【探索指针的高级概念和应用二】
    vue路由和nodeJS环境搭建
    GlusterFs分布式文件系统
  • 原文地址:https://blog.csdn.net/weixin_45276304/article/details/132713454