1、什么是数据库的逻辑数据独立性和物理数据独立性?数据独立性的好处是什么?
物理独立性:物理独立性是指用户的应用程序与存储在磁盘上的数据库中数据是相互独立的。即,数据在磁盘上怎样存储由DBMS管理,用户程序不需要了解,应用程序要处理的只是数据的逻辑结构,这样当数据的物理存储改变了,应用程序不用改变。
逻辑独立性:逻辑独立性是指用户的应用程序与数据库的逻辑结构是相互独立的,即,当数据的逻辑结构改变时,用户程序也可以不变。
2、试述关系模型的三类完整性规则的含义,并以学生表和成绩表为例说明如何实施完整性。 实体完整性规则、参照完整性规则、用户定义完整性规则。 3、为什么要设立日志文件?
设立日志文件的目的是: 进行事务故障恢复;进行系统故障恢复;协助后备副本进行介质故障恢复。
4、简述数据库的三级模式、两级映射的含义和作用?
数据库系统的三级模式结构是指数据库系统是由模式、外模式和内模式三级构成的。
数据库的二级映像功能与数据独立性 为了能够在内部实现数据库的三个抽象层次的联系和转换,数据库管理系统在这三级模式之间提供了两层映像。
5、简述DBMS的构成和主要功能。
组成:数据定义语言及其翻译处理程序、数据操纵语言及其翻译解释程序、数据运行控制程序、实用程序。
主要功能:数据定义,数据操纵,数据库运行管理,数据组织、存储和管理,数据库的建立和维护,数据通信接口。 三、设计题 1、(13分)在简单的教务管理系统中,包括四个实体,分别为:
a. 系:系名,电话
b. 教师:教师号,姓名,性别,职称,年龄 c. 学生:学号,姓名,性别,年龄 d. 课程:课程号,课程名,学分 且存在如下语义约束:
a. 一个系可拥有多个教师,一个教师只能属于一个系。 b. 一个系可拥有多个学生,一个学生只能属于一个系。 c. 一个学生可选修多门课程,一门课程可为多个学生选修,每一个学生选修每门课程 都有一个成绩。
d. 一个教师可讲授多门课程,一门课程可为多个教师讲授。 要求完成:
1)画出E-R图;(6分)
2)把1)转化为关系模型,并标出每个关系的主键;(4分) 3)试述在2)中用到的具体转换方法。(3分)
2、(15分)员工表Employee(Eid,ename,sex,age,depid, RoleId),包含的字段含义:Eid (雇员编号) ,ename(姓名),sex(性别),age(年龄),Depid (部门编号),RoleId (职务编号)。depid(部门编号)是外键,引用表Depart中的Depid erid(职务编号)也是外键,引用ERole表中的RoleId职务编号。员工表的主键是复合键:(eid,depid,roleid),即某个员工可以跨多个部门,可以有多个职务。
部门表Depart(Depid,depname,manager)的字段含义:depid(部门编号),manager(经理),depname(部门简称)
职务表ERole(RoleId,rolename,grade)的字段含义:roleid(职务编号),rolename(职务名称),grade(职务等级)。
试用关系代数表达式表示下列问题(每题3分):
Create Table Depart (depid int Primary Key, manager char(10), depname char(10) );
Create Table ERole (roleid int Primary Key, rolename char(10), grade char(10) );
Create Table Employee (eid int, ename char(10), sex char(2),
age smallint, depid int, roleid int,
foreign key(depid) References Depart(depid), foreign key(roleid) References ERole(roleid), primary key(eid,depid,roleid) );
-- 为各个表插入相应的数据,写出相应的插入数据的SQL语句 Insert
Into Employee(eid,ename,sex,age,depid,roleId) Values('01','Jackson','男','30','03','03'); Insert
Into Employee(eid,ename,sex,age,depid,roleId) Values('02','Bally','女','18','03','01'); Insert
Into Depart(depid,manager,depname) Values('03','Jakson','管理科'); Insert
Into ERole(roleId,rolename,grade) Values('03','经理','B'); Insert
Into ERole(roleId,rolename,grade) Values('01','员工','D');
(1) 检索部门名称是“管理科”的女员工的雇员编号(Eid)和姓名(ename)。
Select eid,ename,sex,depid From Employee Where depid In (select depid From Depart
Where depname='管理科' )
And sex='女';
(2)检索出这样一个员工,他身兼职务表中包括的所有职务,投影出这个员工的雇员编号和职务编号。
Select Distinct eid,roleid From Employee A Where Not Exists (Select * From ERole Where Not Exists
(Select * From Employee B
Where roleid=ERole.roleid And B.eid=A.eid ));
(3)检索不属于“管理科”(部门名称)的员工的姓名(ename)和职务名称(rolename):注意:一个员工可以属于多个部门。
From Employee,ERole Where rolename In (Select rolename From ERole
Where Employee.roleid=ERole.roleid ) Except
Select ename,rolename From Employee,ERole Where rolename In (Select rolename From ERole Where roleid In (Select roleid From Depart
Where depname='管理科' ));
(4)检索至少跨两个部门的员工的雇员编号(Eid)。
Select eid From Employee Group By eid Having Count(*) >1;
(5)检索出年龄在55到60的员工编号(Eid),姓名(ename)和年龄(age)。
Select eid,ename,age From Employee Where age>=55 And age<=60;