【数据库原理】重点总结

1. 试述数据模型的概念、数据模型的作用和数据模型的三个要素。

2. 定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图。

3. 试述关系模型的三个组成部分。

4. 试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

5. 数据库安全性和计算机系统的安全性有什么关系?

6. 试述实现数据库安全性控制的常用方法和技术。

7. 什么是数据库中的自主存取控制方法和强制存取控制方法?

8. SQL 语言中提供了哪些数据控制(自主存取控制)的语句?举例说明它们的使用方法。

9. 什么是数据库的完整性?

10. 数据库的完整性概念与数据库的安全性概念有什么区别和联系?

11. DBMS 的完整性控制机制应具有哪些功能?

12. 理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All - key )、1 NF 、ZNF 、3NF 、BCNF 、多值依赖、4NF。

13. 建立一个关于系、学生、班级、学会等诸信息的关系数据库。

14. 在一个订货系统的数据库中,存有顾客、货物和订货单的信息。

15. 试述数据库设计过程及各个阶段上的设计描述。

16. 什么是数据库的完整性约束条件?可分为哪几类?

17. 下面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明之。

18. 试述数据库概念结构设计的重要性和设计步骤。

19. 什么是数据库的逻辑结构设计?试述其设计步骤。

20. 试述查询优化的一般准则。

21. 试述查询优化的一般步骤。

23. 数据库恢复的基本技术有哪些?

24. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?

1. 试述数据模型的概念、数据模型的作用和数据模型的三个要素。

【答】数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。数据模型是严格定义的概念的集合,这些概念精确描述了系统的静态特性、动态特性和完整性约束条件。

因此数据模型通常由数据结构、数据操作和完整性约束三部分组成。

(l)数据结构:是所研究的对象类型的集合,是对系统静态特性的描述。

(2)数据操作:是指对数据库中各种对象(型)的实例(值)允许进行的操作的集合,包括操作及有关的操作规则,是对系统动态特性的描述。

(3)数据的约束条件:是一组完整性规则的集合。完整性规则是给定的数据模型中数据及其联系所具有的制约和依存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效、相容。

根据模型应用的不同目的,可以将模型分成两类或者说两个层次:一类是概念模型,是按用户的观点来对数据和信息建模,用于信息世界的建模,强调语义表达能力,概念简单清晰;另一类是数据模型,是按计算机系统的观点对数据建模,用于机器世界,人们可以用它定义、操纵数据库中的数据,一般需要有严格的形式化定义和一组严格定义了语法和语义的语言,并有一些规定和限制,便于在机器上实现。

2. 定义并解释概念模型中以下术语:实体,实体型,实体集,属性,码,实体联系图。

实体型:具有相同属性的实体具有相同的特征和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。 实体集:同型实体的集合称为实体集。 属性:实体所具有的某一特性,一个实体可由若干个属性来刻画。 码:惟一标识实体的属性集称为码。

实体联系图( E 一 R 图):提供了表示实体型、属性和联系的表示方法:@@@实体型:用矩形表示,矩形框内写明实体名;@@@属性:用椭圆形表示,并用无向边将其与相应的实体连接起来;@@@联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1 , 1 : n 或 m : n )。

3. 试述关系模型的三个组成部分。

【答】关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

(1)数据结构:它只包含单一的数据结构——关系;从用户角度看,关系模型中数据的逻辑结构是一张扁平的二维表;现实世界的实体以及实体间的各种联系均用单一的结构类型即关系来表示。

(2)关系操作集合:关系模型中常用的关系操作包括查询(Query)操作和插入(Insert)、删除(Delete)、修改(Update)操作两大部分。关系的查询表达能力很强,是关系操作中最主要的部分。查询操作可以分为:选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。其中,选择、投影、并、差、笛卡尔积是五种基本操作。其他操作是可以用基本操作来定义和导出的。

(3)关系完整性约束:关系模型的完整性规则是对关系的某种约束条件,分为三类完整性约束:实体完整体,参照完整性和用户定义的完整性。其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作是关系的两个不变性,应该由系统关系自动支持。用户定义的完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

4. 试述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

