文档库 最新最全的文档下载
当前位置:文档库 › 数据库期末总结

数据库期末总结

数据库期末总结
数据库期末总结

一基本概念(Basic Concepts)

1、数据库系统开发生命周期(database system development lifecycle)

1.Database planning

2.System definition

3.Requirements collection and analysis

4.Database design

5.DBMS selection (optional)

6.Application design

7.Prototyping (optional)

8.Implementation

9.Data conversion and loading

10.Testing

11.Operational maintenance.

2、数据库设计的三个主要步骤(three major steps of the database design)

1、概念设计

是整个数据库设计的关键,通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型

2、逻辑设计

将概念结构转化为某个DBMS所支持的数据模型,对其进行优化

3、物理设计

为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)

3、C/S和B/S

c/s客户端/服务器

b/s浏览器/服务器

c/s般适合于软件开发对客户端计算机配置要求比较高

客户端也需要安装软件典型事例:qq

b/s般适合于网站开发客户端只要安装浏览器完成操作

客户端基本上需要加载对于服务器端配置要求比较高

典型事例:网站erp系统

Two-Tier Client/Server Architecture(两层客户机/服务器体系结构):

客户机/服务器结构将应用一分为二,由服务器提供应用(数据)服务,多台客户机进行连接。1)“Fat”客户端,需要大量的资源在客户端进行高效运行

2)重要的客户端管理开销。

Three-Tier Client/Server Architecture:

在三层客户机/服务器结构中,由于数据访问是通过功能层进行的,因此客户端不再与数据库直接建立数据连接。也就是说,建立在数据库服务器上的连接数量将大大减少。

不需要昂贵的硬件,集中维护,修改不影响其他人,将业务逻辑与数据库函数使其容易实现负载平衡。很自然地映射到Web环境。

4、标识数据项(Identify the Data Items)

二SQL

1、查询(Query)

2、安全(Security)

3、索引(Index)

4、视图(View)

三高级ER(Advanced ER)

1、

(1)关系理论(Relational Theory)

关系模型是最简单也是最直观的数据模型,模型基于表的行和列,表被称作关系,因此使用属于关系模型。

等价项(Equivalent Terms):

Table=Relation

Column=Field=Attribute

Row=Record=Tuple

实体关系:一对多,多对多

主键:一个主键唯一地标识表中的每条记录。唯一,最小限度,非空,不能更新。

外键:如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。

根据存储模型划分,数据库类型主要可分为:

1、树状数据库(Hierarchical Database)、

2、网状数据库(Network Database)、

3、关系数据库(Relational Database)、

4、面向对象数据库(Object-oriented Database)等。

关系数据库的优点:

1、依赖于逻辑,而不是物理的、相关记录之间的联系

2、使用第四代语言

3、允许高度的数据独立性

(2)概念设计(Conceptual Design)

构建ERD的5个步骤:

1、实体表示为表

2、确定关系

3、列表字段

4、确定键(主键)

5、确定数据类型

(3)规范化(Normalization)

非规范化设计导致问题:

例:MEMBERVISIT(userID,password,fistName,LastName,phone,dateTimeIn,dateTimeOut)1、更新:当某用户有多条租借记录时,个人基本信息(如password)会被重复插入,当更新该用户的password时,不是所有的password都会被更新。

2、插入:当某用户没有租借记录时,他的信息就不能插入到数据表中。

3、删除:若某用户只有一次租借记录,删除该记录时,用户基本信息也会被删除。

第一范式:无重复的列。数据库表的每一列都是不可分割的原子数据项。实体中的某个属性有多个值时,必须拆分为不同的属性。

第二范式:属性完全依赖于主键。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。

第三范式:属性不依赖于其它非主属性。一个表中没有非主键字段决定其他非主键字段。若有则分成两个表。

BCNF:若关系模式R是第一范式,且每个属性都不传递依赖于R的候选键。

https://www.wendangku.net/doc/5714714307.html,/blog/774866

规范化处理:

2、弱实体(Weak Entity)

弱实体:在现实世界中,有时某些实体对于另一些实体有很强的依赖关系,即一个实体的存在必须以另一实体的存在为前提。前者就称为“弱实体”,后者称为“强实体”。比如在人事管理系统中,职工子女的信息就是以职工的存在为前提的,子女实体是弱实体,子女与职工的联系是一种依赖联系。

