搜索
您的当前位置:首页数据库常见问题文库

数据库常见问题文库

来源:爱问旅游网
数据库常见问题文库.txt45想洗澡吗?不要到外面等待下雨;想成功吗?不要空等机遇的到来。摘下的一瓣花能美丽多久?一时的放纵又能快乐多久?有志者要为一生的目标孜孜以求。少年自有少年狂,藐昆仑,笑吕梁;磨剑数年,今将试锋芒。自命不凡不可取,妄自菲薄更不宜。67. 什么是软件生存期:

软件生存期是软件工程的一个重要概念。是指从软件的规划、研制、实现、投入运行后的维护,直到它被新的软件所取代而停止使用的整个期间。通常分为六个阶段: (1) 规划阶段 (2) 需求分析阶段 (3) 设计阶段 (4) 程序编制阶段 (5) 调试阶段 (6) 运行维护阶段 -------------

68. 数据库系统的生存期: 一般分为七个阶段,即: (1) 规划阶段

(2) 需求分析阶段 1)信息要求 2)处理要求 3)安全性和完整性要求 (3) 概念设计阶段

(4) 逻辑设计阶段 两部分:数据库逻辑设计和应用程序设计

(5) 物理设计阶段 两部分:物理数据库结构的选择和逻辑设计中程序模块说明的精确化 (6) 实现阶段

(7) 运行维护阶段 -------------

69. 数据库设计过程的输入有哪些内容: (1) 总体信息需求 (2) 处理需求 (3) DBMS的特征

(4) 硬件和OS特征 -------------

70. 数据库设计过程的输出有哪两部分:

一部分是完整的数据库结构,其中包括逻辑结构与物理结构。 另一部分是基于数据库结构和处理要求的应用程序的设计原则 -------------

71. 常见的数据库设计方法有哪几种: (1) 视图模式化及视图汇总设计方法 (2) 关系模式的设计方法 (3) 新奥尔良设计方法

(4) 基于E-R模型的数据库设计方法 (5) 基于3NF的设计方法

(6) 基于抽象语法规范的设计方法 (7) 计算机辅助数据库设计方法

-------------

72. 实用的数据库设计方法至少应包括哪些内容: (1) 设计过程

(2) 设计技术 (3) 评价准则 (4) 信息需求 (5) 描述机制 -------------

73. 一种设计方法学需要有三种基本类型的描述机制: (1) 实现设计过程的最终结果将用DBMS的DDL表示。

(2) 信息输入的描述。

(3) 在信息输入和DDL描述之间的其它中间步骤的结果的描述。 -------------

74. 数据库设计中的规划阶段的主要任务:

是进行建立数据库的必要性及可行性分析,确定数据库系统在组织中和信息系统中的地位,以及各个数据库之间的联系。 -------------

75. 需求分析阶段的任务:

需求分析阶段应该对系统的整个应用情况作全面的、详细的调查,确定企业组织的目标,收集支持系统总的设计目标的基础数据和对这些数据的要求,确定用户的需求,并把这些要求写成用户和数据库设计者都能接受的文档。 -------------

76. 需求分析的步骤:

大致可分为三步来完成,即需求信息的收集、分析整理和评审。 -------------

77. 数据字典由哪几部分组成: (1) 数据项 (2) 数据结构 (3) 数据流 (4) 数据存储 (5) 加工过程 ------------- 78. 数据抽象:

抽象是对实际的人、物、事或概念的人为处理,它抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述,这些概念组成了某种模型。 抽象有两种形式,系统状态抽象(抽象对象)和系统转换抽象(抽象运算)。 -------------

79. 对象的两种形式:

(1) 聚集:的数学意义就是笛卡尔积的概念。通过聚集,形成对象之间的一个联系对象。 (2) 概括:是从一类其它对象形成一个对象。对于一类对象{O1,O2,„„,On}可以概括成对象O,那么Oi称为O的其中一个。 -------------

80. 依赖联系:

在现实世界中,常常有某些实体对于另一些实体具有很强的依赖关系,即一个实体的存在必须以另一个实体的存在为前提。我们通常把前者称为弱实体。在ER图中,用双线框表示弱实体,用指向弱实体的箭头表明依赖联系。 -------------

81. 子类、超类:

某个实体类型中所有实体同时也是另一实体类型中的实体。此时,我们称前一实体类型是后一实体类型的子类,后一实体类型称为超类。在ER图中,带有子类的实体类型(超类)以两端双线的矩形框表示,并用加圈的弧线与其子类相连,子类本身仍用普通矩形框表示。 子类具有一个很重要的性质:继承性。它可继承超类上定义的全部属性,其本身还可包含其它另外的属性------------- 82. ER模型的操作:

(1) 实体类型的分裂:垂直分割、水平分割 (2) 实体类型合并:分裂的逆过程。 (3) 联系类型的分裂 (4) 联系类型的合并 -------------

83. 采用ER方法的数据库概念设计分成哪三步:

(1) 设计局部ER模式:1)确定局部结构范围 2)实体定义 3)联系定义 4)属性分配 (2) 设计全局ER模式:1)确定公共实体类型 2)局部ER模式的合并 3)消除冲突。 (3) 全局ER模式的优化:1)实体类型的合并 2)冗余属性的消除 3)冗余联系的消除 -------------

84. 冲突分为哪三种:

属性冲突,包括属性域的冲突、属性取值单位冲突。 结构冲突,包括:

(1) 同一对象在不同应用中的不同抽象。

(2) 同一实体在不同局部ER图中属性组成不同。

(3) 实体之间的联系在不同的局部ER图中呈现不同的类型。

命名冲突,包括属性名,实体名,联系名之间的冲突:同名异义、异名同义 -------------

85. ER模型向关系模型的转换:

ER模型中的主要成分是实体类型和联系类型。

对实体类型,将每个实体类型转换成一个关系模式,实体的属性即为关系模式的属性,实体标识符即为关系模式的键。

对联系类型,就视1:1、1:N、M:N三种不同的情况做不同处理。

(1) 对1:1可在两个实体类型转换成的两个关系模式中任意一个关系模式的属性中加入另一个关系模式的键和联系类型的属性。

(2) 对1:N,则在N端实体类型转换成的关系模式中加入1端实体类型转换成的关系模式的键和联系类型的属性。

(3) 对M:N,则将联系类型也转换成关系模式,其属性为两端实体类型的键盘加上联系类型的属性,而键为两端实体键的组合。 -------------

86. 什么是物理设计:

对一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程,称为数据库的物理设计。物理结构,主要指数据库在物理设备上的存储结构和存取方法。 -------------

87. 物理设计的步骤:

物理设计可分五步完成,前三步涉及到物理数据库结构的设计,后两步涉及约束和具体的程序设计。

(1) 存储记录结构设计 (2) 确定数据存储安排 (3) 访问方法的设计 (4) 完整性和安全性 (5) 程序设计

-------------

88. 在数据库系统生存期中,生存期的总开销可分为几项: 规划开销、设计开销、实现与测试开销、操作开销、维护开销。 -------------

