1.与文件管理相比,数据库管理有哪些优点?
答:(1)相互关联的数据集合;(2)较少的数据冗余;(3)程序与数据相互;(4)保证数据的安全可靠;(5)最大限度地保证数据的正确性;(6)数据可以共享并能保证数据的一致性。
2.比较文件管理和数据库管理数据的主要区别。
答:文件系统不能提供数据的性,也不能提供数据共享、安全性等功能,这些需要客户端编程实现。而数据库管理系统可以很方便地提供这些功能。
3.在数据库管理方式中,应用程序是否需要关心数据的存储位置和结构?为什么?
答:不需要。因为这些都由数据库管理系统来维护。
4.在数据库系统中,数据库的作用是什么?
答:数据库是存储数据的仓库,其作用是存储数据。
5.在数据库系统中,应用程序可以不通过数据库管理系统而直接访问数据库文件吗?
答:不可以。
6.数据性指的是什么?它能带来哪些好处?
答:数据性包括逻辑性和物理性两部分。物理性是指当数据的存储结构发生变化时,不影响应用程序的特性;逻辑性是指当表达现实世界的信息内容发生变化时,不影响应用程序的特性。这两个性使用户只需关心逻辑层即可,同时增强了应用程序的可维护性。
7.数据库系统由哪几部分组成,每一部分在数据库系统中的作用大致是什么?
答:数据库系统一般包括3个主要部分:数据库、数据库管理系统和应用程序。数据库是数据的汇集,它以一定的组织形式保存在存储介质上;数据库管理系统是管理数据库的系统软件,它可以实现数据库系统的各种功能;应用程序专指以数据库数据为基础的程序
8.在文件服务器结构和客户/服务器结构中,对数据的处理有什么区别?
答:在文件服务器结构中,数据的处理是在客户端完成的,而在客户/服务器结构中,对数据的处理是在服务器端完成的,服务器返回给客户端的是处理后的结果。
第2章 数据模型与数据库系统结构
1.解释数据模型的概念,为什么要将数据模型分成两个层次?
答:数据模型实际上是模型化数据和信息的工具,在数据库中,数据模型要满足三个要求:第一,要能够比较真实地模拟现实世界;第二,要容易被人们理解;第三,要能够很方便地在计算机上实现。用一种模型来同时满足这三方面的要求比较困难,因此在在数据库系统中针对不同的使用对象和应用目的,采用了两种不同的数据模型来实现,一个是概念层数据模型,用来满足第一和第二个要求;另一个是组织层数据模型,用来满足第三个要求。
2.概念层数据模型和组织层数据模型分别是针对什么进行的抽象?
答:概念层数据模型主要针对用户的业务进行抽象,组织层数据库模型主要针对具体的数据库管理系统采用的数据组织方式进行抽象。
3.实体之间的联系有几种?分别是哪些?请为每一种联系举出一个例子。
答:有三种:1:1;1:n;m:n。1:1示例:系和系主任。1:n示例:班和学生;m:n示例:教师和学生。
4.说明实体-联系模型中的实体、属性和联系的概念。
答:实体是具有公共性质的并可相互区分的现实世界对象的集合。属性是实体所具有的特征或性质。联系是实体之间的关联关系。
5.指明下列实体间联系的种类:
(1)教研室和教师(假设一个教师只属于一个教研室,一个教研室可有多名教师)。
答:一对多。
(2)商店和顾客。
答:多对多。
(3)国家和首都。
答:一对一。
6.解释关系模型中的主键、外键的概念,并说明主键、外键的作用。
答:主键是用于唯一确定表中一个元组的一个属性或最小的属性组。外键用于实现数据之间的关联关系(参照完整性)。
7.指出下列关系模式的主键:
教师授课表(教师号,课程号,学年,授课时数)。
假设一个教师可以在同一个学年讲授多门课程,一门课程也可以在同一个学年由多名教师讲授,但一个教师在一个学年对一门课程只讲授一次,每一次讲授有一个唯一的授课时数。
答:(教师号,课程号,学年)
8.设有如下两个关系模式,试指出每个关系模式的主键、外键,并说明外键的引用关系。
产品表(产品号,产品名称,产品价格,生产日期),其中产品名称有重复。
销售表(产品号,销售时间,销售数量),假设可同时销售多种产品,但同一产品在同一时间只销售一次。
答:产品的主键:产品号,无外键。
销售的主键:(产品号,销售时间),其中产品号为引用产品表的外键。
9.关系模型的数据完整性包含哪些内容?分别说明每一种完整性的作用。
答:包含:实体完整性、参照完整性和用户定义的完整性。
实体完整性:作用是保证表中的不存储相同的数据,也不存储无意义的数据。
参照完整性:用于描述实体之间的联系。
用户定义的完整性:用于限定属性的取值范围,目的是保证数据库中存储的值与现实世界相符。
10.数据库系统包含哪三级模式?试分别说明每一级模式的作用?
答:外模式、模式和内模式。外模式是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同用户对数据的需求。
模式:是数据库中全体数据的逻辑结构和特征的描述,它满足所有用户对数据的需求。
内模式:是对整个数据库的底层表示,它描述了数据的存储位置和存储方式。
11.数据库系统的两级映像的功能是什么?它带来了哪些好处?
答:两级映像是外模式/模式映像和模式/内模式映像。外模式/模式映像保证了当模式发生变化时可以保证外模式不变,从而是用户的应用程序不需要修改。模式/内模式映像保证了当内模式发生变化,比如存储位置或存储文件名改变,可以保持模式不变,从而使用户不需要知道这些变化。
12.数据库三级模式划分的优点是什么?它能带来哪些数据性?
答:数据库三级模式的划分使用户可以在逻辑层处理数据,而不需要关心具体的物理细节,同时当内模式或模式发生变化时,可以通过模式之间的映像关系,保持外模式不变,从而避免了修改应用程序。三级模式以及三级模式之间的两级映像带来了数据的逻辑性和物理性。
第3章 SQL语言基础及数据定义功能
1.T-SQL支持哪几种数据类型?
答:字符串型、数值型、日期时间型和货币类型。
2.Tinyint数据类型定义的数据的取值范围是多少?
答:0~255。
3.日期时间类型中的日期和时间的输入格式是什么?
答:在输入日期部分时可采用英文数字格式、数字加分隔符格式和纯数字格式。采用英文数字格式时,月份可用英文全名或缩写形式。在输入时间部分时可以采用12小时格式或24小时格式。使用12小时制时要加上AM或PM说明是上午还是下午。在时与分之间可以使用冒号(:)作为分隔符
4.SmallDatatime类型精确到哪个时间单位?
答:分钟。
5.定点小数类型numeric中的p和q的含义分别是什么?
答:p代表数字位长度,即整数部分和小数部分的数字位之和。q代表小数位数。
6.货币数据类型精确到小数点几位?
答:精确到小数点后4位。
7.Char(10)、nchar(10)的区别是什么?它们各能存放多少个字符?占用多少空间?
答:char(10)是普通编码,固定占10个字节,最多能存放10个字母或数字字符,5个汉字。Nchar(10)是统一字符编码,固定占20个字节,最多能存放10个字符(包括字母和汉字)。
8.Char(n)和varchar(n)的区别是什么?其中n的含义是什么?各占用多少空间?
答:Char(n)是定长字符类型,varchar(n)是可变长字符类型。Char(n)中的n代表固定占n个字节的空间;varchar(n) 中的n代表最多占n个字节的空间。
9.数据完整性的作用是什么?
答:数据的完整性作用是防止数据库中存在不符合语义的数据。
10.在对数据进行什么操作时,系统检查DEFAULT约束?在进行什么操作时,检查CHECK约束?
答:插入操作且省略了某些列的值时检查DEFAULT约束。插入和修改操作检查CHECK约束。
11.UNIQUE约束的作用是什么?
答:列的取值不重复。
12.写出创建如下三张表的SQL语句,要求在定义表的同时定义数据的完整性约束。
答:
Create table 图书表(
书号 nchar(6) primary key,
书名 nvarchar(30) not null,
第一作者 char(10) not null,
出版日期 smalldatetime,
价格:numeric(4,1)
)
Create table书店表(
书店编号 nchar(6) primary key,
店名 nvarchar(30) not null,
电话char(8) check(电话 like
‘[0-9][0-9][0-9][0-9][0-9][0-9][0-9] [0-9]’),
地址 varchar(40),
邮政编码 char(6)
)
Create table图书销售表(
书号 nchar(6) not null,
书店编号 nchar(6) not null,
销售日期 smalldatetime no tnull;
销售数量 smalldatetime check(销售数量 >= 1);
)
13.为第12题的“图书表”添加“印刷数量”列,类型为整数,同时添加约束,要求此列的取值要大于等于1000。
答:alter table 图书表 Add 印刷数量 int check(印刷数量 >= 1000)
14.删除第12题的“书店表”中的“邮政编码”列。
答:alter table 书店表 Drop column 邮政编码
15.将第12题的“图书销售表”中的“销售数量”列的数据类型改为整型。
答:alter table 图书销售表 Alter column 销售数量 int
第4章 数据操作
1.查询SC表中的全部数据。
Select * from sc
2.查询计算机系学生的姓名和年龄。
Select sname,sage from student where sdept = ‘计算机系’
3.查询成绩在70~80分的学生的学号、课程号和成绩。
Select sno,cno,grade from sc where grade between 70 and 80
4.查询计算机系年龄在18~20岁的男学生的姓名和年龄。
Select sname,sage from student
where sdept = ‘计算机系’ and sage between 18 and 20
5.查询“C001”号课程的最高分。
Select max(grade) from sc where cno = ‘C001’
6.查询计算机系学生的最大年龄和最小年龄。
Select max(sage) 最大年龄,min(sage) 最小年龄 from student
Where sdept = ‘计算机系’
7.统计每个系的学生人数。
Select sdept,count(*) 人数 from student
Group by sdept
8.统计每门课程的选课人数和考试最高分。
Select cno,count(*)选课人数,max(grade) 最高分 from sc
Group by cno
9.统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果。
Select sno,count(*) 选课门数, sum(grade) from sc
Group by sno order by count(*) asc
10.查询选修“C002”号课程的学生的姓名和所在系。
Select sname,sdept from student s join sc on s.sno=sc.sno
Where cno = ‘C002’
11.查询计算机系年龄最大的前2位学生,列出姓名和年龄。
Select top 2 sname, sage from student
Where sdept = ‘计算机系’
Order by sage desc
12.查询学分最高的前3门课程(包括并列的情况),列出课程名、学分和开课学期。
Select top 3 with ties cname,credit,semester From course
Order by credit desc
13.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。
Select sname,cno,grade
From student s join sc on s.sno = sc.sno
Where grade > 80
Order by grade desc
14.查询哪些课程没有学生选修,要求列出课程号和课程名。
Select c.cno,cname from course c left join sc on c.cno = sc.cno
Where sc.cno is null
15.查询计算机系哪些学生没有选课,列出学生姓名。
Select sname from student s left join sc on s.sno = sc.sno
Where sdept = ‘计算机系’ and sc.sno is null
16.用子查询实现如下查询:
(1)查询选修了“C001”号课程的学生的姓名和所在系。
Select sname,sdept from student
Where sno in (select sno from sc where cno = ‘C001’)
(2)查询通信工程系成绩80分以上的学生的学号和姓名。
Select sno,sname from student
Where sdept = ‘通信工程系’ and sno in (
Select sno from sc where grade > 80)
(3)查询计算机系考试成绩最高的学生的姓名。
Select sname from student s join sc on s.sno = sc.sno
Where sdept = ‘计算机系’ and grade = (
Select max(grade) from sc join student s on s.sno=sc.sno
Where sdept = ‘计算机系’)
(4)查询年龄最大的男学生的姓名和年龄。
Select sname,sage from student
Where sage = (select max(sage) from student
where ssex = ‘男’)
and ssex = ‘男’
(5)查询“C001”号课程的考试成绩高于该课程平均成绩的学生的学号和成绩。
Select sno,grade from sc
Where cno = ‘C001’ and grade >(
Select avg(grade) from sc where cno = ‘C001’)
17.创建一个新表,表名为test_t,其结构为(COL1, COL 2, COL 3),其中,
COL1:整型,允许空值。
COL2:字符型,长度为10,不允许空值。
COL3:字符型,长度为10,允许空值。
试写出按行插入如下数据的语句(空白处表示空值)。
| COL1 | COL2 | COL3 |
| B1 | ||
| 1 | B2 | C2 |
| 2 | B3 |
COL1 int,
COL2 char(10) not null,
COL3 char(10))
Insert into test_t(COL2) values(’B1’)
Insert into test_t(COL1,COL2) values(1,’B2’)
Insert into test_t values(2,’B3’,NULL)
18.删除成绩小于50分的学生的选课记录。
Delete from sc where grade < 50
19.删除计算机系VB考试成绩不及格学生的VB选课记录。
Delete from sc
From sc join student s on s.sno = sc.sno
Join course c on c.cno = sc.cno
where cname = ‘VB’ and grade < 60
and sdept = ‘计算机系’
20.删除没人选的课程的基本信息。
Delete from course where cno not in(
Select cno from course)
21.将“C001”号课程的考试成绩加10分。
Update sc set grade = grade + 10
Where cno = ‘C001’
22.将计算机系所有选修“计算机文化学”课程的学生的成绩加10分。
Update sc set grade = grade + 10
Where sno in(select sno from student where sdept = ‘计算机系’)
And cno in(select cno from course where cname = ‘计算机文化学’)
第5章 索引和视图
1.索引的作用是什么?
答:索引可以加快数据的查询效率。
2.索引分为哪几种类型?分别是什么?它们的主要区别是什么
答:分为聚集索引和非聚集索引两种。聚集索引会对数据进行物理排序,非聚集索引不对数据进行物理排序。
3.在一个表上可以创建几个聚集索引?可以创建多个非聚集索引吗?
答:一个聚集索引。可以。
4.聚集索引一定是唯一性索引,对吗?反之呢?
答:不对。反之也不对。
5.在建立聚集索引时,数据库管理系统是真正将数据按聚集索引列进行物理排序。对吗?
答:对。
6.在建立非聚集索引时,数据库管理系统并不对数据进行物理排序。对吗?
答:对。
7.不管对表进行什么类型的操作,在表上建立的索引越多越能提高操作效率。对吗?
答:不对。
8.经常对表进行哪类操作适合建立索引?适合在哪些列上建立索引?
答:适合建立索引的情况:
●包含大量非重复值的列。
●使用下列运算符返回一个范围值的查询:BETWEEN AND、>、>=、< 和 <=。
●返回大型结果集的查询。
●经常被用作联接的列,一般来说,这些列是外键列。
●对ORDER BY或GROUP BY子句中指定的列进行索引,可以使数据库管理系统在查询时不必对数据再进行排序,因而可以提高查询性能。
适合在长度比较短的列上建立索引。
9.使用第4章建立的Student、Course和SC表,写出实现下列操作的SQL语句。
(1)在Student表上为Sname列建立一个聚集索引,索引名为:SnoIdx。
Create clustered index SnoIdx on student(sname)
(2)在Course表上为Cname列建立一个唯一的非聚集索引,索引名为:CNIdx
Create index CNIdx on course(cname)
(3)在SC表上为Sno和Cno建立一个组合的聚集索引,索引名为:SnoCnoIdx。
Create clustered index SnoCnoIdx on SC(sno,cno)
(4)删除Sname列上建立的SnoIdx索引。
10.试说明使用视图的好处。
答:利用视图可以简化客户端的数据查询语句,使用户能从多角度看待同一数据,可以提高数据的安全性,视图对应数据库三级模式中的外模式,因此提供了一定程度的逻辑性。
11.使用视图可以加快数据的查询速度,这句话对吗?为什么?
答:不对,因为通过视图查询数据时,比直接针对基本表查询数据多了一个转换过程,即从外模式到模式的转换。
12.使用第4章建立的Student、Course和SC表,写出创建满足下述要求的视图的SQL语句。
(1)查询学生的学号、姓名、所在系、课程号、课程名、课程学分。
Create view v1 As
Select s.sno,sname,sdept,c.cno,cname,credit
From student s join sc on s.sno = sc.sno
Join course c on c.cno = sc.cno
(2)查询学生的学号、姓名、选修的课程名和考试成绩。
Create view v2 As
Select s.sno,sname,cname,grade
From student s join sc on s.sno = sc.sno
Join course c on c.cno = sc.cno
(3)统计每个学生的选课门数,要求列出学生学号和选课门数。
Create view v3 As
Select sno,count(*) as total
From sc group by sno
(4)统计每个学生的修课总学分,要求列出学生学号和总学分(说明:考试成绩大于等于60才可获得此门课程的学分)。
Create view v4 As
Select sno,sum(credit) as total_credit
From sno join course c on c.cno = sc.cno
Where grade >= 60
Group by sno
13.利用第12题建立的视图,完成如下查询:
(1)查询考试成绩大于等于90分的学生的姓名、课程名和成绩。
Select sname,cname,grade From v2 where grade >= 90
(2)查询选课门数超过3门的学生的学号和选课门数。
Select * from v3 where total >= 3
(3)查询计算机系选课门数超过3门的学生的姓名和选课门数。
Select sname,total from v3 join student s on s.sno = v3.sno
Where sdept = ‘计算机系’ and total >= 3
(4)查询修课总学分超过10分的学生的学号、姓名、所在系和修课总学分。
Select v4.sno,sname,sdept,total_credit
From v4 join student s on s.sno = v4.sno
Where total_credit >= 10
(5)查询年龄大于等于20岁的学生中,修课总学分超过10分的学生的姓名、年龄、所在系和修课总学分。
Select sname,sage,sdept,total_credit
From v4 join student s on s.sno = v4.sno
Where sage >= 20 and total_credit >= 10
14.修改12题(4)定义的视图,使其查询每个学生的学号、总学分以及总的选课门数。
Alter view v4 As
Select sno,sum(credit) as total_credit,count(*) as total_cno
From sc join course c on c.cno = sc.cno
Group by sno
第 6 章 关系数据库规范化理论
1.关系规范化中的操作异常有哪些?它是由什么引起的?解决的办法是什么?
答:主要有插入异常、删除异常和修改异常,这些都是由数据冗余引起的,解决的办法是进行模式分解,消除数据冗余。
2.第一范式、第二范式和第三范式的关系的定义分别是什么?
答:第一范式:不包含重复组的关系(即不包含非原子项的属性)是第一范式的关系。
第二范式:如果R(U,F)∈1NF,并且R中的每个非主属性都完全函数依赖于主键,则R(U,F)∈2NF。
第三范式:如果R(U,F)∈2NF,并且所有的非主属性都不传递依赖于主键,则R(U,F)∈3NF。
3.什么是部分函数依赖?什么是传递函数依赖?请举例说明。
答:部分函数依赖:如果X→Y,并且对于X的一个任意真子集X’有X’→Y成立,则称Y部分函数依赖于X。
传递函数依赖:如果X→Y、Y→Z,则称Z传递函数依赖于X。
例1.对于关系模式:选课(学号,姓名,课程号,成绩)
该关系模式的主码是(学号,课程号),而有:学号→姓名
因此姓名对主码是部分函数依赖关系。
例2.对于关系模式:学生(学号,姓名,所在系,系主任)
该关系模式的主码是:学号,由于有:学号→所在系,所在系→系主任
因此系主任对学号是传递函数依赖关系。
4.第三范式的关系模式是否一定不包含部分依赖关系?
答:是。
5.对于主键只由一个属性组成的关系模式,如果它是第一范式关系模式,则它是否一定也是第二范式关系模式?
答:是。
6.设有关系模式:学生修课管理(学号,姓名,所在系,性别,课程号,课程名,学分,成绩)。设一个学生可以选多门课程,一门课程可以被多名学生选。一个学生有唯一的所在系,每门课程有唯一的课程名和学分。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。
答:候选码:(学号,课程号)
第一范式。因为有:学号→姓名,因此存在部分函数依赖(学号,课程号)p→姓名
第三范式关系模式:
学生(学号,姓名,所在系,性别)
课程(课程号,课程名,学分)
考试(学号,课程号,成绩),学号为引用学生的外键,课程号为引用课程的外键。
7.设有关系模式:学生(学号,姓名,所在系,班号,班主任,系主任),其语义为:一个学生只在一个系的一个班学习,一个系只有一个系主任,一个班只有一名班主任,一个系可以有多个班。请指出此关系模式的候选码,判断此关系模式是第几范式的,若不是第三范式的,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。
答:候选码:学号
属于第二范式。
但有:学号→班号,班号→班主任,因此存在传递函数依赖:学号传递→班主任。
第三范式关系模式:
学生(学号,姓名,所在系,班号),班号为引用班的外键,所在系为引用系的外键。
班(班号,班主任)系(系名,系主任)
8.设有关系模式:教师授课(课程号,课程名,学分,授课教师号,教师名,授课时数),其语义为:一门课程(由课程号决定)有确定的课程名和学分,每名教师(由教师号决定)有确定的教师名,每门课程可以由多名教师讲授,每名教师也可以讲授多门课程,每名教师对每门课程有确定的授课时数。指出此关系模式的候选码,判断此关系模式属于第几范式,若不属于第三范式,请将其规范化为第三范式关系模式,并指出分解后的每个关系模式的主键和外键。
答:候选码:(课程号,授课教师号)
属于第一范式。因为有:课程号→课程名,因此存在部分函数依赖关系:(课程号,授课教师号)p→课程名
第三范式关系模式:
课程(课程号,课程名,学分)
教师(教师号,教师名)
授课(课程号,教师号,授课时数),课程号为引用课程的外键,教师号为引用教师的外键。
第7章 数据库设计
1.试说明数据库设计的特点。
答:综合性,结构设计与行为设计相分离。
2.简述数据库的设计过程。
答:数据库设计一般包含如下过程:
●需求分析。
●结构设计,包括概念结构设计、逻辑结构设计和物理结构设计。
●行为设计,包括功能设计、事务设计和程序设计。
●数据库实施,包括加载数据库数据和调试运行应用程序。
●数据库运行和维护阶段。
3.数据库结构设计包含哪几个过程?
答:概念结构设计、逻辑结构设计和物理结构设计。
4.需求分析中发现事实的方法有哪些?
答:常用的有检查文档、面谈、观察操作中的业务、研究和问卷调查等。
5.概念结构应该具有哪些特点?
答:
∙有丰富的语义表达能力。
∙易于交流和理解。
∙易于更改。
∙易于向各种数据模型转换,易于导出与DBMS有关的逻辑模型。
6.概念结构设计的策略是什么?
答:
∙自底向上。先定义每个局部应用的概念结构,然后按一定的规则把它们集成起来,从而得到全局概念结构。
∙自顶向下。先定义全局概念结构,然后再逐步细化。
∙由里向外。先定义最重要的核心结构,然后再逐步向外扩展。
∙混合策略。
7.什么是数据库的逻辑结构设计?简述其设计步骤。
答:逻辑结构设计的任务是把在概念结构设计中设计的基本E-R模型转换为具体的数据库管理系统支持的组织层数据模型。
逻辑结构设计一般包含两个步骤:
(1)将概念结构转换为某种组织层数据模型。
(2)对组织层数据模型进行优化。
8.把E-R模型转换为关系模式的转换规则有哪些?
答:转换的一般规则如下:
一个实体转换为一个关系模式。实体的属性就是关系的属性,实体的码就是关系的主键。
对于实体间的联系有以下不同的情况:
(1)1∶1联系一般是将联系与任意一端实体所对应的关系模式合并,即在一个实体的关系模式的属性中加入另一个实体的码和联系本身的属性。
(2)1∶n联系一般与n端所对应的关系模式合并,即在n端对应的关系模式中加入1端实体的码以及联系本身的属性。
(3)m∶n联系必须转换为一个的关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为此关系模式的属性,且关系模式的主键包含各实体的码。
(4)有相同主键的关系模式可以合并。
9.数据模型的优化包含哪些方法?
答:数据模型的优化通常以关系规范化理论为指导,并考虑系统的性能。具体为:
(1)确定各属性间的函数依赖关系。根据需求分析阶段得出的语义,分别写出每个关系模式的各属性之间的函数依赖以及不同关系模式中各属性之间的数据依赖关系。
(2)对各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。
(3)判断每个关系模式的范式,根据实际需要确定最合适的范式。
(4)根据需求分析阶段得到的处理要求,分析这些模式对于这样的应用环境是否合适,确定是否要对某些模式进行分解或合并。
(5)对关系模式进行必要的分解,以提高数据的操作效率和存储空间的利用率。常用的分解方法是水平分解和垂直分解。
10.设有如图7-15所示的两个E-R模型,分别将它们转换为合适的关系模式,并指出每个关系模式的主键和外键。
答:对图书、读者E-R模型,转换后的关系模式为:
图书(书号,书名,出版日期,作者)
读者(读者编号,读者姓名,联系电话,单位)
借阅(书号,读者编号,借书日期)书号为引用图书的外键,读者编号为引用读者的外键。
对顾客、商品E-R模型,转换后的关系模式为:
顾客(顾客号,顾客名,联系电话)
商品(商品编号,商品名称,库存量,商品分类)
销售人员(职工编号,职工名称,所在部门),
订购(顾客号,职工编号,商品编号,订购日期,订购数量),顾客号为引用顾客的外键,职工编号为引用销售人员的外键,照片编号为引用商品的外键。
第8章 事务与并发控制
1.试说明事务的概念及四个特征。
答:事务的概念及四个特征为原子性、一致性、隔离性和持久性。原子性指事务的原子性是指事务是数据库的逻辑工作单位,事务中的操作,要么都做,要么都不做。一致性指定事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。隔离性指数据库中一个事务的执行不能被其他事务干扰。持久性指事务一旦提交,则其对数据库中数据的改变就是永久的。
2.事务处理模型有哪两种?
答:一种是ISO制定的事务处理模型,即明尾暗头;另一种是T-SQL事务处理模型,即事务有明确的开始和结束标记。
3.在数据库中为什么要有并发控制?
答:为了防止并发事务之间的相互干扰,也为了保证事务的正确。
4.并发控制的措施是什么?
答:加锁。
5.设有三个事务:T1、T2和T3,其所包含的动作为:
T1:A = A + 2;T2:A = A * 2;T3:A = A ** 2(注:A**2表示A的平方)
设A的初值为1,若这三个事务并行执行,则可能的调度策略有几种?A的最终结果分别是什么?
答:T1→T2→T3:A=36
T1→T3→T2:A=18
T2→T1→T3:A=16
T2→T3→T1:A=11
T3→T1→T2:A=6
T3→T2→T1:A=4
6.当某个事务对某段数据加了S锁之后,在此事务释放锁之前,其他事务还可以对此段数据添加什么锁?
答:S锁(共享锁)。
7.什么是死锁?
答:事务为得到某个资源而处于无限等待状态,就是死锁。
8.怎样保证多个事务的并发执行是正确的?
答:遵守两段锁协议即可。
第9章 SQL Server 2005基础
1. SQL Server 2005提供了几个版本,每个版本分别适用于哪些操作系统?
答:提供了企业版、标准版、工作组版、开发板、简易版。
对操作系统的要求:
| 版本 | 需要的常用操作系统 |
| 企业版 | ●Windows Server 2003的Standard Edition、Enterprise Edition和Datacenter Edition版本,同时安装了SP1或更高版本。 ●Windows 2000的Server、Advanced Server和Datacenter Server版本,同时安装了SP4。 |
| 标准版、工作组版 | ●满足企业版的全部操作系统。 ●Windows 2000的Professional,同时安装SP4。 ●Windows XP Professional,同时安装SP2或更高版本。 |
| 简易版 | ●满足企业版、标准版和工作组版的全部操作系统。 ●Windows XP Home Edition,同时安装SP2或更高版本。 ●Windows Server 2003 Web Edition,同时安装SP1或更高版本。 |
| 开发版 | ●满足企业版、标准版和工作组版的全部操作系统。 ●Windows XP Home Edition,同时安装SP2或更高版本。 |
答:“Windows 身份验证模式”表示只允许Windows用户访问SQL Server,而“混合模式”表示同时允许Windows用户和非Windows用户访问SQL Server。
3. SQL Server实例的含义是什么?实例名的作用是什么?
答:实例代表一个实际安装的SQL Server,实例名标识了每个不同的实例。
4. SQL Server的默认安装位置是什么?
答:C:\\Program Files\\Microsoft SQL Server
5. SQL Server 2005的核心引擎是什么?
答:SQL Server(MSSQLSERVER)。
6. 为保证客户和SQL Server数据库服务器能够正常连接,对客户端和服务器端的网络协议有什么要求?
答:客户端和服务器端必须至少启用了一个相同的网络协议。
7. SQL Server 2005提供的启动SQL Server服务的工具是哪个?通过这个工具可以将服务设置成几种状态?
答:SQL Server Configuration Manager。可以将服务设置为:自动、手动和已禁止三种状态。
8. 简单说明正常的卸载SQL Server 2005的过程。
答:首先停止SQL Server 2005的全部服务(如果已经被启动的话),然后再通过Windows的“添加/删除程序”进行卸载。
第10章 创建和管理数据库
1.根据数据库用途的不同,SQL Server将数据库分为哪两类?
答:系统数据库和用户数据库。
2.安装完SQL Server之后系统提供了哪些系统数据库?每个系统数据库的作用是什么?
答:4个系统数据库:master、msdb、model和tempdb。
●master:用于记录SQL Server系统中所有系统级信息。
●msdb:供SQL Server代理服务调度报警和作业以及记录操作员时使用,保存关于调度报警、作业、操作员等信息。
●model:包含所有用户数据库的共享信息。
●tempdb:是临时数据库,用于存储用户创建的临时表、用户声明的变量以及用户定义的游标数据等,并为数据的排序等操作提供一个临时工作空间。
3.文件组的作用是什么?每个数据库至少包含几个文件组?
答:文件组是由一组文件组成的逻辑组织,其作用是提高数据访问性能,文件组中的文件可以是位于不同的磁盘空间上的文件。每个数据库至少保护一个主文件组:PRIMARY。
4.数据库的系统信息存放在哪个文件组中?用户能删除这个文件组吗?
答:存放在主文件组中。不能删除。
5.SQL Server数据库由哪两类文件组成?这些文件的推荐扩展名分别是什么?
答:数据文件和日志文件。数据文件中主数据文件的推荐扩展名为:.mdf;辅助数据文件的推荐扩展名为:.ndf。日志文件的推荐扩展名为:.ldf。
6. SQL Server数据库可以包含几个主数据文件?几个辅助数据文件?几个日志文件?
答:1个主数据文件,0个或多个辅助数据文件,1个或多个日志文件。
7. 数据文件和日志文件分别包含哪些属性?
答:包含:逻辑文件名、物理存储位置、初始大小、增长方式、最大大小5个属性。
8. SQL Server中数据的存储单位是什么?存储单位对存储数据有何?
答:数据页。数据页是数据的最小存储分配单位,其大小也就是表中一行数据的最大大小,因为行不能跨页存储。
9. SQL Server 2005每个数据页的大小是多少?数据页的大小对表中一行数据大小的有何关系?
答:8KB。表中一行数据的大小不能超过一个数据页的大小。
10.如何估算某个数据表所占的存储空间?如果某个数据表包含20000行数据,每行的大小是5000字节,则此数据库表大约需要多少存储空间?在这些存储空间中,有多少空间是浪费的?
答:根据数据是按数据页存储,且行不能跨页存储的原则即可估算出一个数据表所占的大致空间。需要160MB。有差不多3/8是浪费的。
11.用户创建数据库时,对数据库主数据文件的初始大小有什么要求?
答:不能小于Model数据库的大小。
第12章 安全管理
1.通常情况下,数据库中的权限划分为哪几类?
答:划分为两类。一类是对数据库系统进行维护的权限,另一类是对数据库中的对象和数据进行操作的权限。
2. 数据库中的用户按其操作权限可分为哪几类,每一类的权限是什么?
答:数据库中的用户按其操作权限的不同可分为如下三类:
(1)系统管理员。在数据库服务器上具有全部的权限。
(2)数据库对象拥有者。对其所拥有的对象具有全部权限。
(3)普通用户。只具有对数据库数据的增、删、改、查权限。
3. SQL Server 2005的登录名的来源有几种?分别是什么?
答:有两种:一种是Windows用户,另一种是SQL Server用户(非Windows用户)。
4. 权限的管理包含哪些内容?
答:包括授权、授权和拒绝权限三种。
5. 数据库角色的作用是什么?
答:角色的作用是简化权限管理。
6. 在SQL Server 2005中,角色分为哪几类?
答:角色分为固定的服务器角色、固定的数据库角色和用户定义的角色。
7.用户定义的角色的作用是什么?
答:用户定义的角色可简化实际的安全管理,使授权是针对一组用户而不是每一个用户。
8.系统管理员角色的名字是什么?
答:sysadmin
9.若要让某个用户在某个数据库中具有全部的操作权,应将其放置在哪个角色中最合适?
答:db_owner
10.若要让某个用户在某个数据库中具有全部数据的增、删、改的权限,应将其放置在哪个角色中最合适?
答:db_datawriter
11.与系统定义的其他数据库角色相比,public角色的特殊性是什么?
答:所有的数据库用户都自动是public角色中的成员,给public授权就相当于给数据库中的全体用户授权。
12.写出实现下述功能到T-SQL语句。
(1)建立一个Windows身份验证的登录名,Windows域名为:CS,登录名为:Win_Jone。
答:CREATE LOGIN [CS\Win_Jone] FROM WINDOWS;
(2)建立一个SQL Server身份验证的登录名,登录名为:SQL_Stu,密码为:3Wcd5sTap43K。
答:CREATE LOGIN SQL_Stu WITH PASSWORD = '3Wcd5sTap43K'
(3)删除Windows身份验证的登录名,Windows域名为:IS,登录名为:U1。
答:DROP LOGIN [IS\\U1]
(4)删除SQL Server身份验证的登录名,登录名为:U2。
答:DROP LOGIN U2
(5)建立一个数据库用户,用户名为SQL_Stu,对应的登录名为SQL Server身份验证的SQL_Stu。
答:CREATE USER SQL_Stu
(6) 建立一个数据库用户,用户名为Jone,对应的登录名为Windows身份验证的Win_Jone,Windows域名为:CS。
答:CREATE USER Jone FOR LOGIN [CS\Win_Jone]
(7)将SQL Server身份验证的User1登录名添加到系统管理员角色中。
答:EXEC sp_addsrvrolemember 'User1', 'sysadmin'
(8)将数据库用户Jone添加到合适的角色中,使其具有所在数据库到全部表到增、删、改、查的权限。
答:EXEC sp_droprolemember 'db_datawriter', 'Jone'
EXEC sp_droprolemember 'db_datareader', 'Jone'
(9)从系统管理员角色中删除User2登录名。
答:EXEC sp_dropsrvrolemember 'User2', 'sysadmin'
(10)建立一个用户定义的数据库角色,角色名为:NewRole。
答:CREATE ROLE NewRole
(11)授予用户u1具有对course表的插入和删除权。
答:GRANT INSERT, DELETE ON Course TO u1
(12)授予用户u1具有对Course表的删除权。
答:GRANT DELETE ON Course TO u1
(13)收回u1对course表的删除权。
答:REVOKE DELETE ON Course FROM u1
(14)拒绝用户u1获得对Course表的更改权。
答:DENY UPDATE ON Course TO u1
(15)授予用户u1具有创建表和视图的权限。
答:GRANT CREATE TABLE, CREATE VIEW TO u1
(16)收回用户u1创建表的权限。
答:REVOKE CREATE TABLE FROM u1
第13章 备份和恢复数据库
1.在确定用户数据库的备份周期时,应考虑哪些因素?
答:要考虑数据的更改频率和用户能够允许丢失多少数据。
2. 对用户数据库和系统数据库分别应该采取什么备份策略?
答:对系统数据库应采用修改之后即备份的策略,对用户数据库应采用周期性备份的策略。
3. SQL Server的备份设备是一个的物理设备吗?
答:不是。
4. 在创建备份设备时需要指定备份设备的大小吗?备份设备的大小是由什么决定的?
答:不需要。备份设备的大小由备份内容决定。
5. SQL Server 2005提供了几种备份数据库方式?
答:三种:完整、差异和事务日志备份。
6. 日志备份对数据库恢复模式有什么要求?
答:不能是“简单”的。
7. 第一次对数据库进行备份时,必须使用哪种备份方式?
答:完整备份。
8. 差异备份备份的是哪段时间的哪些内容?
答:从上次完整备份到当前时刻数据库所发生的所有变化内容。
9. 日志备份备份的是哪段时间的哪些内容?
答:备份从上次备份到当前时刻的日志内容。
10.差异备份备份数据库日志吗?
答:备份。
11.恢复数据库时,对恢复的顺序有什么要求?
答:(1)恢复最近的完整数据库备份。(2)恢复完整备份之后的最近的差异数据库备份(如果有的话)。(3)按事务日志备份的先后顺序恢复自完整备份或差异备份之后的所有日志备份。
12.SQL Server在备份数据库时允许用户访问数据库吗?在恢复数据库时呢?
答:备份时允许,恢复时不允许。下载本文