关联表:关联表是多对多关系中两个父表的一个子表。

3、派生属性(Derived attribute)

属性分为:简单或复合,单值或多值,派生属性。

派生属性:从一个或一系列相关属性派生出的值,在相同的实体中不是必要的。

例如:total_salary as (salary+bonus)

4、递归关系(recursive relationship)

递归联系是实体集内部实例之间的一种联系,通常形象地称为自反联系。

例如:在“职工”实体集中存在很多的职工,这些职工之间必须存在一种领导与被领导的关系。

5、复杂关系(complex relationship)

符合度(Multiplicity)是在一个n元实体关系中其他n-1个值固定时,实体可能的值或范围。

聚集:聚集是一种抽象,通过它联系被作为高层实体集

实体集A与B以及它们的联系可被看成实体集,并与另一实体集C发生联系

6、ER图中的问题(problems in an ER model)

连接陷阱:误认为不存在联系的两个实体间存在联系,从而通过这种“联系”获得错误的信息。包括扇形陷阱(fan traps)和深坑陷阱(chasm traps)。

扇形陷阱(fan traps):当用模型来表示实体间的联系时,某些特殊实体的实例出现间的通路(pathway)是不明确的。当一个实体与其他实体间存在俩个或更多的一对多联系时,可能存在扇形陷阱。

深坑陷阱(chasm traps):一个模型显示实体间存在关系,但是在实体间通路并不存在。

7、超类型/子类型层次结构(Supertype/Subtype Hierarchies)

超类实体(Supertype Entity):一般实体的共同领域。

子类实体(Subtype Entites):专业实体的特殊领域。

局部特殊化(Partial Specialization): 超类型的实例不属于一个子类型。

全体特殊化(Total Specialization)超类型的实例必须属于一个子类型。

不相交的规则(Disjoint rule): 超类可能属于最多一个子类。

重叠规则(Overlap rule): 超类可能属于多个子类。

四文件组织(File Organization)

1、列举计算机上通常使用的物理存储媒介(List the physical storage media available on the computers you use routinely.)

易失性存储(volatile storage):电源关闭时丢失内容。

持久性存储(non-volatile storage):关闭电源内容不丢失,包括二级存储和三级存储,

物理媒介:

1、缓存:最快和最昂贵的形式存储;易失性存储;被计算机系统的硬件管理

2、主存:快速存取;通常太小(或过于昂贵)来存储整个数据库;易失性存储,如果出现电源故障或系统崩溃主存储器的内容会丢失。

3、闪存:停电数据不丢失;数据只可以在一个位置写一次,但位置可以抹去重新写入;读取速度大致和主存的一样快;但是写入慢,消除慢;广泛应用于嵌入式设备,如数码相机、手机和USB密钥。

4、磁盘:数据存储在磁盘;主要是用于数据的长期存储媒介,通常存储整个数据库;数据必须从磁盘移到主存储器访问,在写回到存储;直接访问,可以在磁盘上按任何顺序读取数据,不像磁带;能达到1.5TB存储;断点和系统崩溃不丢失数据。

5、光存储器:非易失性、从一个旋转的磁盘使用激光读取数据;CD-ROM (640 MB)和DVD (4.7 to 17 GB)最广泛格式;蓝光光碟27 GB 到54 GB;WORM (Write-one, read-many)光碟用于档案存储;读和写是慢于磁盘;自动点唱机(Tape juke-boxes)系统中,有大量的可移动磁盘,几个驱动器,和自动加载/卸载机制可用的磁盘存储大量的数据。

6、磁带:非易失性,主要用于备份(从磁盘故障恢复),和归档数据;顺序访问,比磁盘慢得多,非常高的性能(40 300 GB磁带可用);磁带可以从驱动删除,比磁盘存储成本更便宜,但驱动器是昂贵的;磁带自动点唱机(Tape juke-boxes)能存储大量数据。

存储层次:

主存(primary storage):最快的媒介但是不稳定,缓存、主存(cache, main memory)。

二级存储(secondary storage):下一个水平层次结构,非易失性,适度快速访问时间,也叫联机存储(on-line storage),闪存、磁盘(flash memory, magnetic disks)。

三级存储(tertiary storage):最低水平层次结构,非易失性,慢速时间,也叫脱机存储(off-line storage)。磁带,光存储(magnetic tape, optical storage)。

