数据库和文件系统的比较?
文件系统面向某一应用程序,共享性差,冗余度大,数据独立性差,记录内有结构,整体无结构,由应用程序自己控制。
数据库系统面向现实世界,共享性高,冗余度小,具有较高的物理独立性和一定的逻辑独立性,整体结构化,用数据模型描述,由数据库管理系统提供数据的安全性、完整性、并发控制和恢复能力。
文件系统与数据库系统的联系:文件系统与数据库系统都是计算机系统中管理数据中管理数据的软件。
数据库、数据库管理系统、数据库系统有什么区别和联系?
数据库系统是一个大概念,它包括数据库、数据库管理系统、数据库管理员、应用系统。
数据库是数据存放的仓库。
数据库管理系统是一个管理和操作数据库的软件。
数据库管理员通过数据库管理系统对数据库进行增删改查。
什么是数据库系统?
在计算机系统中引入数据库后的系统。它是由数据库、数据库用户、计算机软硬件、数据库管理员组成的。
什么是数据库?
数据库是长期存在计算机内、有组织的、可共享数据集合。
什么是数据库管理系统?
用于用户与操作系统之间的一层数据管理软件
什么是数据库管理系统的功能?
数据库定义、数据库的操纵、数据库的控制、数据库的存储、数据库的维护、数据字典。
数据库的控制包括:数据完整性控制、数据安全性控制、并发控制、数据库恢复。
数据库存储子系统是把各种DML语句转化成底层的文件系统命令,起到存储、检索、更新的作用。
数据字典:数据库中存放三级结构定义的数据库称为数据字典。对数据库的操作都要通过访问数据字典进行。
SQL的特点?
综合统一。集DCL,DML,DDL功能于一体;
高度非过程化。使用SQL进行数据操作时,是需要提出“做什么”,而不需要指明怎么做;
面向集合的操作方式。操作的对象、查找结果都可以是元组的集合;
同一种语法结构提供多种使用方式。既可以作为独立的语言进行交互,又可以作为嵌入式语言嵌入到更高级的语言程序中进行操作;
语言简洁,易学易用。
什么是数据库操纵语言、什么是数据库控制语言,试举例说明
数据操纵语言是指通过对表中的数据进行插入、删除和修改等操作,实现对数据库的基本操作。如:SELECT命令的作用是检查表的内容,UPDATE命令的作用是修改表等等。
数据控制语言是用来设置或者更改数据库用户或角色权限的语句,这些语句包括GRANT、REVOKE等语句。
数据库系统的特点是什么?
数据结构化
数据共享性高、冗余度低且扩充
数据独立性高
数据由数据库管理系统同一管理
数据库设计的主要6个阶段是哪些?
需求分析、概念设计、逻辑设计、物理设计、实施、运维
需求分析 : 分析用户的需求,包括数据、功能和性能需求。
概念结构设计 : 主要采用 E-R 模型进行设计,包括画 E-R 图。
逻辑结构设计 : 通过将 E-R 图转换成表,实现从 E-R 模型到关系模型的转换。
物理结构设计 : 主要是为所设计的数据库选择合适的存储结构和存取路径。
数据库实施 : 包括编程、测试和运行
数据库的运行和维护 : 系统的运行与数据库的日常维护。
数据库的发展阶段?
人工管理阶段>>文件系统阶段>>数据库系统阶段
DBA的职责是什么?
DBA负责全面管理和控制数据库系统的职责,具体有:
(1)决定数据库中要存放哪些信息;
(2)决定数据库的存储结构和存取策略;
(3)定义数据的安全性要求和完整性约束条件;
(4)监控数据库的使用和运行:转储数据、维护日志文件、故障恢复
(5)数据库的改进和重组重构:对运行情况进行记录、统计分析,以此来不断改进数据库设计。
数据字典的内容和作用
数据字典的内容包括数据项、数据结构、数据流、数据存储、处理过程五个部分。
数据字典的作用是描述数据库的数据,在需求分析阶段建立,是概念设计的基础,并在数据库设计过程中不断修改、充实、完善。
什么是存储过程?用什么来调用?
存储过程是一个预编译的SQL语句集合,优点是可以建立非常复杂的查询,只需创建一次,便可重复调用,且比执行单纯的SQL要快。
在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定的存储过程的名字来调用执行。
与函数的区别:
(1)函数只能返回一个值或表的对象。存储过程可以返回多个参数。
(2)函数可以在SQL语句中使用,可以在select中使用。但是存储过程不行。
(3)存储过程实现的功能较复杂,执行速度会更快。函数实现的功能针对性较强。
游标是什么?
系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
关系数据库中查询处理的步骤是什么?每一步进行简要概括
查询分析:对查询语句进行词法分析、语法分析;(检查是否正确)
查询检查:对合法的查询语句进行语义检查;(检查是否有效)
查询优化:选择一个高效执行的查询处理策略;
查询执行:依据优化得到的执行策略生成查询执行计划,并生成相应的查询执行计划代码;
三条启发式优化规则包括哪几点?
选择运算尽可能先做
投影操作尽可能先做
把笛卡尔积和附近一连串选择和投影操作合并起来做
数据库恢复的关键是什么?
答:关键是建立冗余数据;
数据库恢复的基本技术有哪些?
数据转储和登记日志文件
数据库故障的种类和相应的恢复策略是什么?
事务故障、介质故障、系统故障、计算机病毒
事务故障是指事务运行到终点前被终止,恢复由系统自动完成,利用日志文件进行撤销已修改的操作。
系统故障是指系统停止运作,恢复由重启后系统自动完成,利用日志文件撤销未完成的,重做已完成的。
介质故障是指磁盘的损坏,需要重做数据库,重做已完成的事务。
数据库的安全性是指什么?有哪些安全性技术?
数据库的安全性是指保护数据库以恶意破坏和非法存取。
安全性技术:用户标识和鉴别、多层存取控制、审计、数据加密、视图。
存取控制是指什么?主要包括哪两个部分?有哪两类方法?
存取控制是指确保只授权给有资格的用户访问数据库,且未被授权的用户无法接近数据。
两个部分:定义用户权限和合法权限的检查。
两种方法:
自主存取控制:同一用户对不同数据库有不同权限,不同用户对同一数据库的权限也不尽相同。
强制存取控制:每个数据库对象被标以一定的密级,用户也被标以一定级别的许可证,只有具有合法许可证的用户才可以进行存取
视图和表的区别
数据库中的数据都是存储在表中的,而视图只是一个或者多个表通过某些条件组合在一起的结果,一般来说,可以对数据表进行插入删除操作,而对视图只能进行select操作。
视图的作用
能够简化用户的操作;
使用户能以多种角度看待同一数据;
在一定程度上提供了数据的逻辑独立性;
能够对秘密数据提供安全保护;
利用可以更清晰的表达查询。
视图机制是如何对数据库实现安全性控制的?
可以对不同的用户定义不同的视图,也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来。
审计功能是如何对数据库实现安全性控制的?
答:审计功能是把用户对数据库的一系列操作自动记录到审计日志中,审计员可以利用审计日志监控数据库中的各种行为,找出导致数据库发生异常的事件。
关于冷备份和热备份的区别
冷备份是在系统已经关闭的情况之下对数据的存储,把数据放在了另一个位置之上。
热备份是在系统还在运行的情况之下进行的操作,一边运行一边备份,消耗空间较多。
在数据库中为什么要并发控制
数据库是共享资源,通常有多个事务在同时执行,如果对并发不加控制,就会存在数据读取和存取的错误,破坏数据的一致性。
什么是锁?
锁是最常用的并发控制机构,是防止其他事务访问指定资源,实现并发控制的一种手段
数据的独立性
数据的独立性是由DBMS的二级映像功能来保证的。数据的独立性包括数据的物理独立性和数据的逻辑独立性。
什么是数据库系统的三级模式?
模式(逻辑模式或概念模式)、外模式(子模式或用户模式)、内模式(存储模式或物理模式)
三级模式结构是什么?二级映射有什么优点?
外模式:描述了用户可见的局部数据和逻辑结构和特征
模式:描述了全体数据的逻辑结构和特征
内模式:描述了数据库的物理结构和存储方式
外模式/模式映射:当模式改变时,外模式可以保持不变,保证了数据的逻辑独立性;
模式/内模式:当内模式改变时,模式可以保持不变,保证了数据的物理独立性;
什么是数据库系统的二级映像与数据独立性?
外模式/模式(逻辑独立性)、模式/内模式(物理独立性)
物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。当数据的物理存储改变了,应用程序不用改变。
逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,当数据的逻辑结构改变时,用户程序也可以不变。
什么是数据的物理独立性?
答:当数据库的存储结构改变了,由数据库管理员对模式/内模式映像做响应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。
什么是数据的逻辑独立性?
答:数据的逻辑独立性是指用户的应用程序与数据库结构是相互独立的。数据的逻辑结构发生变化后,用户程序也可以不修改。但是,为了保证应用程序能够正确执行,需要修改外模式/概念模式之间的映像。
什么是数据模型的组成要素?
数据结构、数据操作、数据的完整性约束
什么是数据模型?
数据模型是对显示数据特征进行抽象的工具,用来描述和处理现实数据信息。
数据模型的三要素:数据结构、数据操作和数据完整性规则
1、数据结构用于描述系统的静态特征,包括数据的类型、内容、性质及数据之间的联系等;
2、数据操作用于描述系统的动态特征,包括数据的插入、修改、删除和查询等;
3、数据完整性规则是指对数据及数据之间的联系的约束和存储规则。
数据模型有哪几种?
关系模型,层次模型,网状模型、面向对象模型
什么是数据完整性规则?
是对数据库数据的约束条件,包括下面三种:
实体完整性:有主键,即每一标识一条记录、非空;
参照完整性:有外键,且外键的值范围受另一张数据表中某列取值范围的约束;
用户自定义完整性:定义的数据库约束条件,比如限制属性的取值类型及范围等;
完整性约束的目的?
强制数据完整性可确保数据库中的数据质量。
什么是数据库的完整性约束条件?
答:完整性约束条件的对象可以有列级、元组级、关系级三种粒度。
列的约束:取值类型、范围、精度、排序等的约束条件。
元组级约束:对记录中的各个字段间的联系约束。
关系级的约束:对若干记录间、关系集合上以及关系之间的联系的约束。
完整性约束条件是指数据库中的数据应满足的语义约束条件。一―般可以分为六类:
- 静态列级约束
- 静态元组约束
- 静态关系约束
- 动态列级约束
- 动态元组约束
- 动态关系约束
什么是断言?
断言是指更具有一般性的约束,断言创建后,任何涉及到断言中的关系的操作都会引发数据库对断言的检查,任何使断言为假的操作都会被拒绝执行。
触发器
是一个过程完整性约束,也是一段程序,该程序在特定的条件下被触发。
触发器是一个特殊的存储过程,存储过程是我们调用的时候发生,而触发器是在某个事件触发的时候,自动执行。根据SQL语句的不同,触发器可分为两类:DML(insert,update,delete)触发器和DLL(create,alter,drop)触发器。
触发器的主要作用表现在以下几个方面:
(1)增加安全性。
(2)利用触发器记录所进行的修改以及相关信息,跟踪用户对数据库的操作,实现审计。
(3)维护那些通过创建表时的声明约束不可能实现的复杂的完整性约束以及对数据库中特定事件进行监控与响应。
(4)实现复杂的非标准的数据库相关完整性规则、同步实时地复制表中的数据。
(5)触发器是自动的,它们在对表的数据做了任何修改之后就会被激活。例如,可以自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。以某企业财务管理为例,如果企业的资金链出现短缺,并且达到某种程度时,则发送警告信息。
主键和外键
主键就是一个代表这个表的唯一属性,有且只有一个,并且不能为空,外键是存在于此表中的,另一张表的主键。
事务是什么?
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。
事务执行的四个基本要素?
原子性,一致性,隔离性,持久性。
并发一致性问题
丢失数据: 和 两个事务都对一个数据进行修改, 先修改, 随后修改, 的修改覆盖了的修改。简记为 同时修改 。
读脏数据: 对一个数据做了修改, 读取这一个数据。若 执行 ROLLBACK 操作,则读取的结果和第一次的结果不一样。简记为读取失败的修改 。最简单的场景是修改完成后,紧接着查询检验结果。
不可重复读: 读取一个数据, 对该数据做了修改。如果再次读取这个数据,此时读取的结果和第一次读取的结果不同。简记为读时修改 ,重复读取的结果不一样。
幻影读: 读取某个范围的数据, 在这个范围内插入新的数据, 再次读取这个范围的数据,此时读取的结果和和第一次读取的结果不同。简记为 读时插入 ,重复读取的结果不一样
解决方案
在并发环境下,事务的隔离性很难保证,因此会出现很多并发一致性问题。产生并发不一致性问
题的主要原因是破坏了事务的隔离性。解决方法是通过 并发控制 来保证隔离性。并发控制可以通
过 封锁 来实现,但是封锁操作需要用户自己控制,相当复杂。数据库管理系统提供了事务的 隔
离级别 ,让用户以一种更轻松的方式处理并发一致性问题
封锁协议
三级封锁协议
一级封锁协议 :事务 T 要修改数据 A 时必须加 X 锁,直到 T 结束才释放锁。 防止同时修改 ,可解决 丢失修改 问题,因不能同时有两个事务对同一个数据进行修改,那么事务的修改就不会被覆盖。
二级封锁协议 :在一级的基础上,要求读取数据 A 时必须加 S 锁,读取完马上释放 S 锁。 防止修
改时读取 ,可解决 丢失修改 和 读脏数据 问题,因为一个事务在对数据 A 进行修改,根据 1 级封锁
协议,会加 X 锁,那么就不能再加 S 锁了,也就是不会读入数据。
三级封锁协议 :在二级的基础上,要求读取数据 A 时必须加 S 锁,直到事务结束了才能释放 S
锁。 防止读取时修改 ,可解决 丢失修改 和 读脏数据 问题,还进一步防止了 不可重复读 的问题,因
为读 A 时,其它事务不能对 A 加 X 锁,从而避免了在读的期间数据发生改变。
两段锁协议
两段锁协议是指每个事务的执行可以分为两个阶段:生长阶段 (加锁阶段) 和衰退阶段 (解锁阶段)。
两段封锁法可以这样来实现:
事务开始后就处于加锁阶段,一直到执行 ROLLBACK 和 COMMIT 之前都是加锁阶段。
ROLLBACK 和 COMMIT 使事务进入解锁阶段,即在 ROLLBACK 和 COMMIT 模块中 DBMS 释放所有封锁
范式的定义?
改造关系模式,通过分解关系模型来消除其中不合适的数据依赖,以决绝插入异常,删除异常,冗余数据。
1NF:每个分量是不可分割的数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
2NF:在1NF基础上,非主属性完全依赖于码(消除非主属性对码的部分函数依赖)
3NF:在2NF基础上,非主属性既不部分依赖于码也不传递依赖于码 (消除主属性对码的部分依赖和传递函数依赖)
BCNF:在3NF基础上,所有属性都不部分依赖于码也不传递依赖于码, 所有决定属性集都包含于码。
4NF:在BCNF基础上,消除非平凡依赖且函数依赖的多值依赖
5NF:在4NF基础上,消除连接依赖
ER 图
实体关系图 (Entity-Relationship,E-R),有三个组成部分:实体、属性、联系。用来进行关系型
数据库系统的概念设计。
实体 :用矩形表示,矩形框内写明实体名.
属性 :用椭圆形表示,并用无向边将其与相应的实体连接起来。
联系 :用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向>边旁标上联系的类型(1...1,1...* 或 *...*)就是指存在的三种关系 (一对一、一对多或多对多)
ER图是什么模型?
ER图是用来描述现实世界的概念模型,包括实体、属性、联系,它是数据库设计的第二个阶段(概念结构设计阶段)的产物。
数据库设计有需求分析阶段、概念结构设计阶段、逻辑结构设计阶段、物理结构设计阶段、数据库实施阶段、数据库运行和维护阶段
合并ER图主要包括哪几部分冲突?
属性冲突:不同实体对同一属性的定义不同;
命名冲突:同名异义,异名同义;
结构冲突:同一实体在不同的局部ER图中有不同抽象;
索引建的多的好还是少的好?
恰当把握,多的话占空间,少的话查询不足,速度达不到。
数据库查询语句怎样写效率更高?
- 建立索引
- 优化SQL语句
- 条件精确,使用索引
- 最好使用内部过程
- 只取需要的数据,不冗余
索引的作用?和它的优点缺点是什么?
当表的数据量比较大时,查询操作比较耗时,建立索引可以加快查询速度。
优点:加速查询速度;缺点:索引需要占一定的存储空间,且基本表更新时需要维护索引表。
什么是聚集索引或非聚集索引?
聚集:物理存储顺序与逻辑顺序相同。
非聚集:物理存储顺序与索引顺序不一致。
索引的类型?
聚集索引、非聚集索引、唯一索引、视图索引、全文索引、XML索引
索引和键的区别?
索引是存储在数据库中的一个物理结构,是实际存在的,相当于一本书的目录。
键是一个逻辑概念,不是数据库的物理部分。键分为主键和外键。
等值连接和自然连接的区别
自然连接是等值连接的特殊情况;
等值连接要求连接的属性值相等,属性名可以不同;
自然连接的两个关系的属性必须相同。
等值连接不要求去掉重复属性列,自然连接时需要除掉重复的属性列。
数据库中inner join,outer join,cross join的联系
inner join 相当于就是两个集合的交集
outer join里包含 right join和left join
分别代表:产生右边表的完全集,而左边表不存在的数据用null表示,存在的数据则显示和产生左边表的完全集,而右边表中不存在的数据用null表示,存在的数据则显示。
cross join:相当于就是对两个表格进行笛卡尔积。
外连接是什么?
外连接是指两个表在进行操作时,不仅返回符合连接和查询条件的元组,还返回不符合条件的一些元组;
左外连接是指返回左表中仅符合连接条件不符合查询条件的元组;
右外连接是指返回右表中仅符合连接条件不符合查询条件的元组;
全外连接是左外连接和右外连接去掉重复项的元组集并集。
关于drop,delete,turncate的操作
drop是直接删除这张表;
delete是删除表中部分或者全部的数据,并且可以通过commit提交或者rollback回滚;turncate是直接删除此表中的数据,而不删除表;
什么样的并发调度是正确的调度?
答:多个事务的并发执行的结果与按某一次序串行的执行它们时的结果相同,我们说这样的并发调度是可串行化的调度,如果一个调度是可串行化的,那么认为它是正确的调度。
试叙述事务的4个性质,并结实每一个性质由 DBMS的哪个子系统实现﹖每一个性质对DBS有什么益处?
答:
事务的原子性是指一个事务对B的所以操作,是一个不可分割的工作单位。原子性是由DBMS的事务管理子系统实现的。事务的原子性保证了DBS的完整性。
事务的一致性是指数据不会因事务的执行而遭受破坏。事务的一-致性是由DBMS的完整性子系统实现的。事务的一致性保证数据库的完整性。
事务的隔离性是指事务的并发执行与这些事务单独执行时结果一-样。事务的隔离性是由DBMS的并发控制子系统实现的。隔离性使并发执行的事务不必关心其他事务,如同在单用户环境下执行一样。
事务的持久性,是指事务对DB的更新应永久地反映在B中。持久性是由DBMS 的恢复管理子系统实现的。持久性能保证DB具有可恢复性。
日志文件中记载了哪些内容?
答:日志文件中记载了事务开始标记、事务结束标记以及事务对DB的插入、删除和修改的每一次操作前后的值。
为什么要设立日志文件?
答:设立日志文件的目的,是为了记录对数库中数据的每--次更新操作,从而DBMS 可以根据日志文件进行事务故障的恢复和系统故障的恢复,并可结合后授副本进去介质故障的恢复。
如果数据库日志满了会出现什么情况?
通过日志文件来记录数据库事务可以最大限度地保证数据的一致性与安全性,但一旦数据库中日志满了,就只能执行查询等读操作,不能执行更改、备份等操作。其原因是任何写操作都要记录日志,也就是说基本上处干不能使用的状态。
系统故障的原因?
答:系统故障造成数据库不一致状态的原因有两个,
- 是未完成事务对数据库的更新可能已写入数据库,
- 是已提交事务对数据库的更新可能还留在缓冲区没来得及写入数据库。
因此恢复操作就是要撤消故障发生时未完成的事务,重做已完成的事务。
数据库中为什么要有恢复子系统?它的功能是什么?
答:因为计算机系统中硬件的故障、软件的错误、操作员的失误以及恶意的破坏是不可避免的,这些故障轻则造成运行事务非正常中断,影响数据库中数据的正确性,重则破坏数据库,使数据库中全部或部分数据丢失。
功能:是把数据库从错误状态恢复到某一已知的正确状态(亦称为一致状态或完整状态),这就是数据库的恢复。
数据库转储的意义是什么?常用的有几种方法?
答:数据转储是数据库恢复中采用的基本技术,所谓转储即DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据文本称为后备副本或后援副本。当数据库遭到破坏后可以将后备副本重新载入,将数据库恢复到转储时的状态。
转储可分为静态转储和动态转储。
静态转储是在系统中无运行事务时进行的转储操作。
动态转储是指转储期间允许对数据库进行存取或修改。即转储和用户事务可以并发执行。
转储还可分为海量转储和增量转储两种方式。
什么是数据库镜像?它有什么用途?
答:根据:DBA 的要求,自动把整个数据库或其中的关键数据复制到另-个磁盘上。每当主数据库更新时,DBMS自动把更新后的数据恢复过去,即 DBMS自动保证镜像数据与主数据的一致性。
用途:
1)一旦出现介质故障,可由镜像磁盘继续提供使用,同时 DBMKS自动利用镜像磁盘数据进行数据库恢复,不需要关闭系统和重装数据库副本。
2)在没有出现故障时,数据库镜像还可以并发操作。提高数据库的可用性。
细节题!!!
概念模型的作用?
(1)概念模型,也称信息模型,是按用户的观点来对数据和信息建模,主要用于数据库设计。
(2)概念模型实际上是现实世界到机器世界的一个中间层次。概念模型用于信息世界的建模,是现实世界到信息世界的一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户进行交流的语言
实体是什么?属性是什么?联系是什么?
实体:客观存在并可相互区别的事务称为实体
属性:实体具有的某一特性
联系:在现实世界事物与事物之间以及事物内部之间都是有联系的,这些联系反映到信息世界为实体内部的联系和实体之间的联系。实体内部的联系就是属性之间的联系,而实体之间的联系可以分为三类:一对一,一对多,多对多。
码:唯一标识实体属性集称为码
域:属性的取值范围称为该属性的域
实体型:具有相同属性的实体必然具有共同的特征和性质
实体集:同型实体的集合
数据库库系统的结构?
从数据库管理员的角度看:三级模式结构
从数据库的最终用户来看分为:单用户结构、主从式结构、分布式结构和客户/服务器结构。
数据控制(数据保护)包括哪些?
安全性控制、完整性控制、并发控制、恢复
并发控制是指当多个用户并发的对数据库进行操作时,对他们加以控制、协调,以保证并发控制操作正确执行,并保持数据库的一致性。
恢复是指当发生各种类型的故障,是数据库处于不一致状态,将数据库恢复到一致性的状态。
数据库中的完整性是指数据的完整性和相容性
数据库的安全性是指保护数据库,防止不合法的使用所造成的数据泄露和破坏。(主要通过存取控制来保证数据库的安全性)
安全性措施的防范对象是非法用户和非法操作
完整性措施的防范对象是不合语义的数据
封锁粒度?
封锁对象的大小称为封锁粒度
封锁协议的目的?
- 保证数据的一致性的封锁协议-----三级封锁协议
- 保证并行调度可串行性的封锁协议----两段锁协议
活锁?避免活锁的方法?
活锁:如果事务T1封锁了数据R,事务T2又请求封锁R,于是T2等待;T3也请求封锁R,当T1释放了R上的封锁之后系统首先批准了T3的请求,T2仍然等待;然后T4又请求封锁R,当T3释放了R上的封锁之后系统又批准了T4的请求…T2有可能永远等待。
方法:先来先服务
死锁?预防死锁的方法?
死锁:如果事务T1封锁了数据R1,T2封锁了数据R2,然后T1又请求封锁R2,因T2已封锁了R1,T2也只能等待T1释放R1上的锁。这样就出现了T1在等待T2,而T2又在等待T1的局面,T1和T2两个事务永远不能结束,形成死锁。
方法:1、一次封锁法2、顺序封锁法
什么是弱实体?
弱实体(weak entity)是一种数据库系统术语。其定义为一个实体对于另一个实体(一般为强实体,也可以是依赖于其他强实体的弱实体)具有很强的依赖联系,而且该实体主键的一部分或全部从其强实体(或者对应的弱实体依赖的强实体)中获得,则称该实体为弱实体。
概念设计的三种方法
自顶向下法:首先认定用户关心的实体和实体之间的联系,建立一个初步的概念模型框架,让后对这个全局的E-R图进行细化。
自底向上法;又叫属性综合法,将需求分析说明书中的数据元素作为基本输入,通过对这些元素分析,把他们综合成相应的实体和联系,得到局部E-R图,然后再组合成全局E-R图。
逐步扩张法:先定义最重要的核心概念E-R模型,然后向外扩充。
在数据库中当发生死锁后怎么解决死锁
1)资源剥夺法。将一些死锁进程暂时挂起来,并且抢占它的资源,并将这些资源分配给其他的死锁进程 ,要注意的是应该防止被挂起的进程长时间得不到资源而处于资源匮乏的状态
2)撤销进程法。强制撤销部分甚至全部死锁并剥夺这些进程的资源。撤销的原则可以按照进程优先级和撤销进程的代价高低进行。
3)进程回退法,让一或多个进程回退到足以回避死锁的地步,进程回退时自愿释放资源而非被剥夺。这个方法要求系统保持进程的历史信息,并设置还原点。