当前位置:文档之家› 数据库复习思考题

数据库复习思考题

1、数据库系统有哪几种模式?分别用来描述什么?(1)外模式是用户的数据视图,用来描述数据的局部逻辑结构,是模式的子集。

(2)模式是所有用户的公共数据视图,用来描述数据库中全体数据的全局逻辑结构和特征。

(3)内模式又称存储模式,描述数据的物理结构及存储方式2、什么是事务?事务有哪些特征?答:所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。

事务的特征:原子性、一致性、隔离性、持续性。

3、在E-R模型中联系是用来反映什么样的信息,它有几种类型?答:用来反映为实体(型)内部的联系和实体(型)之间的联系,实体内部的联系通常是指组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系。

联系可分为三种:(1)一对一联系(1:1)(2)一对多联系(1:n)(3)多对多联系(m:n)。

4、关系数据库中的实体完整性和参照完整性对数据分别有什么样的约束?答:实体完整性规则是:若属性A是基本关系R的主属性,则属性A不能取空值。

参照完整性规则是:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。

5、数据库管理系统为什么要对事务进行并发控制?如果不进行并发控制会出现哪些问题?答:为了充分利用系统资源发挥数据库共享资源的特点,应该允许多个事务并行地执行,当多用户并发地存取数据库时就会产生多个事务同时存取同一数据的情况,若对并发操作不加控制就可能会存取和存储不正确的数据,破坏事务的一致性和数据库的一致性;所以数据库管理系统必须提供并发控制机制。

如果不进行并发控制会出现数据丢失修改、不可重复读和读“脏”数据等问题。

6、什么是外部关键字?建立外部关键字的作用是什么?答:外部关键字指关系R中的一个属性组,它不是R的主关键字,但它与另一个关系S的主关键字相对应,则称这个属性组为R的外部关键字。

建立外部关键字的作用:在相应的表之间建立一种关联。

7、写出数据库设计的步骤。

答:(1)需求分析;(2)概念结构设计;(3)逻辑结构设计;(4)物理结构设计;(5)数据库实施;(6)数据库运行和维护。

8、在建立E-R模型时如何区分实体和属性?答:在给定的应用环境中,可以遵循以下准则来划分实体和属性:(1)属性与它所描述的实体之间只能是单值联系,即联系只能是一对多的;(2)属性不能再有需要进一步描述的性质;(3)作为属性的数据项,除了它所描述的实体之外,不能再与其它实体具有联系。

9、什么是触发器?它有何作用?答:是一种特殊类型的存储过程,在试图修改触发器所保护的表中的数据时,它就会自动执行。

触发器可以包括大多数Transact_sql语句。

触发器的查询计划存储在过程缓冲中。

10、什么是视图?它有何作用?答:视图是命名的、从基本表中导出的虚表。

它在物理上并不存在。

存在的只是它的定义;视图中的数据是从基本表中导出的。

每次对视图查询都要重新计算;视图之上可以再定义视图。

视图的作用是让一定权限的操作者不用操作基本表就能满足其相应的操作要求,从而实现了对数据的安全管理。

11 .什么是数据模型及其要素?数据模型是数据库中用来对现实世界进行抽象的工具,是数据库中用于提供信息表示和操作手段的形式构架。

一般地讲,数据模型是严格定义的概念的集合。

这些概念精确地描述系统的静态特性、动态特性和完整性约束条件。

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

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

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

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

12、什么是死锁,预防死锁的方法有哪些?13、索引的用途有哪些?14、哪些情况下需要避免使用索引?15、简述模式分解的两个基本原则?16.关系模式规范化的必要性?17.简述三级封锁协议?18、所有的视图是否都可以进行更新,为什么?19.试述从第一范式到BC范式的规范化要求?20.DBMS的主要功能?21.为什么要研究关系规范化理论?1)用几个结构简单的关系去取代原来结构复杂的关系的过程叫做关系规范化,关系规范化理论是数据库设计过程中的一个非常有用的辅助工具。

2)一般来讲,通过规范化理论可以把不好的关系数据库模式逐步转变为好的关系数据库模式,所以,任何一个设计关系数据库的人,都要熟悉规范化技术和理论。

3)而规范化又是和关系模式中的各属性之间的互相依赖关系有关,也就是说,数据库模式的好坏和关系中所含属性间的依赖关系有关。

所以,为了能设计出好的关系数据库模式,我们要研究关系规范化理论。

22.简述关系模式规范化的步骤。

1)对1NF关系进行投影,消去非主属性对键的部分函数依赖,产生一组2NF关系;2)对2NF关系进行投影,消去非主属性对键的传递函数依赖,产生一组3NF关系;3)对3NF 关系进行投影,消去决定因素不是键的函数依赖,产生一组BCNF关系。