2、磁盘的总容量

记录盘面数*每记录盘面的磁道数*每磁道的扇区数*每扇区的字节数

扇区:扇区是磁盘寻址的最小单位,其大小通常是512字节

3、磁盘的性能指标:磁盘的容量,存取时间,数据传输速度,可靠性

存取时间(Access time):从发出读或写请求到数据传输开始。

1、寻道时间(Seek time):将磁头移到柱面的时间:约2~30ms。

2、旋转等待时间(Rotational latency):扇区到磁头下方的时间,约10~20ms。

总时间:10~40ms

数据传输速度(Data-transfer rate):从磁盘得到或存储数据的速度。

可靠性:

平均失效时间(Mean time to failure (MTTF)):磁盘运行平稳没有失败的平均时间。一般3到5年。随着磁盘使用年限的增加,MTTF会减少。

4、定长记录和变长记录(Fixed-Length Records vs variable -Length Records)

定长记录:

存储记录i首地址:n*(i-1),n是每条记录的大小

记录访问简单但是记录可能会穿过块。修正:不允许记录穿过块的边界。

删除记录:所有记录上移一个;最后一个记录移到删除记录位置;不删除记录,将空闲记录加到空闲列表。

变长记录:

槽的标头包括:记录实体的数量;空闲空间的结尾;每条记录的位置和大小。

记录在文件中的组织方式:

1、堆存储(Heap):记录可以被存储在文件的任何空闲的位置。

2、连续存储(Sequentia):存储记录是顺序的,基于每条记录查找关键字的值。

3、哈希存储(Hashing):用哈希函数计算每条记录的一些属性,结果指定文件记录应该被存放在哪。

4、每个关系的记录可能存储在一个单独的文件中。

五查询处理和查询最优化(Query Processing and Query Optimization)

查询处理的基本步骤:

1、解析和翻译(Parsing and translation)

将查询转化为其内部形式,然后翻译成关系代数;解析器检查语法,验证关系。

2、优化分析(Optimization)

3、评估(Evaluation)

查询执行引擎获取查询评估方案,执行方案,返回结果到查询。

RDBMS(关系型数据库干礼系统)查询处理阶段:

1. 查询分析

2. 查询检查

3. 查询优化

4. 查询执行

例子:

Select B,D

From R,S

Where R.A = “c” ∧S.E = 2 ∧R.C=S.C

1、SQL

怎样执行查询:做笛卡尔积;选择元祖;投影

2、代数表达式(algebraic expressions)

关系代数表达式可能会有很多等价的表达

每个关系代数操作可以使用几种不同的算法进行评估

带注释的表达式指定的详细的评价策略被称为评估方案(evaluation-plan)

3、代数表达式树(algebraic expression tree)

评估整个表达式树的选择:

Materialization (物化执行): 产生一个表达式的结果,他的输入是关系式或已经经过计算的,物化(存储)到磁盘上,重复。

Pipelining(流水线): 传递元祖到父操作即使一个操作已经被执行了。

4、选择操作(Selection Operation)

1、简单的全表扫描方法

对查询的基本表顺序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出

适合小表,不适合大表

2、索引(或散列)扫描方法

适合选择条件中的属性上有索引(例如B+树索引或Hash索引)

通过索引先找到满足条件的元组主码或元组指针,再通过元组指针直接在查询的基本表中找到元组

排序:

原因:

SQL查询可以指定对输出进行排序

关系运算的某些操作,如连接运算,排序后实现高效

对于可放进内存的关系,使用如快排序之类的技术。对不能放进内存的关系,使用外排序第一阶段,建立多个排序的归并段文件

第二阶段,对归并段文件进行归并

5、连接操作(Join Operation)

几种不同的算法来实现连接(选择基于成本估计):

(1) 嵌套循环方法(nested loop)

(2)块嵌套循环连接

(3)索引嵌套循环连接

(4)排序-合并方法(sort-merge join 或merge join)

(5)Hash Join方法

各种连接策略比较:

1、如果一个连接输入很小(比如不到10 行),而另一个连接输入很大而且已在其连接列上

创建索引,则索引嵌套循环是最快的连接操作

2、如果两个连接输入很大,并已在二者连接列上排序(连接列上有索引),则合并连接是最快的连接操作

3、哈希连接可以处理很大的、未排序的非索引输入