89. 用户使用和计算机资源的操作开销是: (1) 查询响应时间 (2) 更新事务的开销 (3) 报告生成的开销 (4) 改组频率和开销 (5) 主存储空间 (6) 辅助存储空间

-------------

90. 数据库实现阶段的主要工作: (1) 建立实际数据库结构 (2) 试运行 (3) 装入数据

-------------

91. 数据库的重新组织设计:

对数据库的概念模式、逻辑结构或物理结构的改变称为重新组织,其中改变概念模式或逻辑结构又称为重新构造,改变物理结构则称为重新格式化。 -------------

92. 运行维护阶段的主要工作:

(1) 维护数据库的安全性和完整性控制及系统的转储和恢复。 (2) 性能的监督、分析与改进。 (3) 增加新功能。

(4) 发现错误,修改错误。

(1) DB:即数据库(Database),是统一管理的相关数据的集合。 DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。

(2) DBMS:即数据库管理系统(Database Management System),是位于用户与操作系统之间的一层数据管理软件, 为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。 DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面向对象型DBMS。

(3) DBS:即数据库系统(Database System),是实现有组织地、动态地存储大量关联数据, 方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。 (4) 1:1联系:如果实体集E1中的每个实体最多只能和实体集E2中的一个实体有联系,反之亦然, 那么实体集E1对E2的联系称为“一对一联系”,记为“1:1”。 (5) 1:N联系:如果实体集E1中每个实体与实体集E2中任意个(零个或多个)实体有联系, 而E2中每个实体至多和E1中的一个实体有联系,那么E1对E2的联系是“一对多联系”,记

为“1:N”。

(6) M:N联系:如果实体集E1中每个实体与实体集E2中任意个(零个或多个)实体有联系, 反之亦然,那么E1对E2的联系是“多对多联系”,记为“M:N”。

(7) 数据模型:模型是对现实世界的抽象。在数据库技术中,表示实体类型及实体类型间联系的模型称为“数据模型”。 它可分为两种类型:概念数据模型和结构数据模型。 (6) 概念数据模型:是独门于计算机系统的模型,完全不涉及信息在系统中的表示, 只是用来描述某个特定组织所关心的信息结构。

(9) 结构数据模型:是直接面向数据库的逻辑结构,是现实世界的第二层抽象。 这类模型涉及到计算机系统和数据库管理系统,所以称为“结构数据模型”。 结构数据模型应包含:数据结构、数据操作、数据完整性约束三部分。它主要有:层次、网状、关系三种模型。 (10) 层次模型:用树型结构表示实体类型及实体间联系的数据模型。 (11) 网状模型:用有向图结构表示实体类型及实体间联系的数据模型。

(12) 关系模型:是目前最流行的数据库模型。其主要特征是用二维表格结构表达实体集,用外鍵表示实体间联系。 关系模型是由若干个关系模式组成的集合。

(13) 概念模式:是数据库中全部数据的整体逻辑结构的描述。它由若干个概念记录类型组成。 概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作、数据的完整性、安全性等要求。

(14) 外模式:是用户与数据库系统的接口,是用户用到的那部分数据的描述。

(15) 内模式:是数据库在物理存储方面的描述,定义所有的内部记录类型、索引和文件的组成方式, 以及数据控制方面的细节。

(16) 模式/内模式映象:这个映象存在于概念级和内部级之间,用于定义概念模式和内模式间的对应性, 即概念记录和内部记录间的对应性。此映象一般在内模式中描述。

(17) 外模式/模式映象:这人映象存在于外部级和概念级之间,用于定义外模式和概念模式间的对应性, 即外部记录和内部记录间的对应性。此映象都是在外模式中描述。

(18) 数据独立性:在数据库技术中,数据独立性是指应用程序和数据之间相互独立,不受影响。 数据独立性分成物理数据独立性和逻辑数据独立性两级。 (19) 物理数据独立性:如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化, 那么模式/内模式映象也要进行相应的修改,使概念模式尽可能保持不变。也就是对模式的修改尽量不影响概念模式。 (20) 逻辑数据独立性:如果数据库的概念模式要进行修改(如增加记录类型或增加数据项), 那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。 也就是对概念模式的修改尽量不影响外模式和应用程序。

(21) 宿主语言:在数据库技术中,编写应用程序的语言仍然是一些高级程序设计语言, 这些语言称为宿主语言(host language),简称主语言。

(22) DDL:数据定义语言(Data Definition Language),用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映象,定义数据的完整性、安全控制等约束。 (23) DML:数据操纵语言(Data Manipulation Language),由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。 DML分成交互型DML和嵌入型DML两类。依据语言的级别,DML又可分成过程性DML和非过程性DML两种。

(24) 交互型DML:如果DML自成系统,可在终端上直接对数据库进行操作,这种DML称为交互型DML。

(25) 嵌入型DML:如果DML嵌入在主语言中使用,此时主语言是经过扩充能处理DML语句的语言,这种DML称为嵌入型DML。

(26) 过程性DML:用户编程时,不仅需要指出“做什么”(需要什么样的数据),还需要指出

“怎么做”(怎么获得数据)。层状、网状的DML属于过程性语言。

(27) 非过程性DML:用户编程时,只需要指出“做什么”,不需要指出“怎么做”。 Notice:以上关于DML的各个概念单独出现时,首先要解释DML的含义。

(28) DD:数据字典(Data Dictionary),数据库系统中存放三级结构定义的数据库称为数据字典。 对数据库的操作都要通过访问DD才能实现。 (29) DD系统:管理DD的实用程序称为“DD系统”。 1.2试解释DB,DBMS和DBS三个概念:

DB:数据库(Database),DB是统一管理的相关数据的集合。DB能为各种用户共享,具有最小冗余度,数据间联系密切,而又有较高的数据独立性。

DBMS:数据库管理系统(Database Management System),DBMS是位于用户与操作系统之间的一层数据管理软件,为用户或应用程序提供访问DB的方法,包括DB的建立、查询、更新及各种数据控制。DBMS总是基于某种数据模型,可以分为层次型、网状型、关系型、面向对象型DBMS。

DBS:数据库系统(Database System),DBS是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机软件、硬件和数据资源组成的系统,即采用了数据库技术的计算机系统。

1.8什么是数据独立?在数据库中有哪2级独立性?

数据独立性是指:应用程序和数据之间相互独立,不受影响。分为物理独立性和逻辑独立性。 (1) 物理数据独立性:如果数据库的内模式要进行修改,即数据库的存储设备和存储方法有所变化,那么模式/内模式映象也要进行相应的修改,使概念模式尽可能保持不变。也就是对内模式的修改尽量不影响概念模式。

(2) 逻辑数据独立性:如果数据库的概念模式要进行修改,如增加记录类型或增加数据项,那么外模式/模式映象也要进行相应的修改,使外模式尽可能保持不变。也就是概念模式的修改尽量不影响外模式和应用