【答】实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。即属性F本身不是主属性,则可以取空值,否则不能取空值。

5. 数据库安全性和计算机系统的安全性有什么关系?

【答】安全性问题不是数据库系统所独有的,所有计算机系统都有这个问题。只是在数据库系统中大量数据集中存放,而且为许多最终用户直接共享,从而使安全性问题更为突出。

系统安全保护措施是否有效是数据库系统的主要指标之一。

数据库的安全性和计算机系统的安全性,包括操作系统、网络系统的安全性是紧密联系、相互支持的。

6. 试述实现数据库安全性控制的常用方法和技术。

【答】实现数据库安全性控制的常用方法和技术有:

(1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。

(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。例如CZ 级中的自主存取控制( DAC ) , Bl 级中的强制存取控制(MAC )。

(3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。

(4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。

(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。

7. 什么是数据库中的自主存取控制方法和强制存取控制方法?

【答】自主存取控制方法:定义各个用户对不同数据对象的存取权限。当用户对数据库访问时首先检查用户的存取权限。防止不合法用户对数据库的存取。

强制存取控制方法:每一个数据对象被(强制地)标以一定的密级,每一个用户也被(强制地)授予某一个级别的许可证。系统规定只有具有某一许可证级别的用户才能存取某一个密级的数据对象。

8. SQL 语言中提供了哪些数据控制(自主存取控制)的语句?举例说明它们的使用方法。

【答】SQL 中的自主存取控制是通过GRANT语句和REVOKE语句来实现的。如: GRANT SELECT,INSERT ON Student

TO xxx

WITH GRANT OPTION ;

就将Student 表的SELECT 和INSERT 权限授予了用户xxx,后面的“WITH GRANT OPTION ”子句表示用户王平同时也获得了“授权”的权限,即可以把得到的权限继续授予其他用户。

REVOKE INSERT ON Student FROM xxx CASCADE ;

就将Student 表的INSERT 权限从用户xxx处收回,选项CASCADE 表示,如果用户xxx将Student 的INSERT 权限又转授给了其他用户,那么这些权限也将从其他用户处收回。

9. 什么是数据库的完整性?

【答】数据库的完整性是指数据的正确性和相容性。完整性检查和控制的防范对象是不合语义、不正确的数据,防止他们进入数据库。

10. 数据库的完整性概念与数据库的安全性概念有什么区别和联系?

【答】数据的完整性和安全性是两个不同的概念,但是有一定的联系。完整性是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出( Garba : e In Garba : e out )所造成的无效操作和错误结果。安全性是保护数据库防止恶意的破坏和非法的存取。也就是说,完整性措施的防范对象是不合语义的数据;安全性措施的防范对象是非法用户和非法操作。

11. DBMS 的完整性控制机制应具有哪些功能?

【答】DBMS 的完整性控制机制应具有三个方面的功能:(1)定义功能,即提供定义完整性约束条件的机制;(2)检查功能,即检查用户发出的操作请求是否违背了完整性约束条件;(3)违约反应:如果发现用户的操作请求使数据违背了完整性约束条件,则采取一定的动作来保证数据的完整性。

12. 理解并给出下列术语的定义:函数依赖、部分函数依赖、完全函数依赖、传递依赖、候选码、主码、外码、全码(All - key )、1 NF 、ZNF 、3NF 、BCNF 、多值依赖、4NF。

【答】 函数依赖:设R(U)是属性集U上的关系模式。X,Y是属性集U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作X?Y。(即只要X上的属性值相等,Y上的值一定相等。)

[术语和记号]:

X?Y,但Y不是X的子集,则称X?Y是非平凡的函数依赖。若不特别声明,总是讨论非平凡的函数依赖。

X?Y,但Y是X的子集,则称X?Y是平凡的函数依赖。

若X?Y,则X叫做决定因素(Determinant)。

若X?Y,Y?X,则记作X??Y。

若Y不函数依赖于X,则记作X ? Y。

完全函数依赖、部分函数依赖:在R(U)中,如果 X?Y,并且对于X的任何一个真子集X’, 都有X’ ? Y,则称Y对X完全函数依赖;若X?Y,但Y不完全函数依赖于X,则称Y对 X部分函数依赖。 传递依赖:在关系R (U)中,如果XY(YX),YX,YZ,则称Z对X传递函数依赖。 候选码、主码:设 K为R(U,F)中的属性或属性组合,若KU则K为R的候选码。若候选码多于一个,则选定其中的一个为主码。 外码:关系模式 R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码也称外码。 全码:整个属性组是码,称为全码( All-key)。 若关系模式R的每一个分量是不可再分的数据项,则关系模式R属于第一范式(1NF)。 :若关系模式R∈1NF,且每一个非主属性完全函数依赖于码,则关系模式R∈2NF 。(即1NF消除了非主属性对码的部分函数依赖则成为2NF)。 关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z不是Y的子集)使得X?Y,Y ? X,Y ? Z成立,则称R<U,F>∈3NF。 关系模式R<U,F>∈1NF 。若X?Y且Y不是X的子集时,X必含有码,则R<U,F>∈BCNF。

多值依赖:设R(U)是属性集U上的一个关系模式。X,Y,Z是U的子集,并且Z=U-X-Y。关系模式R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值有一组Y的值,这组值仅仅决定于x值而与z值无关。 关系模式R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X??Y(Y不是X的子集,Z=U-X-Y不为空),X都含有码,则称R<U,F>∈4NF。

13. 建立一个关于系、学生、班级、学会等诸信息的关系数据库。

学生:学号、姓名、出生年月、系名、班号、宿舍区。

班级:班号、专业名、系名、人数、入校年份。

系:系名、系号、系办公地点、人数。

学会:学会名、成立年份、办公地点、人数。

语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。

请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在?

【答】(1)关系模式如下:

学生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

班级:C(Class,Pname,Dept,Cnum,Cyear)

系:D(Dept,Dno,Office,Dnum)

学会:M(Mname,Myear,Maddr,Mnum)

(2)每个关系模式的最小函数依赖集如下:

A、学生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函数依赖集如下:

Sno?Sname,Sno?Sbirth,Sno?Class,Class?Dept,DEPT?Rno

传递依赖如下:

由于Sno?Dept,而Dept?Sno ,Dept?Rno(宿舍区)

所以Sno与Rno之间存在着传递函数依赖。

由于Class?Dept,Dept ? Class,Dept?Rno

所以Class与Rno之间存在着传递函数依赖。

由于Sno?Class,Class?Sno,Class?Dept

所以Sno与Dept之间存在着传递函数依赖。

B、班级C(Class,Pname,Dept,Cnum,Cyear)的最小函数依赖集如下:

Class?Pname,Class?Cnum,Class?Cyear,Pname?Dept.

由于Class?Pname,Pname?Class,Pname?Dept

所以C1ass与Dept之间存在着传递函数依赖。

C、系D(Dept,Dno,Office,Dnum)的最小函数依赖集如下:

Dept?Dno,Dno?Dept,Dno?Office,Dno?Dnum

根据上述函数依赖可知,Dept与Office,Dept与Dnum之间不存在传递依赖。

D、学会M(Mname,Myear,Maddr,Mnum)的最小函数依赖集如下:

Mname?Myear,Mname?Maddr,Mname?Mnum

该模式不存在传递依赖。

(3)各关系模式的候选码、外部码,全码如下:

A、学生S候选码:Sno;外部码:Dept、Class;无全码

B、班级C候选码:Class;外部码:Dept;无全码

C、系D候选码:Dept或Dno;无外部码;无全码

D、学会M候选码:Mname;无外部码;无全码

14. 在一个订货系统的数据库中,存有顾客、货物和订货单的信息。

每个顾客包含顾客号CUSTNO(唯一的)、收货地址ADDRESS(一个顾客可有几个地址)、赊购限额CREDLIM、余额BAL以及折扣DISCOUNT;

每个订货单ORDNO包含顾客号CUSTNO、收货地址ADDRESS、订货日期DATE、订货细则LINENO(每个订货单有若干条),每条订货细则内容为货物号ITEMNO及订货数据QTYORD。

每种货物包含货物号ITEMNO(唯一的)、制造厂商PLANTNO、每个厂商的实际存货量QTYOH、规定的最低存货量DANGER和货物描述DESCN。

为这些数据设计一个数据库,首先给出合理的数据依赖。

【答】:其语义假设如下:

(1)任何两个顾客的收货地址都不相;

(2)每一订单都有一个唯一的订单号码;

(3)每个订单的订单细则在该订单里有一个唯一的编号。

函数依赖如下:

CUSTNOBAL,CUSTNOCREDLIM,CUSTNODISCOUNT

ADDRESSCUSTNO,

ORDNODATE

(ORDNO,LINENO)QTYORD,(ORDNO,LINENO)QTYOUT

(ORDNO,LINENO)(ITEMNO,PLANTNO)

(ITEMNO,PLANTNO)QTYOH

(ITEMNO,PLANTNO)DANGER

ITEMNODESCN

相应的BCNF如下:

顾客:CUST(CUSTNO,BAL,CREDLIM,DISCOUNT)

发货:SHOPTO(ADDRESS,CUSTNO)

订货单:ORDHEAD(ORDNO,ADDRESS,DATE)

订货细则:ORDLINE(ORDNO,LINENO,ITEMNO,QTYORD,QTYOUT) 货物:ITEM(ITEMNO,DESCN)

供货:IP(ITEMNO,PLANTNO,QTYOH,DANGER)

15. 试述数据库设计过程及各个阶段上的设计描述。

【答】一个完整的实际数据库及其应用系统的设计过程,不仅包括设计数据库本身,还包括数据库的实施、运行和维护。六个阶段的不断反复,设计一个完善的数据库应用系统。

(1)需求分析:准确了解与分析用户需求(包括数据与处理)。

(2)概念结构设计:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体 DBMS 的概念模型。

(3)逻辑结构设计:将概念结构转换为某个 DBMS 所支持的数据模型,并对其进行优化。

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

(5)数据库实施:设计人员运用 DBMS 提供的数据语言、工具及宿主语言,根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。

(6)数据库运行和维护:在数据库系统运行过程中对其进行评价、调整与修改。

16. 什么是数据库的完整性约束条件?可分为哪几类? 【答】完整性约束条件是指数据库中的数据应该满足的语义约束条件。 一般可以分为六类:静态列级约束、静态元组约束、静态关系约束、动态列级约束、动态元组约束、动态关系约束。

静态列级约束是对一个列的取值域的说明,包括以下几个方面:(1)对数据类型的约束,包括数据的类型、长度、单位、精度等;(2)对数据格式的约束;(3)对取值范围或取值集合的约束;(4)对空值的约束;(5)其他约束。

静态元组约束就是规定组成一个元组的各个列之间的约束关系,静态元组约束只局限在单个元组上。静态关系约束是在一个关系的各个元组之间或者若干关系之间常常存在各种联系或约束。

静态关系约束有:(1)实体完整性约束;(2)参照完整性约束;(3)函数依赖约束。 动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:(1)修改列定义时的约束;(2)修改列值时的约束。

动态元组约束是指修改某个元组的值时需要参照其旧值,并且新旧值之间需要满足某种约束条件。动态关系约束是加在关系变化前后状态上的限制条件,例如事务一致性、原子性等约束条件。

17. 下面的结论哪些是正确的?哪些是错误的?对于错误的请给出一个反例说明之。

(1)任何一个二目关系是属于3NF的。

(2)任何一个二目关系是属于BCNF的。

(3)任何一个二目关系是属于4NF的。

(4)当且仅当函数依赖AB在R上成立,关系R(A,B,C)等于其投影R1(A,B)和R2(A,C)的连接。

(5)若R.AR.B,R.BR.C,则R.AR.C。

(6)若R.AR.B,R.AR.C,则R.AR.(B,C)。

(7)若R.BR.A,R.CR.A,则R.(B,C)R.A。

(8)若R.(B,C)R.A,则R.BR.A,R.CR.A。

【答】(1)正确。因为关系模式中只有两个属性,所以无传递依赖;

(2)正确。按BCNF的定义,若X→Y且YX时。每个决定因素都包含码,对于二目关系决定因素必然包含码;

(3)正确。因为只有两个属性,所以无非平凡的多值依赖;(4)正确?根据无损连接的定理。(5)正确。根据传递律;(6)正确。根据合并规则;(7)正确。根据增广律可推出;

(8)若R.(B,C)R.A,则R.BR.A,R.CR.A。错误。

例如:关系模式SC(SNO,CNO,GRADE),其中:Sno为学号,Cno为课程号,Grade为成绩,那么,有(SNO,CNO)GRADE,但是,SNOGRADE,CNOGRADE。(8)错误。例如:S(Sno,Cno,Grade)号,那么,有(Sno,Cno)→Grade。但是,SnoGrade,CnoGrade。

18. 试述数据库概念结构设计的重要性和设计步骤。

【答】重要性:数据库概念设计是整个数据库设计的关键,将在需求分析阶段所得到的应用需求首先抽象为概念结构,以此作为各种数据模型的共同基础,从而能更好地、更准确地用某一DBMS实现这些需求。

设计步骤:概念结构的设计方法有多种,其中最经常采用的策略是自底向上方法,该方法的设计步骤通常分为两步:第 1 步是抽象数据并设计局部视图,第 2 步是集成局部视图,得到全局的概念结构。

19. 什么是数据库的逻辑结构设计?试述其设计步骤。

【答】数据库的逻辑结构设计:就是把概念结构设计阶段设计好的基本 E 一 R 图转换为与选用的 DBMS 产品所支持的数据模型相符合的逻辑结构。

设计步骤:(1)将概念结构转换为一般的关系、网状、层次模型;(2)将转换来的关系、网状、层次模型向特定 DBMS 支持下的数据模型转换;(3)对数据模型进行优化。

20. 试述查询优化的一般准则。

【答】下面的优化策略一般能提高查询效率:

(1)选择运算应尽可能先做;(2)把投影运算和选择运算同时进行;(3)把投影同其前或其后的双目运算结合起来执行;(2)把某些选择同在它前面要执行的笛卡儿积结合起来成为一个连接运算;(5)找出公共子表达式;(6)选取合适的连接算法。

21. 试述查询优化的一般步骤。

【答】各个关系系统的优化方法不尽相同,大致的步骤可以归纳如下:

(1)把查询转换成某种内部表示,通常用的内部表示是语法树。(2)把语法树转换成标准(优化)形式。即利用优化算法,把原始的语法树转换成优化的形式。(3)选择低层的存取路径。(4)生成查询计划,选择代价最小的。

22. 试述事务的概念及事务的4 个特性。

【答】事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。具有4 个特性:原子性(Atomicity)、一致性(consistency)、隔离性(Isolation)和持续性(Durability)。这4 个特性也简称为ACID 特性。

原子性:事务是数据库的逻辑工作单位,事务中包括的诸操作要么都做,要么都不做。

一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。 隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

持续性:持续性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其执行结果有任何影响。

23. 数据库恢复的基本技术有哪些?

【答】基本技术是:数据转储和登录日志文件。当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。

24. 并发操作可能会产生哪几类数据不一致?用什么方法能避免各种不一致的情况?

【答】并发操作带来的数据不一致性包括:丢失修改、不可重复读和读“脏”数据。

(1)丢失修改(lost update):两个事务Tl和T2读入同一数据并修改,T2提交的结果破坏了(覆盖了) Tl 提交的结果,Tl的修改被丢失。

(2)不可重复读(Non - Repeatable Read):是指事务Tl 读取数据后,事务T2执行更新操作,使 Tl 无法再现前一次读取结果。

(3)读“脏”数据(Dirty Read):是指事务 Tl 修改某一数据,并将其写回磁盘,事务几读取同一数据后, Tl 由于某种原因被撤销,这时 Tl 已修改过的数据恢复原值,T2读到的数据就与数据库中的数据不一致,则几读到的数据就为“脏”数据,即不正确的数据。

避免不一致性的方法和技术就是并发控制。最常用的技术是封锁技术。也可以用其他技术,例如在分布式数据库系统中可以采用时间戳方法来进行并发控制。

相关推荐