4、如果两个连接输入都很大,而且这两个输入的大小差不多,则预先排序的合并连接提供的性能与哈希连接相似。然而,如果两个输入的大小相差很大,则哈希连接操作通常快得多

5、合并连接和哈希连接只能用于等值连接,对于非等值连接,只能用嵌套循环连接

多表连接:

N个表可能的连接种类有N!个

SQL Server对少于或等于4个的表连接采用验证全部组合的方法,对于超过4个的表连接,以4个表为一组进行验证

6、措施的查询成本(Measures of Query Cost)

查询优化(Query Optimization):在所有的等价的评估方案中选择成本最低的。

成本(Cost)使用数据库信息的统计信息进行评价。成本通常是测量作为应答查询的总运行时间。磁盘访问,CPU,甚至网络通信会影响成本。

通常磁盘访问是主要的成本,估计也相对容易。

方法:查询(平均查询成本)、读取块(平均读取块成本)、写入块的数量(平均写入块成本)。写入块的成本大于读取块的成本,数据在写入后会被回读保证写入是成功的。

tT –传输一个块的时间

tS –一次查询的时间

b个块的传输和S次的查询:b * tT + S * tS(忽略cpu成本,真正的系统考虑CPU成本)

一些算法通过使用额外的缓冲区空间可以减少磁盘IO ,实际可用内存缓冲量取决于其他并发查询和操作系统进程,只知道在执行时才能知道。

所需的数据可能已被缓存,避免磁盘I / O,但很难考虑成本估算。

7、最优方案(optimum plan)

关系查询优化是影响RDBMS性能的关键因素。

查询优化的总目标:

选择有效的策略

求得给定关系表达式的值

使得查询代价最小(实际上是较小)

实际系统的查询优化步骤:

1. 将查询转换成某种内部表示,通常是语法树

2. 根据一定的等价变换规则把语法树转换成标准(优化)形式

3. 选择低层的操作算法

对于语法树中的每一个操作

计算各种执行算法的执行代价

选择代价小的执行算法

4. 生成查询计划(查询执行方案)

查询计划是由一系列内部操作组成的。

代数优化策略:通过对关系代数表达式的等价变换来提高查询效率

关系代数表达式的等价:指用相同的关系代替两个表达式中相应的关系所得到的结果是相同的

两个关系表达式E1和E2是等价的,可记为E1≡E2

代数优化改变查询语句中操作的次序和组合,不涉及底层的存取路径物理优化就是要选择高效合理的操作算法或存取路径,求得优化的查询计划。

选择的方法:

基于规则的启发式优化

基于代价估算的优化

两者结合的优化方法

8、典型的启发式规则

典型的启发式规则:

1. 选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条

2. 把投影运算和选择运算同时进行

如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系

3. 把投影同其前或其后的双目运算结合起来

4. 把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算

5. 找出公共子表达式

如果这种重复出现的子表达式的结果不是很大的关系并且从外存中读入这个关系比计算该子表达式的时间少得多,则先计算一次公共子表达式并把结果写入中间文件是合算的

当查询的是视图时,定义视图的表达式就是公共子表达式的情况

6. 在执行连接操作前对关系适当进行预处理

按连接属性排序

在连接属性上建立索引

六索引(Indexing)

1、主索引,聚类索引,非聚类索引,次索引(primary index; clustering index; non-clustering index; secondary index)

索引机制加速访问所需数据。

主索引/聚类索引:在一个连续的有序文件中,搜索键指定文件的索引。主索引的搜索键通常但不一定是主键。

该索引中键值的逻辑顺序决定了表中相应行的物理顺序。聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

次索引/非聚类索引:搜索键指定的顺序不同与文件的顺序的索引。

一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。汉语字典的正文本身就是一个聚集索引。

索引序列文件(Index-sequential file):具有主索引的顺序文件。

2、稠密索引和稀疏索引(Dense index vs Sparse Index)

稠密索引:索引记录每条搜索键在文件中的值。

稀疏索引:索引记录部分搜索键的值。和稠密索引相比,插入和删除占用更少的空间和维护开销,定位记录一般比稠密索引慢

权衡(Sparse vs. Dense Tradeoff):

稀疏索引:每条记录更少的索引空间

可以保存更多的索引在内存上

稠密索引: 不需要访问文件就能知道任何记录是否存在

稀疏索引适用于插入,稠密索引需要次索引。