1.11 试述ER模型、层次模型、网状模型、关系模型和面向对象模型的主要特点。 答:ER模型的主要特点:(1)接近于人的思维,容易理解;(2)与计算机无关,用户容易接受。

层次模型的特点:记录之间的联系通过指针实现,查询效率较高。

网状模型的特点:记录之间联系通过指针实现,M:N联系也容易实现(每个M:N联系可拆成两个1:N联系),查询效率较高。

关系模型的特点:用关鍵码而不是用指针导航数据,表格简单,用户易懂,编程时并不涉及存储结构、访问技术等细节。

1.17 试述DBMS的主要功能和主要模式。(P20-21)

答:

1:接受应用程序的数据请求和处理请求

2:将用户的数据请求(高级指令)转换成复杂的机器代码(低层指令) 3:实现对数据库的操作

4:从对数据库的操作中接受查询结果 5:对查询结果进行处理(格式转换)

6:将处理结果返回给用户

(1) 数据库的定义功能:DBMS提供数据定义语言(DDL)定义数据库的三级结构及其相互之间的映象、完整性、安全控制等约束。

(2) 数据库的操纵功能:DBMS提供数据操纵语言(DML)实现对数据库中数据的操作。 (3) 数据库的保护功能:DBMS对数据库的保护主要通过数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库的安全性控制等四个方面实现。

(4) 数据库的存储管理:DBMS的存储管理子系统提供了数据库中数据和应用程序的一个界面,其职责是把各种DML语句转换成低层的文件系统命令,起到数据的存储、检索和更新的作用。

(5) 数据库的维护功能:DBMS中实现数据库维护功能的实用程序主要有数据装载程序、备份程序、文件重组织程序、性能监控程序。

(6) 数据字典(DD):数据库系统中存放三级结构定义的数据库称为数据字典,对数据库的操作都要通过访问DD才能实现。

1.18 试叙DBMS对数据库的维护功能。(P21)

答:DBMS中主要有四个实用程序提供给数据库管理员运行数据库系统时使用,起着数据库维护的功能:

(1)数据装载程序(loading) (2)备份程序(backup) (3)文件重组织程序 (4)性能监控程序

1.19从模块结构看,DBMS由哪些部分组成?

答:从模块结构看,DBMS由两大部分组成:查询处理器和存储管理器

(1)查询处理器有四个主要成分:DDL编译器,DML编译器,嵌入型DML的预编译器,查询运行核心程序

(2)存储管理器有四个主要成分:授权和完整性管理器,事务管理器,文件管理器,缓冲区管理器

1.22 什么样的人是DBA?DBA应具有什么素质?DBA的职责是什么?

答:DBA是控制数据整体结构的人,负责DBS的正常运行。DBA可以是一个人,在大型系统中也可以是由几个人组成的小组。

DBA应具有下列素质:

(1)熟悉企业全部数据的性质和用途; (2)对用户的需求有充分的了解; (3)对系统的性能非常熟悉。

DBA的主要职责有五点:

(1)概念模式定义 (2)内模式定义

(3)根据要求修改数据库的概念模式和内模式 (4)对数据库访问的授权

(5)完整性约束的说明

1.2 文件系统阶段的数据管理有些什么缺陷?试举例说明。 文件系统有三个缺陷:

(1)数据冗余性(redundancy)。由于文件之间缺乏联系,造成每个应用程序都有对应的文件, 有可能同样的数据在多个文件中重复存储。

(2)数据不一致性(inconsistency)。这往往是由数据冗余造成的,在进行更新操作时,稍不谨慎, 就可能使同样的数据在不同的文件中不一样。 (3)数据联系弱(poor data relationship)。这是由文件之间相互独立,缺乏联系造成的。

1.13DB的三级模式结构描述了什么问题?试详细解释!

数据库的三级模式结构是对数据的三个抽象级别,它把数据的具体组织留给DBMS去做,用户只要抽象地处理数据,而不必关心数据在计算机中的表示和存储,

这样就减轻了用户使用系统的负担,三级结构之间往往差别很大,为了实现这三个抽象级别的联系和转换,DBMS在三级结构之间提供两个层次的映象:外模式/模式映象

模式/内模式映象

定义1.10 概念模式(conceptual schema)是数据库中全部数据的整体逻辑结构的描述。 定义1.11 外模式(external schema)是用户与数据库系统的接口,是用户用到的那部分数据的描述。

定义1.12 内模式(internal schema)是数据库在物理存储方面的描述,定义所有内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。

定义1.13 模式/内模式映象存在于概念级和内部级之间,用于定义概念模式和内模式之间的对应性。

定义1.14 外模式/模式映象存在于外部级和概念级之间,用于定义外模式和概念模式之间的对应性。

(1)关系模型:用二维表格结构表示实体集,外键表示实体间联系的数据模型称为关系模型。 (2)关系模式:关系模式实际上就是记录类型。它的定义包括:模式名,属性名,值域名以及模式的主键。 关系模式不涉及到物理存储方面的描述,仅仅是对数据特性的描述。 (3)关系实例:元组的集合称为关系和实例,一个关系即一张二维表格。 (4)属性:实体的一个特征。在关系模型中,字段称为属性。

(5)域:在关系中,每一个属性都有一个取值范围,称为属性的值域,简称域。 (6)元组:在关系中,记录称为元组。元组对应表中的一行;表示一个实体。 (7)超键:在关系中能唯一标识元组的属性集称为关系模式的超键。

(8)候选键:不含有多余属性的超键称为候选键。 (9)主键:用户选作元组标识的一个候选键为主键。(单独出现,要先解释“候选键”) (10)外键:某个关系的主键相应的属性在另一关系中出现,此时该主键在就是另一关系的外键, 如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#在关系SC中也出现,此时S#就是关系SC的外键。

(11)实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。 如果出现空值,那么主键值就起不了唯一标识元组的作用。

(12)参照完整性规则:这条规则要求“不引用不存在的实体”。 其形式定义如下:如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么R2的关系中, K的取值只允许有两种可能,或者为空值,或者等于R1关系中某个主键值。 这条规则在使用时有三点应注意: 1)外键和相应的主键可以不同名,只要定义在相同值域上即可。 2)R1和R2也可以是同一个关系模式,表示了属性之间的联系。 3)外键值是否允许空应视具体问题而定。 (13)过程性语言:在编程时必须给出获得结果的操作步骤,即“干什么”和“怎么干”。如Pascal和C语言等。

(14)非过程性语言:编程时只须指出需要什么信息,不必给出具体的操作步骤。 各种关系查询语言均属于非过程性语言。

(15)无限关系:当一个关系中存在无穷多个元组时,此关系为无限关系。 如元组表达式{t|┐R(t)}表示所有不在关系R中的元组的集合,这是一个无限关系。

(16)无穷验证:在验证公式时需对无穷多个元组进行验证就是无穷验证。 如验证公式(u)(P(u))的真假时需对所有的元组u进行验证,这是一个无穷验证的问题。 2.2在关系模型中,对关系做了哪些规范性限制?

