第5章 视图、存储过程与函数
5.1.4 视图的作用
• • • • 简化数据查询语句 使用户能从多角度看到同一数据 提高了数据的安全性 提供了一定程度的逻辑独立性
5.2 存储过程
• 存储过程是 SQL 语句和控制流语句的预编 译集合,它以一个名称存储并作为一个单元 处理,应用程序可以通过调用的方法执行存 储过程。 • 它使得对数据库的管理和操作更加容易、效 率更高。
创建示例
• 例2.创建统计指定课程的选课人数的函数。
CREATE FUNCTION dbo.f_count(@cname varchar(20)) RETURNS int AS BEGIN DECLARE @x int SELECT @x=count(*) from course c join sc on o = o WHERE cname = @cname RETURN @x END
5.3ቤተ መጻሕፍቲ ባይዱ2 创建和调用标量函数
• 定义标量函数 CREATE FUNCTION [ 拥有者名.] 函数名 ( [ { @参数名 [AS] 标量数据类型 [ = def ault ] } [ ,...n ] ] ) RETURNS 返回值类型 [ AS ] BEGIN 函数体 RETURN 标量表达式 END
创建带输入参数和一个输出参数的存储过程
• 统计指定课程的平均成绩,并将统计的结果 用输出参数返回。
CREATE PROCEDURE AvgGrade @cn char(20), @avg_grade int output AS SELECT @avg_grade = AVG(Grade) FROM SC JOIN Course C ON o = o WHERE Cname = @cn
调用参数有默认值的存储过程
EXEC student_grade3 '吴宾'
• 等价于执行: EXEC student_grade3 '吴宾', '数据库基础'
创建带有多个输入参数并均指定默认值的 存储过程
• 查询指定系、指定性别的学生中年龄大于等于指定年 龄的学生的情况。系的默认值为“计算机系”,性别 的默认值为“男生”, 年龄的默认值为20。 CREATE PROC P_Student @dept char(20) = '计算机系', @sex char(2) = '男', @age int = 20 AS SELECT * FROM Student WHERE Sdept = @dept AND Ssex = @sex AND Sage >= @age
5.3 用户自定义函数
• • • • • 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 函数概念 创建和调用标量函数 创建和定义内嵌表值函数 创建和调用多语句表值函数 更改和删除函数
5.3.1 函数概念
• 函数是由一个或多个SQL 语句组成的子程序,它 可用于封装代码以提供代码共享的功能。 • 在概念上类似于一般的程序设计语言中定义的函 数。 • SQL Server 2000 支持三种用户自定义函数: • 标量函数 • 内嵌表值函数 • 多语句表值函数
创建示例
• 例1.创建计算立方体的体积的函数。三个输入参数, 分别为立方体的长、宽和高,类型均为整型。 CREATE FUNCTION dbo.CubicVolume (@CubeLength int, @CubeWidth int, @CubeHeight int) RETURNS int AS BEGIN RETURN ( @CubeLength * @CubeWidth * @CubeHe ight ) END
基本表1 基本表 基本表2 基本表
视图
5.1.2 定义视图
• 语法:
CREATE VIEW <视图名> [(视图列名表)] AS 查询语句
定义单源表视图
• 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno, Sname, Sage FROM Student WHERE Sdept = '信息系'
5.2.1 存储过程概念
• SQL 语言是应用程序和 SQL Server 数据库之间 的主要编程接口。使用SQL语言编写代码时,可用 两种方法存储和执行代码。
• 一种是在客户端存储代码,并创建向数据库管理系统 发送SQL命令(或SQL语句)并处理返回结果的应用程 序; • 第二种是将这些发送的SQL语句存储在数据库管理系 统中,这些存储在数据库管理系统中的SQL语句就是 存储过程。
创建带有输出参数的存储过程
• 计算两个数的和。
CREATE PROCEDURE sum @var1 int, @var2 int, @var3 int output As Set @var3 = @var1 * @var2
• 执行此存储过程:
Declare @res int Execute Proc1 5,7,@res output Print @res
在已有视图上定义新视图
• 建立信息系选修了‘c01’号课程且成绩在90 分以上的学生的视图。 CREATE VIEW V_IS_S2 AS SELECT Sno, Sname, Grade FROM V_IS_S1 WHERE Grade >= 90
定义带表达式的视图
• 定义一个反映学生出生年份的视图。 CREATE VIEW BT_S(Sno, Sname, Sbirth) AS SELECT Sno, Sname, 2005-Sage FROM Student
含分组统计信息的视图
• 定义一个存放每个学生的学号及平均成绩的 视图。 CREATE VIEW S_G(Sno, AverageGrade) AS SELECT Sno, AVG(Grade) FROM SC GROUP BY Sno
5.1.3 删除视图
• 格式: DROP VIEW <视图名> • 例.删除前边定义的IS_Student视图。 DROP VIEW IS_Student
创建带输入参数的存储过程
• 查询某个指定系学生的考试情况,列出学生的姓 名、所在系、课程名和考试成绩。 CREATE PROCEDURE student_grade2 @dept char(20) AS SELECT Sname, Sdept, Cname, Grade FROM Student s INNER JOIN sc ON s.sno = sc.sno INNER JOIN course c ON o = o WHERE Sdept = @dept
执行
• 执行1:不提供任何参数值。 EXEC P_Student • 执行2:提供全部参数值。 EXEC P_Student '信息系', '女', 19 • 执行3:只提供第二个参数的值。
EXEC P_Student @sex = '女‘
• 执行4:只提供第一个和第三个参数的值。 EXEC P_Student @sex='女' , @age = 19
创建带输入参数和多个输出参数的存储过程
• 统计指定课程的平均成绩和选课人数,将统 计的结果用输出参数返回。
CREATE PROCEDURE Avg_Count @cn char(20), @avg_grade int output, @total int output AS SELECT @avg_grade = AVG(Grade), @total = COUNT(*) FROM SC JOIN Course C ON o = o WHERE Cname = @cn
高等院校计算机教材系列
数据库技术 应用及实验指导
第5章 视图、存储过程和用户自定义函数
• 5.1 视图 • 5.2 存储过程 • 5.3 用户自定义函数
5.1 视图
• 5.1.1 • 5.1.2 • 5.1.3 • 5.1.4 视图概念 定义视图 删除视图 视图的作用
5.1.1 视图概念
• 视图可以被看成是虚拟表。 • 视图中的数据不物理地存储在数据库内。 • SELECT 语句的结果集构成了视图的内容。
调用标量函数
• 调用例1所定义的函数,计算长、宽、高分别为4、 6、8的立方体的体积。 SELECT dbo.CubicVolume(4,6,8) • 调用例2所定义的函数,查询“VB”课程的选课人数。
CREATE PROCEDURE student_grade3 @student_name char(10), @course_name char(20) = '数据库基础' AS SELECT Sname, Cname, Grade FROM Student s JOIN sc ON s.sno = sc.sno JOIN course c ON o = o WHERE sname = @student_name AND cname = @course_name
创建不带参数的存储过程
• 查询计算机系学生的考试成绩,列出学生的姓名、 课程名和成绩。 CREATE PROCEDURE student_grade1 AS SELECT Sname, Cname,Grade FROM Student s INNER JOIN sc ON s.sno = sc.sno INNER JOIN course c ON o = o WHERE Sdept = '计算机系'
创建带多个输入参数的存储过程
• 查询某个学生某门课程的考试成绩,列出学生的姓名、 课程名和成绩。 CREATE PROCEDURE student_grade2 @student_name char(10), @course_name char(20) AS SELECT Sname, Cname, Grade FROM Student s JOIN sc ON s.sno = sc.sno INNER JOIN course c ON o = o WHERE sname = @student_name AND cname = @course_name
6、视图、存储过程、函数、游标与触发器
--创建带输入参数的存储过程 if exists(select name from sysobjects where name='pro_name' and type='p') drop procedure pro_name Go create procedure pro_name @vempno int as declare @v_name varchar(10),@v_sal decimal(10,2) begin begin try select @v_name=ename,@v_sal=sal from emp where empno=@vempno if @v_sal<2500 print '工资超过2500' else print '工资少于2500' end try begin catch print '错误号:'+cast(@@error as varchar(10)) print '错误内容:'+error_message() end catch end ----使用存储过程 pro_name 7369
2.2,存储过程的分类
用户自定义的存储过程:最主要的存储过 程 系统存储过程:sp_前缀,系统预定义 扩展存储过程:保存在DLL动态链接库中并 从动态链接库中执行的C++程序代码,用于 扩展SQLSERVER2005性能,以字符xp_开 头,通常与其它系统存储过程一起使用通 过程序集调用.
2.3,存储过程的设计规则
1.2.2,索引视图
--创建各部门人数的视图 drop view v_countOfDept go create view v_countOfDept WITH SCHEMABINDING as SELECT EMP.deptno,count_big(*) empcount FROM dbo.EMP group by emp.deptno --创建聚合索引 CREATE UNIQUE CLUSTERED INDEX i_v_countOfDept_deptno ON v_countOfDept(deptno) 注意: (1)创建索引视图,必须拥有唯一聚合索引,如果创建聚合索引,带有聚合函数的基础视 图必须使用WITH SCHEMABINDING ,group by以及count_big函数 (2)使用索引视图能提高数据库效率 (3)如果视图引用任何非确定性函数,则不能在视图上创建聚集索引
存储过程与函数的构建与使用
存储过程与函数的构建与使用存储过程和函数是数据库中常用的两种程序化对象,它们都可以用来封装一定的复杂业务逻辑,在数据库中进行复用,提高数据库的性能和可维护性。
1. 存储过程的构建和使用存储过程是一种预编译的数据库对象,可以用来执行一些具体的操作。
在构建存储过程时,需要用到以下的语法结构:CREATE PROCEDURE procedure_name@parameter datatype(size) = default_value,ASBEGINSQL statementsEND1. 创建存储过程的语法是“CREATE PROCEDURE 存储过程名”。
其中,存储过程名是自己定义的,应该符合命名规范。
2. 存储过程可以包含输入输出参数,所以需要在存储过程中定义参数的数据类型和默认值。
3. SQL语句块始终包含在BEGIN和END语句之间,并以AS语句开头。
构建完存储过程后,就可以使用以下的语句来调用存储过程:EXEC procedure_name parameter1, parameter2, ...其中,parameter1、parameter2等是存储过程中定义的参数。
执行上述语句后,存储过程会按照自己的逻辑进行处理。
2. 函数的构建和使用函数是一种特殊的存储过程,它返回一个值,常用于数据处理过程中。
在构建函数时,需要用到以下的语法结构:CREATE FUNCTION function_name (@parameter datatype(size)) RETURNS datatype(size)ASBEGINSQL statementsEND1. 函数的创建语法是“CREATE FUNCTION 函数名”。
函数名应该符合命名规范。
2. 函数返回一个值,因此需要在函数中定义返回值的数据类型。
3. SQL语句块始终包含在BEGIN和END语句之间,并以AS语句开头。
构建完函数后,就可以使用以下的语句来调用存储过程:SELECT dbo.function_name(parameter)其中,parameter是函数中定义的参数。
数据库系统原理2018版课后答案
1.数据库系统原理2018版课后答案第一章数据库系统概述选择题B、B、A简答题1请简述数据数据库。
数据库管理系统数据库系统的概念。
P27数据是描述事物的记录符号,是指用物理符号记录下来的,可以鉴别的信息。
数据库即存储数据的仓库,严格意义上是指长期存储在计算机中的有组织的、可共享的数据集合。
数据库管理系统是专门用于建立和管理数据库的一夺软件。
介于应用程序和操作系统之间。
数据库系统是指在计算机中引入数据库技术之后的系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户。
2请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统的优点。
数据共享性高数据冗余小易于保证数据一致性数据独立性高可以实施统一管理与控制减少了应用程序开发与维护的工作量3请简述数据库系统的三级模式和两层映像的含义。
P31答:数据库的三级模式是指数据库系统是由模式、外模式和内模式三级工程的。
对应了数据的三级抽象。
两层映像是指三级模式之间的映像关系,即外模式/模式映像和模式/内模式映像。
4请简述关系模型与网状模型、层次模型的区别。
P35使用二维表结构表示实体及实体间的联系建立在严格的数学概会的基础上概念单一、统一用关系表示实体和实体之间的联系,数据结构简单清晰。
用户易懂易用存取路径对用户透明,具有更高的数据独立性、更好的安全保密性。
第二章关系数据库选择题C、C、D简答题1.请简述关系数据库的基本特征。
P48答:关系数据库的基本特征是使用关系数据模型组织数据。
2.请简述什么是参照完整性约束。
P55答:参照完整性约束是指:若属性或属性组F是基本关系R的外码,与基本关系S的主码K相对应。
则对于R中每个元组在F上的取值只允许有两种可能,要么是空值,要么与S中某个元组的主码值对应。
3请简述关系规范化过程。
答:对于存在数据冗余、插入异常,删除异常问题的关系机式,应采取将一个关系模式分为多个关系模式的方法进行处理。
一个低一级范式的关系模式。
实验训练5:存储过程与函数的构建与使用
实验训练5:存储过程与函数的构建与使用一、存储过程与函数的概念存储过程和函数都是数据库中的可执行代码,可以被多次调用和重复使用。
存储过程是一组预定义的SQL语句集合,可以在数据库中定义和存储。
而函数是一个独立的代码块,它接收输入参数并返回一个值。
二、存储过程的构建与使用1. 创建存储过程在MySQL中,创建存储过程需要使用CREATE PROCEDURE语句。
例如:CREATE PROCEDURE myproc()BEGINSELECT * FROM mytable;END;这个例子创建了一个名为myproc的存储过程,它会查询mytable表中的所有数据。
2. 调用存储过程使用CALL语句可以调用已经创建好的存储过程。
例如:CALL myproc();这个语句会执行myproc存储过程中定义的SQL语句。
3. 存储过程参数我们可以给存储过程添加参数来使其更加灵活。
例如:CREATE PROCEDURE myproc(IN p1 INT, IN p2 VARCHAR(50)) BEGINSELECT * FROM mytable WHERE column1 = p1 AND column2 = p2;END;这个例子创建了一个带有两个输入参数p1和p2的存储过程,它会查询mytable表中column1等于p1并且column2等于p2的数据。
4. 存储过程变量除了参数之外,存储过程还可以使用变量来存储中间结果。
例如:CREATE PROCEDURE myproc(IN p1 INT)BEGINDECLARE v1 INT;SET v1 = p1 * 2;SELECT * FROM mytable WHERE column1 = v1;END;这个例子创建了一个带有一个输入参数p1和一个变量v1的存储过程,它会将p1乘以2并将结果存储在v1变量中,然后查询mytable表中column1等于v1的数据。
MySQL数据库应用实战教程 第5章 MySQL函数和存储过程
5.2.3 日期和时间函数
通过日期和时间函数可以获取当前日期、当前时间、年份、月份、 天、小时等关于日期的函数。日期和时间函数如表5.3所示。
表5.3 日期和时间函数
续表
常用的日期和时间函数如下。 (1)NOW():当前日期和时间,如2017-11-29 23:21:19。 (2)CURDATE():当前日期,如2017-11-29。 (3)CURTIME():当前时间,如23:22:49。 (4)YEAR(d):提取日期中的年份,如YEAR('2017-11-30')。 (5)MONTH(d):提取日期中的月份,如MONTH('20170819')。 (6)DAYOFYEAR(d):提取日期里一年中的第几天,如DAYOFYEAR ('2017-11-30')。
(11)DATE_ADD() :向后推时间。DATE_ADD(NOW(),INTERVAL 3 YEAR)表示当前时间往后推3年;DATE_ADD(NOW(),INTERVAL 3 MONTH)表示当前时间往后推3个月;DATE_ADD(NOW(),INTERVAL 3 DAY)表示当前时间往后推3天。
表5.1 数学函数
续表
常用的数学函数如下。 (1)CEILING(x):返回大于x的最小整数值,它是向上取整。 (2)FLOOR(x):返回小于x的最大整数值,它是向下取整。 (3)ROUND(x,y):返回参数x的四舍五入的有y位小数的值,进行 四舍五入,保留y位小数。 (4)TRUNCATE(x,y):返回数字x截短为y位小数的结果,不进行 四舍五入,直接保留y位小数。 (5)MOD(x,y):返回x/y的模,也是取余数,和x%y是等价的。
3.调用自定义函数
《数据库系统原理》04735课后习题答案(2018版)
答案仅供参考第一章数据库系统概述选择题B、B、A简答题1.请简述数据,数据库,数据库管理系统,数据库系统的概念。
P27数据是描述事物的记录符号,是指用物理符号记录下来的,可以鉴别的信息。
数据库即存储数据的仓库,严格意义上是指长期存储在计算机中的有组织的、可共享的数据集合。
数据库管理系统是专门用于建立和管理数据库的一套软件,介于应用程序和操作系统之间。
数据库系统是指在计算机中引入数据库技术之后的系统,包括数据库、数据库管理系统及相关实用工具、应用程序、数据库管理员和用户。
2.请简述早数据库管理技术中,与人工管理、文件系统相比,数据库系统的优点。
数据共享性高数据冗余小易于保证数据一致性数据独立性高可以实施统一管理与控制减少了应用程序开发与维护的工作量3.请简述数据库系统的三级模式和两层映像的含义。
P31答:数据库的三级模式是指数据库系统是由模式、外模式和内模式三级工程的,对应了数据的三级抽象。
两层映像是指三级模式之间的映像关系,即外模式/模式映像和模式/内模式映像。
4.请简述关系模型与网状模型、层次模型的区别。
P35使用二维表结构表示实体及实体间的联系建立在严格的数学概念的基础上概念单一,统一用关系表示实体和实体之间的联系,数据结构简单清晰,用户易懂易用存取路径对用户透明,具有更高的数据独立性、更好的安全保密性。
第二章关系数据库选择题C、C、D简答题1.请简述关系数据库的基本特征。
P48答:关系数据库的基本特征是使用关系数据模型组织数据。
2.请简述什么是参照完整性约束。
P55答:参照完整性约束是指:若属性或属性组F是基本关系R的外码,与基本关系S的主码K 相对应,则对于R中每个元组在F上的取值只允许有两种可能,要么是空值,要么与S中某个元组的主码值对应。
3.请简述关系规范化过程。
答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理。
一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式,这就是所谓的规范化过程。
《数据库原理与应用》课程教学大纲
《数据库原理与应用》课程教学大纲一、课程基本信息(一)课程代码:(二)课程中文名称:数据库原理与应用(三)课程英文名称:Principle and Application of Database(四)课程性质:专业基础课程(五)适用专业:计算机科学与技术、软件工程、大数据与人工智能(六)开课单位:(七)教学时间安排:第 3学期(八)先修课程:计算机基础、高级语言程序设计(九)后续课程:网络程序开发、大数据技术原理及应用(十)学时、学分:32学时、2学分二、课程目标《数据库原理与应用》是计算机类各专业的必修课,是一门重要的专业基础课。
原理部分以数据库技术的实际应用为目标,重点讲述数据库的基础知识、基本原理和基本技术;应用部分以数据库应用开发为主,介绍数据库应用系统的设计方法、步骤和范例。
通过本课程学习,使学生在掌握数据库系统基本概念、原理的基础上,能熟练使用SQL语言在某一个具体的数据库管理系统上进行应用操作;掌握数据库原理、方法及步骤,具有数据库设计以及应用数据库管理系统的基本能力。
达成支撑专业学习成果相应的指标点。
课程目标对学生能力要求如下:课程目标1. 逐步掌握科学的学习方法,阅读并理解数据库相关教材、参考书和科技文献,不断地扩展知识面,增强独立思考的能力,更新知识结构。
课程目标2. 掌握关系代数语言的使用;能够熟练使用SQL语句进行数据操纵和数据定义。
课程目标3. 了解关系模型的基本概念;掌握关系数据库规范化理论,能够利用分解算法将关系模式进行合理的分解;掌握数据库设计方法和数据库系统维护的相关概念和应用。
课程目标4. 能够在MySQL平台环境和开发工具下使用SQL语句进行数据操纵和数据定义。
课程目标5. 具备良好的沟通、表达和团队协作能力。
三、教学内容与课程目标的关系第1章数据库系统的基本原理1.章节学时:1学时2.教学内容:(1)数据库系统概述(数据库系统概念;数据管理技术的产生和发展;数据库系统组成)。
表,视图,存储过程,函数之间的区别
表,视图,存储过程,函数之间的区别表是真实存在的,它占内存空间视图是虚拟表,不存储数据,存储的是sql,检索他的时候实际上是执⾏定义它的sql语句,不占任何内存存储过程理解的简单⼀点就是“数据库中的程序”,可以在不需要外部程序(如C,java,vb等)的情况下,让数据库⾃⼰解决复杂的、⽤⼀般sql不能实现的功能,⽽视图则不然表和视图的区别视图不占实际空间,可以对任意的表进⾏叠加和剪裁,利⽤分区视图的功能,能加快表的I/O读取时间(需要2块以上硬盘)视图和存储过程的区别视图只不过是存储在sqlserver上的select语句罢了,当对视图请求时,sqlserver会像执⾏⼀句普通的select语句那样的执⾏视图的select语句,它的性能并不像⼈们想象得那么出⾊。
⽽存储过程在编译后可以⽣成执⾏计划,这使得每次执⾏存储过程的时候效率将会更⾼,这是存储过程,另外台提交参数的时候,使⽤存储过程将会减少⽹络带宽流量,这是存储过程相对于普通的sql语句在性能上的最⼤的优势存储过程和函数的区别函数:只能返回⼀个变量的限制。
⽽存储过程可以返回多个。
函数是可以嵌⼊在sql中使⽤的,可以在select中调⽤,⽽存储过程不⾏执⾏的本质都⼀样。
函数限制⽐较多,⽐如不能⽤临时表,只能⽤表变量.还有⼀些函数都不可⽤等等.⽽存储过程的限制相对就⽐较少1. ⼀般来说,存储过程实现的功能要复杂⼀点,⽽函数的实现的功能针对性⽐较强。
2. 对于存储过程来说可以返回参数,⽽函数只能返回值或者表对象。
3. 存储过程⼀般是作为⼀个独⽴的部分来执⾏,⽽函数可以作为查询语句的⼀个部分来调⽤,由于函数可以返回⼀个表对象,因此它可以在查询语句中位于FROM关键字的后⾯。
4. 当存储过程和函数被执⾏的时候,SQL Manager会到PRocedure cache中去取相应的查询语句,如果在procedure cache⾥没有相应的查询语句,SQL Manager就会对存储过程和函数进⾏编译。
实验5:存储过程、触发器和视图
实验5:存储过程、触发器和视图第五周实验可编程对象(视图、存储过程和触发器)一.实验目的1.了解视图、存储过程和触发器的基本概念和使用方法。
2.学会用两种方法创建和维护视图、存储过程和触发器等数据库对象:一是在SQL Server Management Studio通过可视化操作实现,一是在查询窗口执行相关T-SQL语句实现。
二.实验环境●SQL Server Management Studio●BookStore数据库提示1:到“课程辅助材料”中下载BookStore数据库,在SQL Server中附加。
三.实验内容说明:标记为▲的是必做题目,其他为选作题目。
首先需要附加BookStore数据库。
1▲.创建视图。
(1)创建视图V_BookSell,使其包含图书销量情况。
要求显示图书代码(BookCode)、图书名称(BookName)、作者(Author)、出版社名称(Publisher)以及数量(Amount)。
(2)创建视图V_CustomerBookOrderDetail。
要求显示订单号(OrderCode)、客户名(Name)、客户等级(VIPClass)、书名(BookName)、单价(Price)、数量(Amount)、折扣(Discount)以及总价(TotalPrice=Price*Amount*Discount)。
(3)创建视图V_CustomerVIPABTotalOrder,汇总客户订单信息。
使其包含用户等级为“A”和“B”、且不姓“郭”和“刘”的客户订单信息,要求显示客户姓名(Name)以及所订图书总金额,并按所订图书总金额降序排列。
2.创建存储过程(1)▲创建存储过程proc_SearchBook,查询指定书名的图书信息。
(2)创建存储过程proc_FuzzySearchBook,实现按书名(全名或部分书名)模糊查询图书信息。
(3)创建存储过程proc_SearchCustomerMoney,查询指定客户在某一年之前的购书总金额(已知客户号和年份,输出总金额)。
数据库应用与设计 (清华大学出版社)参考答案
《数据库应用与设计》习题参考答案第1章习题参考答案1、答案:数据库是长期储存在计算机设备上、相互关联的、可以被用户共享的数据集合。
2、答案:数据库中的数据共享带来如下好处:低冗余,保证数据的一致性,易于扩充。
但是数据库中的数据共享可能会引起并发访问的冲突,这就需要采用并发控制来避免。
3、答案:因为概念数据模型可以真实地反映现实世界,被人们所理解。
它是创建数据模型的第一个阶段。
4、答案:5、答案:因为多对多联系是一类比较复杂的联系,一般数据库管理系统也不直接支持多对多联系(需要付出更大的代价),所以多对多联系通常需要转换成一对多联系的。
6、答案:存储数据独立性指当改变存储文件的组织方式或存储结构时,应用程序无需修改。
概念数据独立性指当概念文件的结构发生变化时,应用程序无需修改。
这两种数据独立性是通过三层结构获得的。
在三层结构的方案中,CONCEPTUAL-ROUTINE保证了概念数据的独立性,而STORAGE-ROUTINE则保证了存储数据独立性。
7、答案:数据库模式是用数据描述语言对数据库结构的每一层的框架及结构进行的精确定义。
数据库模式分为存储模式(内模式)、概念模式(模式)、外部模式(子模式)。
存储模式(内模式)定义了存储数据库结构,概念模式(模式)定义了概念数据库结构,外部模式(子模式)定义了外部数据库结构。
8、答案:用户程序通过DBMS修改一条记录时所发生的一系列事件如下:(1)用户程序A向DBMS发出修改一条记录的指令,这时,用户程序要给出外部文件名、记录的关键字值和要修改的信息。
(2)DBCS分析所接到的指令,访问对应的外部模式。
(3)DBCS完成外部模式到概念模式的转换,决定访问哪个(些)概念文件。
(4)由DBSS完成概念模式到存储模式的转换,并决定访问哪个(些)存储文件。
(5)DBSS调用修改方法,通过操作系统修改相应的存储文件。
(6)用户程序从系统缓冲区中获得DBMS返回的状态信息。