23.什么叫关系模式分解?为什么要进行关系模式分解?模式分解要遵守什么准则?1)所谓关系模式分解是指根据规范化理论将一个结构复杂的关系分解为几个结构简单的关系,以消除数据库操作的异常情况。

2)进行关系模式分解的目的是消除关系模式中存在的存入、删除、修改异常和数据冗余等弊病。

3)模式分解要遵守的准则是:取原始关系的投影,消去决定因素不是候选键的函数依赖。

要求分解既要保持函数依赖,又要具有无损连接性。

24.什么叫数据仓库?它有哪几个特点?25. 什么叫存储过程?使用它有哪些好处?1、封锁2、参照完整性3、自然连接4、关系模式5、数据字典6、物理数据独立性7、共享锁及排它锁8、实体完整性9、等值连接10、概念模式11、触发器12、逻辑数据独立性1有一个教学管理数据库,包含以下基本表:(表略)用交互式SQL完成:(1)建立学生表,主码为学号,性别为‘男’或‘女’。

Create table 学生(学号char(8) not null,姓名char(8) not null,性别char(2),年龄smallint,年级char(8),系编号integer,primary key (学号),check (性别=‘男’或‘女’),)(2)建立教师表,主码为教师编号,外码为系编号。

Create table 教师(教师编号char(8) not null,姓名char(8) not null,年龄smallint,职称char(4),系编号integer,primary key (教师编号),foreign key (系编号) references 院系(系编号#),)(3)建立选课表,主码为学号和课程编号,外码为学号,课程编号。

Create table 选课(学号# char(8),课程编号# char(4),成绩smallint,primary key (学号#, 课程编号#),foreign key (学号#) references 学生(学号#),foreign key (课程编号#) references 课程(课程编号#),check ((成绩is null ) or (成绩between 0 and 100 )),)(4)将学生张三从编号为001的系转到编号为002的系。

Updata 学生Set 系编号# = 002Where 姓名=“张三”and 系编号#=001(5)统计学生总人数。

Select count (学号#)From 学生(6)显示计算机系的学生的信息。

Select *From 教师,任课,课程Wher 课程名=”数据库原理”and 课程.课程编号# = 任课.课程编号# and 任课.教师编号# = 教师.教师编号#(7)查找法律系的系办电话。

Select 系办电话From 院系Where 系名= “法律系”(8)删除2000级的学生记录。

Delete from 学生Where 年级= “2000级”(9)将计算机系教师张明的职称升为教授。

Updata 教师Set 职称= “教授”Where 姓名= ”张明” and 教师编号# = ( select 教师编号#From 院系Where 系名= “计算机系”)(10)统计计算机系教师张明的任课门数。

Select count (课程编号#)From 院系,教师,任课Where 院系.系名= “计算机系” and 院系.系编号# = 教师.系编号#and 教师.教师编号# = 任课.教师编号#(11)统计每个系的教师的人数。

Select 系编号#,count (教师编号#)From 教师Group by 系编号#(12)查找教授数据库原理的教师的姓名。

Select 教师.姓名From 教师,任课,课程Where 课程名= “数据库原理” and 课程.课程编号# = 任课.课程编号# and 任课.教师编号# = 教师.教师编号#(13)删除1020号教师的任课记录。

Delete from 任课Where 教师编号# = “1020”(14)将课程数据库原理的学分设为4.Updata 课程Set 学分= 4Where 课程名= 数据库原理(15)学生王明每选一个学分交费100元,统计它的选课总费用。

Select sum (学分)* 100From 学生,课程,选课Where 学生.学号# = 选课.学号# and 选课.课程编号= 课程.课程编号#(16)统计20岁的学生总人数。

Select count (age)From 学生Where 学生.年龄= 20(17)选修数据库原理的学生名单secect 学生.姓名from 学生,课程,选课where 课程.课程名= “数据库原理” and 课程.课程编号# = 选课.课程编号# and 选课.学号# = 学生.学号#(18)删除20030号学生的选课记录delete from 选课where 学号# = “200030”(19)建立一个存储过程,通过输入学号,显示学生的姓名,选课课程名,成绩,并统计出选课门数。

Create procedure report @id char(8) asSelect 学生.姓名,课程.课程名,选课.成绩,count (课程.课程编号#)From 学生,课程,选课Where 学生.学号# = @id and 选课.学号# = 学生.学号# and 选课.课程编号# = 课程.课程编号#(20)建立一个存储过程,通过输入教师编号,显示教师的姓名,任课课程名,教师院系。

相关主题