关系是一个属性数目相同的元组的集合。

在关系模型中,对关系作了下列规范性限制:

(1)关系中每一个属性值都是不可分解的;

(2)关系中不允许出现重复元组(即不允许出现相同的元组);

(3)由于关系是一个集合,因此不考虑元组间的顺序,即没有行序;

(4)元组中的属性在理论上也是无序的,但使用时按习惯考虑列的顺序。

2.3 为什么关系中的元组没有先后顺序?

因为关系是一个元组的集合,而元组在集合中的顺序无关紧要。因此不考虑元组间的顺序,即没有行序。

2.4 为什么关系中不允许有重复元组?

因为关系是一个元组的集合,而集合中的元素不允许重复出现,因此在关系模型中对关系作了限制, 关系中的元组不能重复,可以用键来标识唯一的元组。

2.5 笛卡尔积、等值联接、自然联接三者之间有什么区别?

笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。

等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组;

自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。 当两个关系没有公共属性时,自然连接就转化我笛卡尔积2.6 设有关系R和S(如下:)

32 对于教学数据库的三个基本表

学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE)

课程 C(C#,CNAME,TEACHER)

试用SQL的查询语句表达下列查询:

(1)检索LIU老师所授课程的课程号和课程名。 SELECT C#,CNAME FROM C

WHERE TEACHER=‘LIU’

(2)检索年龄大于23岁的男学生的学号和姓名。 SELECT S#,SNAME

FROM S

WHERE (AGE>23) AND (SEX=‘M’)

(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。 SELECT

SNAME

FROM S

WHERE SEX=‘F’ AND S# IN (SELECT S#

FROM SC

WHERE C# IN (SELECT C#

FROM C

WHERE TEACHER=‘LIU’)

(4)检索WANG同学不学的课程的课程号。 SELECT C# FROM C

WHERE C# NOT IN (SELECT C# FROM SC WHERE S# IN (SELECT S#

FROM S

WHERE SNAME='WANG'))

(5)检索至少选修两门课程的学生学号。 SELECT S# FROM SC

HAVING COUNT(C#)>=2

(6)检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME

FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE NOT EXISTS (SELECT * FROM SC

WHERE SC.S#=S.S# AND SC.C#=C.C#))

(7)检索选修课程包含LIU老师所授课的学生学号。 SELECT S# FROM S

WHERE S# IN (SELECT S# FROM SC WHERE

S.S#=SC.S# AND C# IN

(SELECT C# FROM C

WHERE TEACHER='LIU'))

(请讨论一下,本题是否可如此:SELECT DISTINGCT ----------------

1)检索LIU老师所授课程的课程号、课程名。 πC#,CNAME(σTEACHER='LIU'(C))

(2)检索年龄大于23岁的男学生的学号与姓名。 πS#,SNAME(σAGE>'23'∧SEX='男'(S))

(3)检索学号为S3学生所学课程的课程名与任课教师名。 πCNAME,TEACHER(σS#='S3'(SC*C))

(4)检索至少选修LIU老师所授课程中一门课程的女学生的姓名。 πSNAME(σSEX='女'∧TEACHER='LIU'(S*SC*C)) (5)检索WANG同学不学的课程号。

πC#(C)-πC#(σSNAME='WANG'(S*SC)) (6)检索至少选修两门课程的学生学号。

πS#(σ1=4∧2<>5(SC×SC))

(7)检索全部学生都选修的课程的课程号与课程名。 πC#,CNAME((SC*C)÷πS#(S))

(8)检索选修课程包含LIU老师所授课程的学生学号。 πS#(SC÷πC#(σTEACHER='LIU'(C))

(1)SQL模式:SQL模式是表和授权的静态定义。一个SQL模式定义为基本表的集合。 一个由模式名和模式拥有者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、索引等)的定义。

(2)SQL数据库:SQL(Structured Query Language),即‘结构式查询语言’,采用英语单词表示和结构式的语法规则。 一个SQL数据库是表的汇集,它用一个或多个SQL模式定义。 (3)基本表:在SQL中,把传统的关系模型中的关系模式称为基本表(Base Table)。 基本表是实际存储在数据库中的表,对应一个关系。

(4)存储文件:在SQL中,把传统的关系模型中的存储模式称为存储文件(Stored File)。 每个存储文件与外部存储器上一个物理文件对应。

(5)视图:在SQL中,把传统的关系模型中的子模式称为视图(View),视图是从若干基本表和(或)其他视图构造出来的表。

(6)行:在SQL中,把传统的关系模型中的元组称为行(row)。

(7)列:在SQL中,把传统的关系模型中的属性称为列(coloumn)。 (8)实表:基本表被称为“实表”,它是实际存放在数据库中的表。

(9)虚表:视图被称为“虚表”,创建一个视图时,只把视图的定义存储在数据词典中,而不存储视图所对应的数据。

(10)相关子查询:在嵌套查询中出现的符合以下特征的子查询:子查询中查询条件依赖于外层查询中的某个值, 所以子查询的处理不只一次,要反复求值,以供外层查询使用。 (11)联接查询:查询时先对表进行笛卡尔积操作,然后再做等值联接、选择、投影等操作。 联接查询的效率比嵌套查询低。

(12)交互式SQL:在终端交互方式下使用的SQL语言称为交互式SQL。

(13)嵌入式SQL:嵌入在高级语言的程序中使用的SQL语言称为嵌入式SQL。

(14)共享变量:SQL和宿主语言的接口。共享变量有宿主语言程序定义,再用SQL的DECLARE语句说明, SQL语句就可引用这些变量传递数据库信息。 (15)游标:游标是与某一查询结果相联系的符号名,用于把集合操作转换成单记录处理方式。 (16)卷游标:为了克服游标在推进时不能返回的不便,SQL2提供了卷游标技术。 卷游标在推进时不但能沿查询结果中元组顺序从头到尾一行行推进,也能一行行返回。 34. SQL的组成分成几部分:

SQL主要分成四部分:

(1) 数据定义。(SQL DDL)用于定义SQL模式、基本表、视图和索引的创建和撤消操作。 (2) 数据操纵。(SQL DML)数据操纵分成数据查询和数据更新两类。数据更新又分成插入、删除、和修改三种操作。

(3) 数据控制。包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。 (4) 嵌入式SQL的使用规定。涉及到SQL语句嵌入在宿主语言程序中使用的规则。 ****************

35. SQL模式的撤消有哪两种方式:

CASCADE(连锁式)方式:执行DROP语句时,把SQL模式及其下属的基本表、视图、索引等所有元素全部撤消。

RESTRICT(约束式)方式:执行DROP语句时,只有当SQL模式中没有任何下属元素时,才能

撤消SQL模式,否则拒绝执行DROP语句。

****************

36. SQL提供的基本数据类型有哪些?每种举两个例子: (1) 数值型:INTEGER长整数、SMALLINT短整数

(2) 字符串型:CHAR(N)长度为N的定长字符串、VARCHAR(N)具有最大长度为N的变长字符串。

(3) 位串型:BIT(N)长度为N的二进制位串、BIT VARYING(N)最大长度为N的变长二进制位串

(4) 时间型:DATE日期、TIME时间

SQL2允许用户使用“CREATE DOMAIN”语句定义新的域。

37. 完整性约束主要有哪三种子句:

完整性约束主要有三种子句:主键子句(PRIMARY KEY),检查子句(CHECK)和外键子句(FOREIGN KEY)

38. 什么是视图,它与表的区别是什么:

在SQL中,外模式一级数据结构的基本单位是视图,视图是从若干基本表和(或)其他视图构造出来的表。我们创建一个视图时,只是把其视图的定义存放在数据字典中,而不存储视图对应的数据,因此,视图被称为“虚表”,这是它与表的主要区别。

40. SQL语言有哪两种使用方式:

一种是在终端交互方式下使用,称为交互式SQL; 另一种是嵌入在高级语言的程序中使用,称为嵌入式SQL,而这些高级语言可以是C、PASCAL、COBOL等,称为宿主语言。

41. 嵌入式SQL的实现有哪两种处理方式:

一种是扩充宿主语言的编译程序,使之能处理SQL语句;

另一种是采用预处理方式。目前多数系统采用后一种。

43. 用游标机制协调SQL的集合处理方式所用的SQL语句有哪些: 与游标有关的SQL语句有下列四个: (1) 游标定义语句(DECLARE) (2) 游标打开语句(OPEN) (3) 游标推进语句(FETCH) (4) 游标关闭语句(CLOSE)

****************

3.2 对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE)

