学号 char (8), 课程号 char (7), 成绩 Numeric (4,2))
(2)查询刘峰教师所授课程号,课程名; 参考答案:
Select课程号, 课程名 from课程表 where任课教师=? 刘峰? (3)查询年龄大于20岁的所有男同学的学号、姓名; 参考答案:
Select 学号, 姓名 from 学生表 where 性别=1 and 年龄>20 (4)查询至少选修了两门课程(含两门)的学生学号; 参考答案:
select 学号 from 成绩 group by 学号
having count(学号)>=2
(5)查询王文芳同学选修的所有课程的课程号; 参考答案:
Select 课程号 from 成绩表, 学生表
Where学生表.姓名=? 王文芳? and 学生表.学号=成绩表.学号 (6)查询王文芳同学不学的课程的课程号; 参考答案:
select 课程号 from 成绩表
where 课程号 not in (select 课程号 from 学生表,成绩表 where 学生表.姓名='王文芳' and 学生表.学号=成绩表.学号) (7)查询所有上刘峰老师课程的学生学号; 参考答案:
Select 学号 from 成绩表,课程表,学生表
Where 课程表.任课教师='刘世峰' and 课程表.课程号=成绩表.课程号 and 课程表.学号=成绩表.学号 (8)查询所有选修“数据库原理”的学生的学号; 参考答案:
Select 学号 from 成绩表,课程表
where 课程表.课程名='数据库技术' and 课程表.课程号=成绩表.课程号
(9)向学生表中插入一条记录(?2003001?,?吴红?,21,?女?);(1表示女,0表示男) 参考答案:
insert into 学生表 values ('2003001','吴红','21',1)
(10)删除三张表中所有学号为20020001的学生信息; 参考答案:
Delete from学生表 where 学号=? >20020001? Delete from学生表 where 学号=? 20020001?
(11)把学号为20030002的学生的年龄改为22岁; 参考答案:
Update 学生表 set 年龄=?22? where学号=?20030002?
第三章 思考与练习题 一、选择题
6
1.设一个关系为R,如果它的每个属性都是不可再分的,则称这个关系是符合( A )。 A、第一范式 B、第二范式 C、第三范式 D、BNC范式
2.在第一个关系中出现,在第二个关系中不出现的记录组成的关系称为两个关系的( C )。 A、交 B、并 C、差
D、笛卡儿积 二、简答题
1.设关系模式R有N个属性,在模式R上可能成立的函数依赖有多少个? 参考答案: 函数依赖有N×(N-1)个
2.设有关系模式R(职工号,职工名,项目号,项目名,工资),假设一个职工可参加多个项目,在每个项目中各领一份工资。那么请回答以下问题: (1)请写出这个关系模式的函数依赖和主关键字;
函数依赖包括:职工号→职工名,项目号→项目名,(职工号,项目号)→工资 主键为(职工号,项目号)
(2)这个关系符合第几范式,为什么?
这个关系符合第一范式,因为它的每个属性都不可再分。 (3)请举例说明,这个关系存在哪些问题;
这个关系没有达到第二范式,可能出现数据冗余和操作异常。
例如,某个职工参与了多个项目的工作,他的职工号、职工名会重复多次存储。同样,如果一个项目有多名职工参加,项目号和项目名也会重复我次存储。另外,如果现在增加了一个新的项目,但暂时还没有安排职工参加,那么由于主键是(职工号,项目号),这个项目的信息可能无法插入。 (4)请把这个关系模式分解成3NF,并说明理由。 修改后的各个关系如下:
职工关系=(职工号,职工名) 项目关系=(项目号,项目名)
职工选择项目关系=(职工号,项目号,工资)
(注:此处的工资是指职工参加某个项目得到的劳动报酬) 3.关系完整性的主要内容是什么?为什么要保证关系的完整性? 参考答案:
关系完整性就是关系模型中数据的正确性、一致性和有效性。关系完整性又包括实体完整性、参照完整性和用户定义的完整性三个方面。
只有保证了关系的完整性,才能使数据库中的数据正确、一致和有效。
4.SQL Server中进行关系完整性的主要方法是什么,请写出相应的SQL语句。 参考答案:
1)SQL Server通过约束机制来实现数据库完整性保护。主要包括:Primary Key约束、Foreign Key约束、Default约束、Unique约束、Check约束等。 Primary Key约束:
学号 char (8) NOT NULL PRIMARY KEY(学号)
7
Foreign Key约束:
学号 char (8) NOT NULL REFERENCES 学生表(学号) Default约束:
成绩 numeric(9,2) DEFAULT 0.00 Unique约束:
学号 char (8) NOT NULL UNIOQUE(学号) Check约束:
年龄 int CHECK (年龄)17 and 年龄<25) 2)使用规则实施数据的完整性。 创建规则的语法结构如下:
CREATE RULE 规则名 AS 条件表达式 3)使用默认实施数据完整性管理。 创建默认的语法如下:
CREATE DEFAULT 默认名 AS 默认值
5.为什么要进行规范化?规范化的相关理论是什么?请简要说明。 参考答案:
为确保数据库设计的正确性,在数据库逻辑设计阶段,常使用关系规范化理论来指导关系型数据库的设计。其基本思想是,每个关系都应满足一定的规范,才能使关系模式设计合理,达到减少冗余,提高查询效率的目的。
一个好的数据库关系,应该没有数据冗余、更新异常、插入异常、删除异常问题的存在,这就必须进行规范化处理。
规范化使用的理论是函数依赖。
6.什么是一个“好”的关系模式,一个“不好”的关系模式有什么缺点? 参考答案:
“好”的关系模式通常是指符合第三范式要求的关系,“不好”的关系模式会存在数据冗余、更新异常、插入异常、删除异常等问题。
7.请写出一个符合第三范式的关系模式,并说明理由。 参考答案:
学生=(学生号,姓名,性别,专业) 课程=(学生号,课程号,成绩) 选课=(课程号,课程名,课程学分)
第四章思考与练习题 一、填空题
1.数据库设计一般包括需求分析、概念设计、逻辑设计、物理设计、数据库实施和运行维护等阶段。 2.数据库应用系统的建设包括结构设计和行为设计两个方面。
3.数据库设计的主要原则包括表设计原则、字段设计原则和其他原则。 4.E-R图的设计关键在于对实体、联系的选择和表示。
5.物理设计的主要内容包括存储记录的格式设计、存储方法设计、访问方法设计以及完整性和安全性考虑。 二、简答题
1.请简要说明数据库应用系统设计的步骤。
8
参考答案:
数据库应用系统设计的步骤包括需求分析、概念设计、逻辑设计和物理设计。 2.数据库设计的目的是什么,请谈谈你的理解。 参考答案:
数据库设计指的是设计数据库及其应用系统的技术,是指对于一个给定的应用环境,包括硬件环境和操作系统、数据库管理系统(DBMS)等软件环境,如何使用这个环境来表达用户的要求,构造最优的数据库模式,建立数据库及围绕数据库展开的应用系统,使之能够有效地收集、存储、操作和管理数据,满足企业组织中各类用户的应用需求(信息需求和处理需求)。 3.基本表设计的主要原则是什么,坚持这些原则有什么好处? 参考答案:
基本表设计最主要的原则是关系规范化,尽可能达到第三范式。规范化有助于消除数据库中的数据冗余,减少更新异常。规范化有好几种形式,但第三范式通常被认为在性能、扩展性和数据完整性方面达到了最好平衡。简单来说,遵守第三范式标准的数据库的表设计原则是:“One Fact in One Place”(一个事实对应一个地方),即某个表只包括其本身基本的属性,当不是它们本身所具有的属性时需进行分解。表之间的关系通过外键相连接。
4.进行SQL Server数据库设计时,一般有哪些命名规则? 参考答案:
首先,命名的长度应尽量充足。假设某企业现有职工在一千人以内,如果用数字表示职工号的话,职工号的长度为3位即可,它最大可以表示999个职工。但是,如果考虑到企业未来的发展,那么职工号最好设为4位,当企业职工数目突破千人时,根本无需重构整个数据库。
其次,小心保留词。要保证字段名没有与SQL等保留词或者常用访问方法名发生冲突。
最后,慎用使用触发器。触发器在保证数据完整性方面发挥着积极作用,但它同时也会带来效率方面的问题,因此要慎用。触发器的功能通常可以用其他方式实现。 5.什么是数据流程图,数据字典的主要作用是什么,谈谈你的理解。 参考答案:
数据流图(Data Flow Diagram,简记DFD),是在业务流程分析基础上,描述实际数据流动和加工过程的图形表示法,它一般有4种符号,即外部实体、数据流、加工和存储。外部实体数据的来源和去向;数据流用带箭头的连线表示,反映数据的流动方向;加工用椭圆、圆或方框代表(本教材利用圆形表示加工),表示对数据的加工处理动作;存储表示数据的存档情况。
数据字典(Data Dictionary,简记DD),是对数据流程图中数据流和存储结构的描述。在数据库应用系统设计中,数据字典是表、视图设计的主要依据。 6.什么是E-R图,它的作用是什么? 参考答案:
E-R图是E-R(实体-关系)方法的重要组成部分。E-R方法是描述概念模型的有力工具。E-R图方法是一种有效的信息抽象方法。在E-R图中,用长方形表示实体,用椭圆形表示属性,用菱形表示联系。在图形内标识它们的名字,它们之间用无向线段相连,表示联系的线段上标明是哪种联系。 它的作用是采用E-R图模型将现实世界的信息结构统一用实体、属性以及实体之间的联系来描述。 7.简要说明需求分析阶段的主要任务和目的。 参考答案:
需求分析阶段的主要目的是回答“干什么”的问题。需要从多方面对拟开发数据库应用系统的企事业单位进行调查,收集和分析各项应用对信息和处理两方面的需求。了解和掌握数据库应用系统开发对象(或称用户)的工作业务流程和每个岗位、每个环节的职责,了解和掌握信息从开始产生或建立,到最后输出、存档或消亡所经过的传递和转换过程,了解和掌握各种人员在整个系统活动过程中的作用;通过同用户充分地交流和沟通,决定那些工作应由计算机来做,哪些工作仍由手工来做,
9
决定各种人员对信息和处理各有什么要求,对视屏操作界面和报表输出格式各有什么要求,对数据(信息)的安全性(保密性)和完整性各有什么要求等等。需求分析阶段的主要工作就是,通过调查从用户处获得对数据库的下列需求。
信息需求:用户将从数据库中获得的信息的内容和性质,有信息要求导出数据要求,即在数据库中存储哪些数据。
处理需求:用户要完成什么处理功能,对某种处理的执行频度、用户要求的响应时间,以及处理的方式是联机处理还是批处理等。 安全性和完整性的约束
第五章思考与练习题 一、简答题
1.请简要说明数据库安全机制? 参考答案:
一个用户访问SQL Server必须要经过4个层次的安全控制,操作系统的安全性;服务器的安全性;数据库的安全性;表和列的安全性。从上述流程可以看出,用户使用SQL Server时,需要经过两个安全性阶段:身份验证和权限认证。
身份验证阶段系统只检验用户是否有连接SQL Server实例的权力,如果身份验证通过了,只表示用户可以连接SQL Server实例,否则系统将拒绝用户的连接。然后需要检验用户是否有访问服务器上数据库的权限,为此需要授予每个数据库中映射到用户登录的账号访问权限,权限认证就可以控制用户在数据库中进行的操作。
2.登录账号和用户账号的含义是什么?它们有什么区别联系? 参考答案:
登录账号用于身份验证,使得用户到达登录到SQL Server服务器,属于服务器层面,相当于大门的钥匙;用户账号用于权限验证,属于数据库层面,相当于自己房间的钥匙。用户账号在定义时便与一个登录账号相关联,即任何一个用户账号背后都有一个登录账号。 3.请简要说明使用企业管理创建登录账号和用户账号的过程。 参考答案:
(1)在SQL Server的企业管理器下,展开“SQL Server组”文件夹,找到需要建立登录账号的服务器并展开其文件夹,再展开“安全性”文件夹,在“登录”选项上右击鼠标,在出现的快捷菜单中单击“新建登录”菜单命令,打开“SQL Server登录属性->新建登录”对话框。
(2)SQL Server支持“Windows身份验证”和单击“SQL Server身份验证”两种认证模式。选择“SQL Server身份验证”单选钮,在“名称”文本框中输入要创建的登录账号名称,例如“mysa”,在“身份验证”选项组中,并输入密码。
(3)设置完毕后,单击“确定”按钮,即可完成登录账号的创建。 接下来,开始创建用户账号,基本方法是:
(1)在企业管理器中,展开SQL Server组及其服务器,在“数据库”文件夹中,展开某一数据库,例如“进销存”的文件夹,然后在“用户”选项上右击,在弹出的快捷菜单中选择“新建数据库用户”命令,打开新建用户对话框。
(2)单击“登录名”下拉列表框右端的下拉箭头,会看到刚刚创建的“mysa”登录帐号。选择“mysa”登录账号,此时“用户名”文本框中自动显示为“mysa”。可以更改“用户名”文本框中的用户名,也可以在“数据库角色成员”列表框中选择新建用户应该属于的数据库角色。
(3)设置完毕后,单击“确定”按钮,即可在“进销存”数据库中创建一个新的用户账号。如果不想创建用户账号,单击“取消”按钮即可。
4.如何对用户账号进行授权管理,一般有哪些权限,请简要说明。
10