3、B+树索引,插入删除查询(B+-Tree Index (insert; delete; query))

B+-Tree Insertion:

B+-Tree before and after insertion of “Lamport”

B+-Tree Deletion:

Before and after deleting “Srinivasan”

Deleting “Srinivasan” causes merging of under-full leaves

4、哈希(Hashing)

哈希索引组织搜索键,与它们相关的记录指针,到一个散列文件结构。严格地说,哈希索引总是次索引。

七事务—并发和恢复(Transaction—Concurrency and Recovery)

1、事务的ACID属性(ACID properties of a Transaction)

事务(Transaction)是DBMS的单个逻辑工作单元,一个事务内的所有语句被作为一个整体执行。

在事务的执行过程中,如果遇到错误,则可以回退事务,取消该事务所作的全部改变,从而保证数据库数据的一致性和可恢复性。即一个事务要么其中的语句全部正确执行,要么全部语句不起作用。

原子性(Atomicity):一个事务中的所有操作要么全部成功,要么全部失败。原子性由恢复机制实现。

一致性(Consistency):事务完成后,所有数据处于应有的状态,所有内部结构正确,能够准确反映事务所作的工作。基于隔离性实现。

隔离性(Isolation):一个事务不会干扰另一个事务的进程,事务交叉调度执行的结果与串行调度执行的结果是一致的。隔离性由并发控制机制实现。

持久性(Durability):事务提交后,对数据库的影响是持久的,即不会因为系统故障影响事务的持久性。持久性由恢复机制实现。

2、隔离级别(Isolation Level—serializable, repeatable read, read committed, read uncommitted) serializable:一个调度的执行必须等价于一个串行调度的结果

repeatable read:只允许读取已提交的记录,并要求一个事务对同一记录的两次读取之间,其它事务不能对该记录进行更新

read committed:只允许读取已提交的记录,但不要求可重复读(SQL Server 默认级别)。read uncommitted:允许读取未提交的记录

也称为读未提交(Read Uncommitted):允许脏读取,但不允许更新丢失。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁”实现。

也称为读提交(Read Committed):允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁”和“排他写锁”实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。

可重复读取(Repeatable Read):禁止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁”和“排他写锁”实现。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。

序列化(Serializable):提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁”是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。

3、冲突的事务安排(conflict in the transaction schedule)

当两条指令是不同事务在相同数据项上的操作,并且其中至少有一个是write指令时,则称这两条指令是冲突的

4、事务的可串行化(transaction serializable)

冲突的可串行化:

目的

数据库系统必须控制事务的并发执行,保证数据库处于一致的状态

在并发执行中,并行调度效果与某种串行执行效果一样,则可以确保数据库的一致性

冲突可串行化:当一个调度S与一个串行调度冲突等价时,则称该调度是冲突可串行化的5、两阶段封锁协议(Two-Phase Locking Protocol)

增长阶段(Growing Phase)

事务可以获得锁,但不能释放锁

缩减阶段(Shrinking Phase)

事务可以释放锁,但不能获得锁

6、共享锁、互斥型锁和死锁(Share lock, eXclusive lock, and Deadlock)

锁(Lock)是DBMS中用以控制用户并发操作的一种重要方法,通过锁定资源可以防止多个用户同时对一个数据进行修改,或查询正在被修改的数据,从而保证事务的完整性和数据库的一致性

共享锁(S锁,Share lock)

事务T对数据对象R加上S锁,则其它事务对R的X锁请求不能成功,而对R的S锁请求可以成功;又称读锁

申请对R的共享锁:lock-S(R)

用于只读数据操作,它允许多个并发事务读取(Select)锁定资源,但禁止其它事务对锁定的资源进行修改。一般读取数据后就释放共享锁,除非要将锁升级。

排它锁(X锁,eXclusive lock)

事务T对数据对象R加上X锁,则其它事务对R的任何封锁请求都不能成功,直至T释放R 上的X锁;又称写锁

申请对R的排它锁:lock-X(R)

一般来说,SQL Server在事务结束时释放排他锁。

死锁:两个事务都封锁了一些数据对象,并相互等待对方释放另一些数据对象以便对其封锁,结果两个事务都不能结束,则发生死锁。

循环死锁和转换死锁:

循环死锁:两个进程取得不同资源的锁,然后需要取得对方所持的资源的锁。