课程 C(C#,CNAME,TEACHER)

试用SQL的查询语句表达下列查询:

(1)检索LIU老师所授课程的课程号和课程名。 SELECT C#,CNAME FROM C

WHERE TEACHER=‘LIU’

(2)检索年龄大于23岁的男学生的学号和姓名。 SELECT S#,SNAME FROM S

WHERE (AGE>23) AND (SEX=‘M’)

(3)检索至少选修LIU老师所授课程中一门课程的女学生姓名。 SELECT SNAME FROM S

WHERE SEX=‘F’ AND S# IN (SELECT S# FROM SC

WHERE C# IN (SELECT C#

FROM C

WHERE TEACHER=‘LIU’)

NOTICE:有多种写法,比如联接查询写法: SELECT SNAME

FROM S,SC,C

WHERE SEX=‘F’ AND SC.S#=S.S# AND SC.C#=C.C# AND TEACHER='LIU'

但上一种写法更好一些。

(4)检索WANG同学不学的课程的课程号。 SELECT C# FROM C

WHERE C# NOT IN (SELECT C# FROM SC

WHERE S# IN (SELECT S# FROM S

WHERE SNAME='WANG'))

(5)检索至少选修两门课程的学生学号。

SELECT DISTINCT X.SNO

FROM SC X,SC Y

WHERE X.SNO=Y.SNO AND X.CNO<>Y.CNO

Notice:对表SC进行自连接,X,Y是SC的两个别名。

(6)检索全部学生都选修的课程的课程号与课程名。 SELECT C#,CNAME FROM C

