1.试述E-R图转换成关系模型的转换原则。
(4分)2.等值联接、自然联接二者之间有什么区别? (3分)3.简述从1NF到4NF的规范化过程?(4分)4.试举例说明一条完整性规则的数学表示方法。
(5分)2.答:数据冗余大、插入异常、删除异常、修改麻烦。
解决办法:模式分解。
3.什么是事务?它有哪些属性?答:事务是用户定义的一个操作序列,这些操作要么全做要么全不做,事务是一个不可分割的工作单位。
事务具有四个特性:原子性、一致性、隔离性和持续性。
这个四个特性也简称为ACID特性。
4.答:PRIMARY KEY(主码)FOREIGN KEY(外码)DEFAULT (缺省)CHECK(检查)UNIQUE(唯一值)六、程序设计题(共15分,第1小题5分,第2小题10分)1.设有关系模式为:学生(学号,姓名,性别,年龄,所在系)课程(课程号,课程名,先行课)选课(学号,课程号,成绩)请用关系代数完成下列操作:(1)求选修了课程号为“5”课程的学生学号和姓名。
(2)求没有选修课程号为“5”课程的学生学号。
(3)求既选修了课程号为“5”,又选修“6“号课程的学生学号。
(4)求选修了全部课程的学生学号和姓名。
(5)求选修了学号为“95001”学生所学过的所有课程的学生学号和姓名。
2.以下给出三个基本表。
Student(学生表)的字段按顺序为学号、姓名、性别、年龄、所属院系;Course(课程表)的字段按顺序为课程编号、课程名、先行课程、课程学分;SC(选课表)的字段按顺序为学号、课程号、成绩。
试用SQL语句表示下列操作。
(1)写出创建学生表Student的SQL命令,各字段的类型及长度应根据实际情况确定。
其中学号属性不能为空,并且其值是唯一的,并在Sno列上建立一个聚簇索引。
(2)检索信息系(IS)和计算机科学系(CS)的学生的姓名和性别。
(3)检索各个课程号及相应的选课人数。
(4)检索每个学生及其选修的课程名和成绩。
(5)检索男生的平均年龄。
2.(1).写出创建学生表Student的SQL命令,各字段的类型及长度应根据实际情况确定。
其中学号属性不能为空,并且其值是唯一的,并在Sno列上建立一个聚簇索引。
CREATE TABLE Student(Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20),Ssex CHAR(1),Sage INT,Sdept CHAR(15));CREATE CLUSTED INDEX Stusname ON Student(Sname);(2).检索信息系(IS)和计算机科学系(CS)的学生的姓名和性别。
SELECT Sname, Ssex FROM Student WHERE Sdept IN ('IS','CS')(3).检索各个课程号及相应的选课人数。
SELECT Cno, COUNT(Sno)FROM SCGROUP BY Cno;(4).检索每个学生及其选修的课程名和成绩。
SELECT Student.Sno, Sname, ame, SC.GradeFROM Student, SC, CourseWHERE Student.Sno=SC.Sno and o=o;(5)检索男生的平均年龄。
select 性别,avg(年龄)from studentwhere 性别=‘男’group by 性别或select avg(年龄)from 基本情况group by 性别 having 性别='男'1.2.以下程序显示26个小写英文字母,完成该程序。
DECLARE@count intSET____@COUNT=0_____WHILE @count<26BEGINPRINT CHAR(ASCII(‘a’)+_____+@COUNT_______ )SET @count=@count+1END3.以下程序用游标gd_cur查找studentsdb数据库的grade表,统计并显示表中记录总数,最后删除游标gd_cur,完成程序。
DECLARE@sid char(8),@cid varchar(10),@scr numeric(5,2)DECLARE@ count intSET @ count=0DECLARE gd_cur_____cursor________FOR SELECT学号,课程编号,分数FROM gradeOPEN gd_curFETCH FROM gd_curINTO@sid,@cid,@scrWHILE______@@fetch_status=0_______BEGINSET @count =@count+1FETCH FROMgd_curINTO@sid,@cid,@scrEndCLOSE gd_curDeallocate dg_curPRINT@count4.下列题目中的代码应用于数据库studentsdb.CREATE PROCEDURE st_agASBEGINSELECT学号,avg(分数)AS平均成绩FROM gradeGROUP BY学号END该程序完成的功能是:_____创建存储过程从表grade中返回每个学号对应的平均成绩___________5.以下代码创建和执行存储过程proc_grade,查询studentsdb数据库的grade表中课程编号为“0002”的学号、分数信息,并使存储过程不能使用sp_helptext查看,完成以下程序并执行存储过程proc_score.CREATE PROC proc_ grade ---创建存储过程proc_gradeWITH__ENORYPTION______ASSELECT学号,分数FEOM gradeWHERE课程编号=_‘0002’__________执行存储过程proc_score:EXEC_______PROC——SCORE____四、简答1.SQL Server2000企业版提供了哪几个服务?每个服务的作用是什么?答:SQL Server服务:接受所有来自客户端的Transact-SQL语句或者图形化管理工具发出的对数据库的访问请求,提供对实例数据库的访问操作,由SQL Server数据库引擎组件完成。
SQL Server Agent服务:SQL Server代理程序允许在SQL Server 2000上调度定期执行的活动,并通知系统管理员,报告服务器所发生的问题。
Distributed Transaction Coordinator服务:允许客户端应用程序在一个事务中对分布在多个服务器上的数据源进行操作。
Microsift Search 服务:具有索引和查询两项功能2.SQL Server2000提供了几个版本?每个版本分别适用于哪些操作系统?4个版本:企业版,标准版,个人版,开发板各自所支持的系统版本详见于P443.“Windows身份验证模式”和“混合模式”的区别是什么?用户通过Windows用户账号验证,即可连接到SQL Server而不再进行身份验证。
在混合模式下,两种模式都可用,在SQL Server模式下,用户连接时,需要提供登录名和登录密码。
4.登记日志文件时为什么必须先写日志文件,后写数据库?把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。
有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。
如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的撤销(UNDO)操作,并不会影响数据库的正确性。
所以为了安全,一定要先写日志文件,即首先把日志记录写到日志文件中,然后写数据库的修改。
这就是“先写日志文件”的原则。
5.数据文件与日志文件的作用分别是什么?数据文件:存放数据和数据库对象的文件。
日志文件:记录数据库更新信息,这些更新信息可以用来恢复数据库1.试比较文件系统和数据库系统的特点?答:文件系统和数据库系统所处理的数据都可长期保存,反复操作。
文件系统中文件内部具有结构,但数据文件之间的联系无法定义;数据库系统既可结构化局部数据,也可定义全局的数据结构。
文件系统的应用程序与数据之间有了一定的独立性;而数据库系统通过两方面的映象功能,使数据具有物理独立性和逻辑独立性。
文件系统的数据共享性较差,冗余度高,数据是面向程序的;数据库系统的数据是面向全局的,共享性好,冗余度低。
数据库系统的数据由DBMS统一管理和控制,有较好地控制数据安全性、完整型、并发管理、数据库恢复等。
2.DBA的主要职责是什么?答:数据库管理员(DBA)负责全面和控制数据库系统,其主要职责有:设计与定义数据库系统;帮助最终用户使用数据库系统;监督与控制数据库系统的使用和运行;改进和重组数据库系统,调优数据库系统的性能;转储与恢复数据库;重构数据库。
3.简述关系的性质?答:①同一列中的分量是同一类型的数据。
不同列可以取相同的数据类型。
②关系中的列又称为属性,并赋予属性名。
不同列的属性名不同。
③列的次序可以任意交换。
④任意两个元组不能完全相同。
⑤行的次序可以任意交换。
⑥列具有原子性,即每一列值是不可分的数据项4.数据依赖对关系模式的影响?答:数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系。
它是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现。
函数依赖是数据依赖的一种类型。
部分函数依赖、传递函数依赖会导致关系模式中的更新异常、插入异常、删除异常、数据冗余等问题。
5.试述数据库设计的基本步骤。
答:(1)需求分析阶段:需求收集和分析,得到数据字典和数据流图。
(2)概念结构设计阶段:对用户需求综合、归纳与抽象,形成概念模型,用E-R图表示。
(3)逻辑结构设计阶段:将概念结构转换为某个DBMS所支持的数据模型。
(4)数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构。
(5)数据库实施阶段:建立数据库,编制与调试应用程序,组织数据入库,程序试运行。
(6)数据库运行和维护阶段:对数据库系统进行评价、调整与修改。
四、根据各小题要求,写出对应的 SQL语句。
以下给出三个基本表。
Student(学生表)的字段按顺序为学号、姓名、性别、年龄、所属院系;Course(课程表)的字段按顺序为课程编号、课程名、先行课程、课程学分;SC(选课表)的字段按顺序为学号、课程号、成绩。
各表的记录如下:1.写出创建学生表Student的SQL命令,各字段的类型及长度应根据实际情况确定。
其中学号属性不能为空,并且其值是唯一的。
并在Sno列上建立一个聚簇索引。