转换死锁:两个或多个进程在事务中持有同一资源的共享锁,都要把共享锁升级为排他

锁,但都要等到其它进程释放这一共享锁后才能升级。

死锁发生的条件(在条件①②③成立的前提下,条件④是死锁存在的充分必要条件)

①互斥条件:事务请求对资源的独占控制

②占有等待条件:事务已持有一定资源,又去申请并等待其它资源

③非抢占条件:直到资源被持有它的事务释放之前,不可能将该资源强制从持有它的事务夺去

④循环等待条件:存在事务相互等待的等待圈

预防死锁

预先占据所需的全部资源,要么一次全部封锁要么全不封锁

缺点:难于预知需要封锁哪些数据并且数据使用率低

所有资源预先排序,事务按规定顺序封锁数据

使用抢占与事务回滚

7、Redo and Undo

8、Checkpoint

检查点:

?带有检查点记录的日志生成

?将当前日志缓冲区的所有日志记录写入稳存中

?在日志文件中写入一个检查点记录

?将当前数据缓冲区的所有数据记录写入稳存中

?输出检查点时活跃事务的列表L

一个事务对某个数据对象加锁,取得对它一定的控制,限制其它事务对该数据对象的使用,由此提供事务需要的隔离性,保证各个事务不会互相干扰,一个事务不会读取或修改另一个事务正在使用的数据。

八作业

?考虑关系Employee(ID,salary), 表示职工的工资号和工资数额,开始Employee关系中

有两个元组(A,20)和(B,30)。

?现有如下两个事务T1、T2,

?T1

insert into Employee values (C, 40)

update Employee set salary = salary+10 where ID=’A’;

commit;

?T2

select sum(salary) as sal1 from Employee;

select sum(salary) as sal2 from Employee;

commit;

?给出T2返回的sal1与sal2所有可能的值的情况,如果T2运行的隔离性级别为Serializable Repeatable read read committed read uncommitted

https://www.wendangku.net/doc/5714714307.html,/p-669149349.html

九冲突可串行化

?指令的顺序

考虑一个调度S中的两条连续指令(仅限于read与write操作)I i与I j,分别属于事务T i与T j

①I i = read(Q), I j = read(Q);

②I i = read(Q), I j = write(Q);

③I i = write(Q), I j = read(Q);

④I i = write(Q), I j = write(Q);

在①情况下,I i与I j的次序无关紧要。其余情况下,I i与I j的次序不同,其执行结果也不同,数据库最终状态也不同

冲突可串行化判定:

十其他

?Database Security

Grant and Revoke(授权和撤销)

一、GRANT

GRANT语句的一般格式:

GRANT <权限>[,<权限>]...

[ON <对象类型> <对象名>]

TO <用户>[,<用户>]...

[WITH GRANT OPTION];

语义:将对指定操作对象的指定操作权限授予指定的用户

发出GRANT:

DBA

数据库对象创建者(即属主Owner)

拥有该权限的用户

接受权限的用户

一个或多个具体用户

PUBLIC(全体用户)

二、REVOKE

授予的权限可以由DBA或其他授权者用REVOKE语句收回

REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]...

[ON <对象类型> <对象名>]

FROM <用户>[,<用户>]...;

Statistics security

统计数据库

?允许用户查询聚集类型的信息(如合计、平均值等)

?不允许查询单个记录信息

统计数据库中特殊的安全性问题

?隐蔽的信息通道

?能从合法的查询中推导出不合法的信息

规则1:任何查询至少要涉及N(N足够大)个以上的记录

规则2:任意两个查询的相交数据项不能超过M个

规则3:任一用户的查询次数不能超过1+(N-2)/M

跨站脚本攻击(XSS)

XSS漏洞发生当Web应用把用户输入的未经过滤或编码的数据直接发送给浏览器。XSS会导致攻击者在受害者的浏览器中执行脚本程序,这些脚本程序可以劫持用户的会话、修改网页甚至传播蠕虫。

?网页挂马

?钓鱼攻击

XSS的危害

?从你下在浏览的域中偷到你的信息

?完全修改你看到的页面内容

?从现在开始,跟踪你在浏览器中的每一个动作

?把你重定向到一个恶意站点

?利用浏览器的漏洞控制你的机器

阻止XSS攻击

?显示用户输入的数据时进行转义

?转义成无害的html字符

?