WHERE NOT EXISTS (SELECT * FROM S

WHERE S# NOT IN (SELECT * FROM SC

WHERE SC.C#=C.C#))

要从语义上分解:(1)选择课程的课程号与课程名,不存在不选这门课的同学。 其中,“不选这门课的同学”可以表示为:

SELECT *

FROM S

WHERE S# NOT IN

(SELECT *

FROM SC

WHERE SC.C#=C.C#)

或者 SELECT *

FROM S

WHERE NOT EXISTS

(SELECT *

FROM SC

WHERE S.S#=C.S# AND

SC.C#=C.C# )

(7)检索选修课程包含LIU老师所授课的学生学号。 SELECT DISTINCT S# FROM SC

WHERE C# IN (SELECT C# FROM C

WHERE TEACHER='LIU')) *************

3.12 试用SQL更新语句表达对教学数据库中三个基本表S、SC、C的各个更新操作: (1)往基本表S中插入一个学生元组(‘S9’,‘WU’,18)。 INSERT INTO S(S#,SNAME,AGE) valueS('59','WU',18)

(2)在基本表S中检索每一门课程成绩都大于等于80分的学生学号、姓名和性别, 并把检索到的值送往另一个已存在的基本表STUDENT(S#,SANME,SEX)。 INSERT INTO STUDENT(S#,SNAME,SEX) SELECT S#,SNAME,SEX FROM S WHERE NOT EXISTS (SELECT * FROM SC WHERE GRADE<80 AND S.S#=SC.S#)

(3)在基本表SC中删除尚无成绩的选课元组。 DELETE FROM SC WHERE GRADE IS NULL

(4)把WANG同学的学习选课和成绩全部删去。 DELETE FROM SC WHERE S# IN (SELECT S# FROM S

WHERE SNAME='WANG')

(5)把选修MATHS课不及格的成绩全改为空值。 UPDATE SC SET GRADE=NULL

WHERE GRADE<60 AND C# IN (SELECT C#

FROM C

WHERE CNAME='MATHS')

(6)把低于总平均成绩的女同学成绩提高5%。 UPDATE SC

SET GRADE=GRADE*1.05

WHERE GRADE<(SELECT AVG(GRADE) FROM SC) AND S# IN (SELECT S# FROM S WHERE SEX='F')

(7)在基本表SC中修改C4课程的成绩,若成绩小于等于75分时提高5%, 若成绩大于75分时提高4%(用两个UPDATE语句实现)。 UPDATE SC

SET GRADE=GRADE*1.05

WHERE C#='C4' AND GRADE<=75 UPDATE SC

SET GRADE=GRADE*1.04 WHERE C#='C4' AND GRADE>75

**************

例3.8 对于教学数据库的三个基本表 学生 S(S#,SNAME,AGE,SEX) 学习 SC(S#,C#,GRADE) 课程 C(C#,CNAME,TEACHER)

下面用SELECT查询语句表达每个查询 (1)检索学习课程编号为C2的学生号与成绩。 SELECT S#,GRADE

FROM SC

WHERE C# = ‘C2’;

(2)检索学习课程编号为C2的学生号与姓名。 SELECT S.S#,SNAME FROM S,SC

WHERE S.S# =SC.S# AND C# =‘C2’;

(3)检索选修课程名为MATHS的学生学号与姓名。 SELECT S.S#,SNAME FROM S,SC,C

WHERE S.S# =SC.S# AND SC.C# =C.C# AND CNAME =‘MATHS’;

(4)检索选修课程号为C2或C4的学生学号。 SELECT S# FROM SC

WHERE C# =‘C2’ OR C# =‘C4’;

(5)检索至少选修课程号为C2和C4的学生学号。 SELECT X.S#,SNAME

FROM SC AS X,SC AS Y

WHERE X.S# =Y.S# AND X.C# =‘C2’ AND Y.C# =‘C4’;

(6)检索不学C2课程的学生姓名与年龄。 SELECT SNAME,AGE FROM S

WHERE S# NOT IN(SELECT S# FROM SC

WHERE C#=‘C2’);

(7)检索学习全部课程的学生姓名。 SELECT SNAME FROM S

WHERE NOT EXISTS (SELECT *

FROM C

WHERE NOT EXISTS (SELECT * FROM SC

WHERE SC.C#=S.S# AND SC.C#=C.C#));

(8)检索所学课程包含学生S3所学课程的学号。 SELECT DISTINCT S# FROM SC AS X

WHERE NOT EXISTS (SELECT *

FROM SC AS Y

WHERE Y.S#=‘S3’ AND NOT EXISTS (SELECT *

FROM SC AS Z

WHERE Z.S#=X.S# AND Z.C#=Y.C#));

(1) 函数依赖:FD(function dependency),设有关系模式R(U),X,Y是U的子集, r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y], 则称X函数决定Y,或Y函数依赖于X,记为X→Y。X→Y为模式R的一个函数依赖。

(2) 函数依赖的逻辑蕴涵:设F是关系模式R的一个函数依赖集,X,Y是R的属性子集, 如果从F中的函数依赖能够推出X→Y,则称F逻辑蕴涵X→Y,记为F|=X→Y。

(3) 部分函数依赖:即局部依赖,对于一个函数依赖W→A,如果存在XW(X包含于W)有X→A成立, 那么称W→A是局部依赖,否则称W→A为完全依赖。 (4) 完全函数依赖:见上。

(5) 传递依赖:在关系模式中,如果Y→X,X→A,且XY(X不决定Y), AX(A不属于X),那么称Y→A是传递依赖。

(6) 函数依赖集F的闭包F+: 被逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包(closure),记为F+。

(7) 1NF:第一范式。如果关系模式R的所有属性的值域中每一个值都是不可再分解的值, 则称R是属于第一范式模式。如果某个数据库模式都是第一范式的,则称该数据库存模式属于第一范式的数据库模式。 第一范式的模式要求属性值不可再分裂成更小部分,即属性项不能

是属性组合和组属性组成。

(8) 2NF:第二范式。如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键, 则称是第二范式模式;如果某个数据库模式中每个关系模式都是第二范式的,则称该数据库模式属于第二范式的数据库模式。 (注:如果A是关系模式R的候选键的一个属性,则称A是R的主属性,否则称A是R的非主属性。)

(9) 3NF:第三范式。如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键, 则称R是第三范式的模式。如果某个数据库模式中的每个关系模式都是第三范式,则称为3NF的数据库模式。 (10) BCNF:BC范式。如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。

(11) 4NF:第四范式。设R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡多值依赖X→→Y时, X必是R的超键,那么称R是第四范式的模式。

(12) 推理规则的正确性和完备性:正确性是指,如果X→Y是从推理规则推出的,那么X→Y在F+中。 完备性是指,不能从F使用推理规则导出的函数依赖不在F+中。

(13) 依赖集的覆盖和等价:关系模式R(U)上的两个函数依赖集F和G,如果满足F+=G+,则称F和G是等价的。 如果F和G等价,则可称F覆盖G或G覆盖F。

(14) 最小依赖集:如果函数集合F满足以下三个条件:(1)F中每个函数依赖的右部都是单属性; (2)F中的任一函数依赖X→A,其F-{X→A}与F是不等价的;(3)F中的任一函数依赖X→A,Z为X的子集,(F-{X→A})∪{Z→A}与F不等价。则称F为最小函数依赖集合,记为Fmin。

(15) 无损联接:设R是一关系模式,分解成关系模式ρ={R1,R2...,Rk},F是R上的一个函数依赖集。 如果对R中满足F的每一个关系r都有r=πR1(r)πR2(r)...πRk(r)则称这个分解相对于F是\"无损联接分解\"。

(16) 保持依赖集:所谓保持依赖就是指关系模式的函数依赖集在分解后仍在数据库中保持不变, 即关系模式R到ρ={R1,R2,...,Rk}的分解,使函数依赖集F被F这些Ri上的投影蕴涵。 (17) 多值依赖:设R(U)是属性集U上的一个关系模式,X,Y,Z是U的子集,并且Z=U-X-Y, 用x,y,z分别代表属性集X,Y,Z的值,只要r是R的关系,r中存在元组(x,y1,z1)和(x,y2,z2)时, 就也存在元组(x,y1,z2)和(x,y2,z1),那么称多值依赖(Multivalued Dependency MVD) X→→Y在关系模式R中成立。

45. 什么是关系数据库:

关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界。一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。关系实质上是一张二维表。

46. 一个关系模型有哪两个方面内容:

一个关系模型包括外延和内涵两个方面的内容。

外延就是通常所说的关系,或实例,或当前值。它与时间有关,随着时间的推移在不断变化。(由于元组的插入、删除、修改引起的)

内涵是与时间独立的,包括关系、属性、及域的一些定义和说明,还有各种数据完整性约束。

47. 数据完整性约束分为哪两类:

数据完整性约束分为静态约束和动态约束。

静态约束:包括各种数据之间的联系(数据依赖),主键的设计和关系值的各种限制等等。这一类约束是如何定义关系的有效数据问题。

动态约束:主要定义如插入、删除、和修改等各种操作的影响。

48. 关系数据库设计理论主要包括哪些内容:

关系数据库设计理论主要包括三个方面的内容:数据依赖、范式、模式设计方法。其中数据依赖起着核心的作用。

49. 数据库使用过程中存在的问题是什么: 数据冗余、更新异常、插入异常、删除异常。

58. 第一范式(1NF):

如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R是属于第一范式模式。

59. 第二范式(2NF):

如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的候选键,则称R是第二范式模式。

60. 第三范式(3NF):

如果关系模式R是第一范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。

61. BCNF:

如果关系模式R是第一范式,且每个属性都不传递依赖于R的候选键,那么称R是BCNF的模式。从BCNF的定义可明显地得出如下结论: (1) 所有非主属性对键是完全函数依赖。

(2) 所有主属性对不包含它的键是完全函数依赖。 (3) 没有属性完全函数依赖于非键的任何属性组。

如果模式R是BCNF,则它必定是第三范式,反之,则不一定。

62. 模式设计方法的原则:

关系模式R相对于函数依赖集F分解成数据库模式ρ={R1,R2,„„Rk},一般应具有下面三个特性:

(1) ρ中每个关系模式Ri是3NF或BCNF (2) 保持无损联结

(3) 保持函数依赖集

(4) ρ中模式个数最少和属性总数最少。

63. 一个好的模式设计方法应符合哪三条原则: 表达性,分离性,最小冗余性。

表达性涉及到两个数据库模式的等价性问题,即数据等价和依赖等价,分别用无损联接和保持函数依赖性来衡量。

分离性是指属性间的“独立联系”应该用不同的关系模式表达。

最小冗余性要求在分解后的数据库能表达原来数据库的所有信息这个前提下实现。 关系模式设计方法基本上可以分为分解与合成两大类。

64. 多值依赖MVD:

设R(U)是属性集U上的一个关系模式,X,Y是U的子集,若对R(U)的任一关系r,对于X的一个给定的值存在着Y的一组值与其对应,同时Y的这组值又不以任何方式与U-X-Y中的属性相关,那么称Y多值依赖于X,记为X→→Y。

4.8试举出反例说明下面规则不成立。 1. {A->B}|={B->A}

2. {AB->C,A->C}|={B->C} 3. {AB->C}|={A->C} ------ r A B 1 1 2 1 -------

r2 A B C 2 1 2 2 2 2 3 2 3 --------

r3 A B C

1 2 3 1 3 4 ***********

4.24设有关系模式R(职工编号,日期,日营业额,部门名,部门经理),该关系模式统计商店里每个职工的日营业额,以及职工所在的部门和经理信息。如果规定:每个职工每天只有一个营业额;每个职工只在一 个部门工作;每个部门只有一个经理。 试回答下列问题:

(1)根据上述规定,写出模式R的基本FD和关键码; (2)说明R不是2NF的理由,并把R分解成2NF模式集; (3)进而分解成3NF模式集。

1、基本的FD有3个:

(职工编号,日期)→ 日营业额 职工编号 → 部门名 部门名 → 部门经理

R的候选码为(职工编号,日期)。

2、∵R中存在非主属性“部门名”对码(职工编号,日期)的部分依赖,所以R不是2NF模式。

R应分解成R1(职工编号,日期,日营业额) R2(职工编号,部门名,部门经理) 这里,R1和R2都是2NF模式。 3、R1已是3NF模式。

∵在R2中存在两个FD:职工编号 → 部门名,

部门名 → 部门经理

因此,R2中存在非主属性“部门经理”对码“职工编号”的传递依赖,R2不是3NF模式。 将R2分解成R2l(职工编号,部门名) R22(部门名,部门经理)

这样ρ={ R1, R21, R22 }是一个3NF模式集。7.1系统目录

1什么是系统目录:System Catalog是DBMS的核心,其本身是一个micro db。

2系统目录的重要性 功能:存储DBMS管理的各DB的定义或描述,主要是三级结构及两级映象的定义。

这类信息称为元数据 3RDBMS系统目录的存储内容

关系名,属性名,属性域(数据类型)

各种约束,主键,辅助键,外键,空值/非空值 视图的外部级描述,存储结构和索引的内部级描述 安全性和授权规则 数据完整性规则

注意:这些数据都以表格的形式存在 ----------

DDL编译程序 处理和检查三级模式两级映象

DML命令的外部级到概念级映象 将查询中的视图由外部级导到概念级映象 授权和安全程序 处理和检查权限

DML优化程序 根据物理结构优化查询执行方案

DML编译程序 将查询涉及的概念模式转换成内模式,产生访问计划 DML分析校验程序 检查查询涉及的关系名属性名等 ----------

事务(transaction)是构成单一逻辑工作单元的操作集合

性质1原子性(Atomicity)2一致性(Consistency) 3隔离性(Isolation) 4持久性(Durability) ----------

事务提交和事务撤销

事务完成则事务提交(COMMIT),否则事务撤销(ROLLBACK) BEGIN TRANSACTION标志事务开始执行

BEGIN TRANSACTION和COMMIT或ROLLBACK一起保证了事务的四个性质 -----------

数据库的恢复

系统必须具有检测故障并把数据从错误状态中恢复到某一正确状态的功能,这就是数据库的恢复。 --------- 存储器类型

易失性存储器:内存、cache存储器 非易失性存储器:磁盘和磁带

稳定存储器:存储在稳定存储器中的信息是决不会丢失的。 ---------

稳定存储器的实现

数据备份:转到脱机保存的介质,硬件一级有磁盘镜像,双机容错等。软件一级有数据复制。 数据银行 :传输到远程的计算机存储系统。 ---------- 块和块的操作

块、物理块和缓冲块

块的操作 input(A):把物理块A的内容传送到内存的缓冲块中。 Output(B):把缓冲块B的内容传送到磁盘中恰当的物理块中 ---------

恢复的基本原则和实现方法

基本原则 :“冗余”,即数据库重复存储 具体实现方法

一、平时做好两件事:转储和建立日志

1周期地(比如一天一次)对整个数据库进行拷贝,转储到另一个磁盘或磁带一类存储介质中。

2建立日志数据库。记录事务的开始、结束及数据每一次插入、删除和修改前后的值,并写到“日志”库中。

二、一旦发生数据库故障,分两种情况进行处理

1如果数据库已被破坏,则装入last数据库备份,再利用日志库将这两个数据库状态之间的所有更新重新做一遍。

2如果数据库未被破坏,但某些数据不可靠,则撤消所有不可靠的修改,把数据库恢复到正确的状态。 ----------

故障类型和恢复方法

一、事务故障 1可以预期的事务故障,如存款余额透支等。2非预期事务故障,如运算溢出、数据错误、死锁等 二、系统故障:

三、介质故障(硬故障) 恢复

1、重装转储的后备副本到新的磁盘,使数据库恢复到转储时的一致状态。

2、在日志中找出转储以后所有已提交的事务。

3、对这些已提交的事务进行REDO处理,将数据库恢复到故障前某一时刻的一致状态。 ----------

一、检查点方法的恢复算法

1根据日志文件建立事务重做队列和事务撤销队列

2对重做队列中的事务进行REDO处理,对撤消队列中的事务进行UNDO处理 二、检查点方法

在检查点时刻才真正把数据写到数据库并且在日志文件写入一条检查点记录(以便恢复时使用)

三、运行记录优先原则引入: 写修改到数据库

写一个表示这个修改的运行记录到日志中 四、运行记录优先原则

至少要等相应运行记录已经写入运行日志后,才能允许事务往数据库中写记录

直至事务的所有运行记录都已经写入到运行日志后,才能允许事务完成COMMIT处理。 ------------

并发操作带来的问题:丢失更新 读脏数据 错误求和 并发操作带来的问题 不可重复读问题 封锁的粒度:封锁对象的大小称为封锁的粒度(Granularity) 封锁的对象

1逻辑单元:属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库 2物理单元 :页(数据页或索引页)、块

封锁粒度与系统并发度和并发控制开销密切相关。粒度越大,系统中能被封锁的对象就越少,并发度就越小,但同时系统的开销也就越小;相反,粒度越小,并发度越高,系统开销越大 权衡因素:系统开销与并发度 三、封锁带来的问题1---(活锁) 1解决方法:先来先服务 2封锁带来的问题2---饿死 ----------

完整性子系统和完整性规则

一、数据库的完整性:正确性、有效性和相容性

二、完整性子系统的主要功能:

1监督事务的执行,并测试是否违反完整性规则

2若有违反现象,则采取恰当的操作,譬如拒绝操作、报告违反情况、改正错误等方法来处理

三、完整性规则:

1什么时候使用规则进行检查(称为规则的“触发条件”) 2要检查什么样的错误(称为“约束条件”或“谓词”) 3如果查出错误,应该怎么办(称为“ELSE子句”,即违反时要做的动作) ---------

SQL中的完整性约束1---域约束和断言 域约束

用“CREATE DOMAIN”语句定义新的域,并且还可出现CHECK子句 断言

如果完整性约束牵涉面较广,与多个关系有关,或者与聚合操作有关,那么SQL2提供“断言”(Assertions)机制让用户书写完整性约束

CHECK ASSERTION <断言名> CHECK(<条件>) DROP ASSERTION <断言名>

定义一个新的域COLOR,可用下列语句实现:

CREATE DOMAIN COLOR CHAR(6) DEFAULT ˊ???ˊ CONSTRAINT V_COLORS

CHECK(VALUE IN (ˊRedˊ,ˊYellowˊ, ˊBlueˊ,ˊGreenˊ,ˊ???ˊ)); 每位教师开设的课程不能超过10门。 CREATE ASSERTION ASSE1 CHECK (10 >= ALL(SELECT COUNT(C#) FROM C

GROUP BY TNAME));

SQL中的完整性约束2---基本表的约束

1.候选键的定义

UNIQUE(〈列名序列〉)或 PRIMARY KEY(〈列名序列〉) 2.外键的定义 FOREIGN KEY(〈列名序列〉)REFERENCES <参照表> [(<列名序列>)][ ON DELETE <参照动作> ][ ON UPDATE <参照动作> ] 3.“检查约束”的定义 CHECK(〈条件表达式〉) 关于外键约束完整性的补充 删除参照表中元组时的考虑 NO ACTION CASCADE方式 RESTRICT方式 SET NULL方式 SET DEFAULT方式

修改参照表中主键值时的考虑、 NO ACTION CASCADE方式 RESTRICT方式 SET NULL方式 SET DEFAULT方式 -----------

叙述数据库中死锁产生的原因和解决死锁的方法。 答;死锁产生的原因:

封锁可以引起死锁。比如事务T1封锁了数据A,事务T2封锁了数据B。T1又申请封锁数据B,但因B被T2封锁,所以T1只能等待。T2又申请封锁数据A,但A己被T1封锁,所以也处于等待状态。这样,TI和T2处于相互等待状态而均不能结束,这就形成了死锁。解决死锁的常用方法有如下三种:(1)要求每个事务一次就要将它所需要的数据全部加锁。 (2)预先规定一个封锁顺序,所有的事务都要按这个顺序实行封锁。 (3)允许死锁发生,当死锁发生时,系统就选择一个处理死锁代价小的事务,将其撤消,释放此事务持有的所有的锁,使其他事务能继续运行下去。 ------------

数据库安全性级别

数据库的安全性:是指保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏。 (非法用户故意造成的破坏)

安全性级别:从低到高的五个级别

环境级:计算机系统的机房和设备应加以保护,防止有人进行物理破坏。 职员级:工作人员应清正廉洁,正确授予用户访问数据库的权限。

OS级:应防止未经授权的用户从OS处着手访问数据库。

网络级:由于大多数DBS都允许用户通过网络进行远程访问,因此网络软件内部的安全性是很重要的。

DBS级:DBS的职责是检查用户的身份是否合法及使用数据库的权限是否正确。 7.7.2权限

修改DB模式的权限:

索引(Index)权限:允许用户创建和删除索引。

资源(Resourse)权限:允许用户创建新的关系。

修改(Alteration)权限:允许用户在关系结构中加入或删除属性。 撤消(Drop)权限:允许用户撤消关系。 使用DB中数据的权限:

(1)读权限:允许用户读数据,但不能改数据。 ⑵ 插入权限:允许用户插入新数据,但不能改数据。 ⑶ 修改权限:允许用户改数据,但不能删除数据。 ⑷ 删除权限

权限的授予和回收

一个用户拥有权限的充分必要条件是在权限图中从根结点到该用户结点存在一条路经 如果权限图中出现回路,回收时应把不能从根结点引出的路径上结点的权限也回收

7.7.3SQL中的安全性机制 视图和授权子系统

SQL2中的用户权限及其操作

用户权限:SELECT INSERT DELETE UPDATE REFERENCES USAGE

授权语句

GRANT <权限表> ON <数据库元素>TO <用户名表> [WITH GRANT OPTION] 回收语句

REVOKE <权限表> ON <数据库元素> FROM <用户名表> [RESTRICT|CASCADE] ---------------

7.7.4常用的安全性措施 1强制存取控制

用户i只能查看比它级别低或同级的数据; 用户i只能修改和它同级的数据 2统计数据库的安全性

一个查询查到的记录个数至少是n; 两个查询查到的记录的“交”数目至多是m 3数据加密法 普通加密法

明键加密法

4自然环境的安全性 ------------

108. 用户的权限:

用户(或应用程序)使用数据库的方式称为权限。访问数据库的权限有如下几种: (1) 读权限 (2) 插入权限 (3) 修改权限 (4) 删除权限。 修改数据库模式的权限: (1) 索引权限

(2) 资源权限 (3) 修改权限

(4) 撤消权限6.19 设教学数据库的模式如下:

S(S#,SNAME,AGE,SEX)

SC(S#,C#,GRADE)

C(C#,CNAME,TEACHER)

1、在关系S中插入学生年龄值应在16~25岁之间 CREAT TABLE S(

S# CHAR(4),

SNAME char (10) NOT NULL , AGE SMALLINT , primary key(S#)

CHECK (AGE>=16 and AGE<=25))

2、在关系SC中插入元组时,其S#值和C#值必须分别在S和C中出现。 CREAT TABLE SC( S# CHAR(4), C# CHAR(4),

GRADE SMALLINT,

FOREIGN key(S#) REFERENCE S(S#)

FOREIGN key(C#) REFERENCE C(C#)

3、在关系SC中修改GRADE值时,必须仍在0~100之间。 CREAT TABLE SC( S# CHAR(4), C# CHAR(4),

GRADE SMALLINT,

FOREIGN key(S#) REFERENCE S(S#) FOREIGN key(C#) REFERENCE C(C#) CHECK (GRADE>=0 and AGE<=100))

4、在删除关系C中一个元组时,首先要把关系SC中具有同样C#的元组全部删去。 CREAT TABLE SC( S# CHAR(4), C# CHAR(4),

GRADE SMALLINT,

FOREIGN key(S#) REFERENCE S(S#), FOREIGN key(C#) REFERENCE C(C#))

5、在关系S中把某个S#值修改为新值时,必须同时把关系SC中那些同样的S#值也修改为新值。

CREAT TABLE SC( S# CHAR(4), C# CHAR(4),

GRADE SMALLINT,

FOREIGN key(S#) REFERENCE S(S#) ON UPDATE CASCADE , FOREIGN key(C#) REFERENCE C(C#))

因篇幅问题不能全部显示,请点此查看更多更全内容

Top