参考书目:《MySQL教程》(郑阿奇主编)
一、填空
- 关系数据库设计理论,主要包括三个方面内容:数据依赖、范式和关系模式的规范化设计方法,其中数据依赖起着核心的作用。
- 在进行模式分解的同时必须考虑的两个问题是无损连接性和保持函数依赖。
- DBMS主要功能包括数据定义功能、数据操纵功能、数据库的运行管理功能、数据库的建立和维护功能。提供了相应的数据语言:数据定义语言、数据操纵语言、数据控制语言。
- SQL的功能包括数据查询、数据操纵、数据定义和数据控制 。
- 数据库用户分为数据库管理员、系统分析员、应用程序员和最终用户。
- 数据模型(层次模型、网状模型、关系模型)由数据结构、数据操作和数据的完整性约束条件三部分组成。按应用层次分成3种类型,分别是概念模型、逻辑模型、物理模型。
- 关系模型中的3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。
- 数据管理技术的3个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。
- 数据系统的数据独立性,是指数据库中数据独立于应用程序且不依赖于应用程序,即数据的逻辑结构、存储结构与存储方式的改变不会影响应用程序。数据独立性一般分为物理独立性和逻辑独立性两级。
- MySQL表记录操作:插入(INSERT) / 修改(UPDATE) / 删除(DELETE) 记录
- MySQL数据库:创建(CREAT) / 修改(ALTER) / 删除(DROP) (数据库(DATABASE) / 表(TABLE) / 索引(INDEX) / 事件(EVENT))
- 三种循环语句:WHILE、REPEAT和LOOP语句 。
- 三级模式:内模式(物理模式)、外模式(子模式/用户模式)、概念模式(模式)。其中内模式处于最底层,反映了数据在计算机物理结构中的实际存储形式;概念模式处于中层,反映了设计者对数据的全局逻辑要求;而外模式处于最外层,反映了用户对数据的要求。
- 数据库在三级模式之间提供了两级映射:外模式/概念模式的映射和概念模式/内模式的映射。两级映射保证了数据库中的数据具有较高的逻辑独立性和物理独立性。
- 存储过程支持三种类型的参数:输入参数(IN)、输出参数(OUT)和输入/输出参数(INOUT)。
- 要保证数据库的逻辑数据独立性,需要修改的是模式与外模式的映射 。
- 处理程序的类型主要有三种:CONTINUE、EXIT和UNDO。
- 投影运算:从关系模式中指定若干个属性(列)组成的关系成为投影 。
- 选择运算:从关系中找出满足给定条件的元组(行)的操作成为选择 。
- 五种基本关系代数运算:∪ - × σ π 。
二、名词解释
- 属性: 描述实体的特征称为属性。E-R图用椭圆形表示。
- 实体: 指客观存在并且可以相互区别的事物。E—R图用矩形表示。
- 联系: 实体之间的对应关系称作联系,它反映现实世界事物之间的相互关联。E-R图用菱形表示。
- 函数依赖: 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X。
- 部分函数依赖:: 设关系模式R(U)中,X,Y∈U,若X→Y,但对于X的某一个真子集Z→Y成立,则称Y部分函数依赖于X。
- 完全函数依赖: 设关系模式R(U)中,X,Y∈U,如果X→Y,并且对于X的任何一个真子集Z,Z→Y都不成立,则称Y完全依赖于X,记作X→Y。
- 传递依赖: 在关系模式中,设X、Y、Z是R的三个不同属性子集,如果X→Y(Y∈X)成立,但Y→X不成立,而Y→Z(Z∈Y),则称Z对X传递函数依赖。
- 主键: 若一个二维表有多个候选码,则选定其中一个作为主键供用户使用。
- 外键: 表M中的某属性集是表N的候选键或者主键,则称该属性集为表M的外键或外码。
- 候选码: 二维表中能唯一表示元组的最小属性集。
- 1NF: 在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式关系模式 。
- 2NF: 若关系模式R是1NF,且所有非主属性都完全依赖于任意一个候选码,则称R是第二范式关系模式 。
- 3NF: 若关系模式R是2NF,且所有非主属性对任何候选关键字都不存在传递函数依赖,则称R是第三范式关系模式 。
- BCNF: 若关系模式R是3NF,如果对于R的每个函数依赖X→Y,若Y∈X,则X必含有候选码,则称R是BCNF范式。
- 数据: 描述事物的符号记录称为数据。数据库系统中的数据有长期持久的作用,它们被称为持久性数据,而把一般存放在计算机内存中的数据称为临时性数据。
- 数据库(DB): 是长期储存在计算机内、有组织的、可共享的数据集合。
- 数据库系统(DBS): 是指在计算机系统中引入数据库后的系统构成。数据库系统由数据库、数据库管理系统、应用系统、数据库管理员构成。
- 数据库管理系统(DBMS): 是位于用户与操作系统之间的一层数据管理软件。用于科学地组织和存储数据、高效地获取和维护数据。
三、简答题
1. 事件
- 是MySQL在相应的时刻调用的过程式数据库对象。一个事件可以只调用一次,一个事件也能周期性地启动。
- 作用:
- ①关闭账户
②打开或关闭数据库指示器
③使数据中的数据在某个间隔后刷新
④执行对进入数据的复杂的检查工作
2. 触发器
- 是一个被指定关联到一个表的数据对象,触发器是不需要调用的,当对一个表的特别事件出现时,它就会被激活。
- 事件和触发器的联系与区别:
联系:事件和触发器相似,都是在某些事情发生的时候启动。当在数据库上启动一条触发语句的时候,触发器就启动了;而事件是根据调度事件来启动的。由于它们彼此相似,所以事件也称作临时性触发器(temporal trigger)。
区别:触发器是触发时执行某些任务,而事件是定时执行某些任务。
3. 视图与基本表的区别和联系
- 视图是从一个或多个表导出的表,它与基本表不同,视图是一个虚表,即它所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。
- 优点:
①为用户集中数据,简化用户的数据查询和处理
②屏蔽数据库的复杂性
③简化用户权限的管理
④便于数据共享
⑤可以重新组织数据以便输出到其他应用程序中。 - 视图一经定义就可以像基本表一样被查询、删除,也可以在一个视图之上再定义新的视图,但是对视图的更新操作有限制。
- 创建视图(create view),查询视图(select view),更新视图(replace view),修改视图(alter),删除视图(drop view)
4. 游标
- 处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果中一次一行或者多行前进或向后浏览数据的能力。游标相当于一个指针,它指向当前的一行数据。
- 声明游标(DECLARE CURSOR),打开游标(OPEN CURSOR),读取游标(FETCH CURSOR),关闭游标(CLOSE CURSOR)
5. 索引
- 是根据表中一列或若干列按照一定顺序建立的列值与记录行之间的对应关系表。
- 作用:
①快速读取数据
②保证数据记录的唯一性
③实现表与表之间的参照完整性
④在使用GROUP BY子句进行检索时,利用索引可减少排序和分组的时间。 - 分类:
- BTREE索引
①普通索引。创建普通索引的关键字是INDEX
②唯一性索引。创建唯一性索引的关键字是UNIQUE
③主键。是一种唯一性索引,必须指定为PRIMARY KEY
④全文索引。索引类型为TINYTEXT - 哈希索引
5. 数据完整性和安全性
- 数据的完整性控制:系统通过设置一些完整性规则以确保数据的正确性、有效性和相容性。
- 数据的安全性控制:防止不合法使用数据造成数据的泄露和破坏,保证数据的安全和机密。
完整性检查和控制的防范对象是不合语义的、不正确的数据,防止它们进入数据库;安全性控制的防范对象是非法用户和非法操作,防止他们对数据库数据的非法存取。 - ①主键约束 ②替代键约束 ③参照完整性约束 ④CHECK完整性约束 ⑤命名完整性约束 ⑥删除完整性约束
6. SQL语言的特点
- 综合统一。 SQL语言集数据定义语言DDL、数据操纵语言DML、数据控制语言DCL的功能于一体。
- 高度非过程化。 用SQL语言进行数据操作,只要提出“做什么”,而无须指明“怎么做”,因此无需了解存取路径,存取路径的选择以及SQL语句的操作过程由系统自动完成。
- 面向集合的操作方式。 SQL语言采用集合操作方式,不仅操作对象、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
- 以同一种语法结构提供两种使用方式。 SQL语言既是自含式语言,又是嵌入式语言。作为自含式语言,它能够独立地用于联机交互的使用方式,也能够嵌入到高级语言程序中,供程序员设计程序时使用。
- 语言简捷,易学易用。
7. 事务
- 是:①一个数据库操作数列
②一个不可分割的工作单位
③恢复和并发控制的基本单位。 - {开始事务(start) 结束事务(commit) 撤销事务(rollback) 回滚事务}
- 原子性: 是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
- 一致性: 事务必须使数据库从一个一致性状态变换到另一个一致性状态。
- 隔离性: 事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
- 持久性: 是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响。
8. 并发访问的问题
- 丢失更新:
①事务A撤销时,把已经提交的事务B的更新数据覆盖了。
②事务A覆盖事务B已经提交的数据,造成事务B所做的操作丢失。 - 脏读: A事务读取B事务尚未提交的数据并在此基础上操作,而B事务执行回滚,那么A读取到的数据就是脏数据。
- 不可重复读: 事务A重新读取前面读取过的数据,发现该数据已经被另一个已提交的事务B修改过了。
- 幻读: 事务A重新执行一个查询,返回一系列符合查询条件的行,发现其中插入了B事务提交的行。
- 采用并发控制是为了防止对同一个目标发起操作而引起冲突。
- 并发控制机制的任务:
①对并发操作进行正确调度
②保证事务的隔离性
③保证数据库的一致性
9. 数据库的并发控制
- 多用户同时存取或修改数据库时,防止相互干扰而提供给用户不正确的数据,并使数据库受到破坏。
- 共享锁(S锁):如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。
- 排他锁(X锁):如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。
10. 数据恢复
- 当数据库被破坏或数据不可靠时,系统有能力将数据库从错误状态恢复到最近某一时刻的正确状态。
- 它的方法有:定期转储整个数据库,建立事务日志,通过备份和日志进行恢复。
11. E-R图
- E-R图即实体-联系图(Entity Relationship Diagram),是指提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
- 用矩形表示实体型;用椭圆表示实体的属性;用菱形表示实体型之间的联系。
- 实体联系模型,是概念数据模型的高层描述所使用的数据模型或模式图,它为表述这种实体联系模式图形式的数据模型提供了图形符号
12. 需求分析的任务
- 详细调查现实世界要处理的对象,充分了解原系统,明确用户各种需求,明确新系统的功能,充分考虑今后可能的扩充和改变。
13. 数据库管理系统主要功能
- 数据定义功能:DBMS提供数据定义语言DDL,供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。
- 数据操纵功能:DBMS提供数据操作语言DML,供用户实现对数据的追加、删除、更新、查询等操作。
- 数据库的管理:是DBMS的运行控制、管理功能。
- 控制和维护功能:包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能。
14. 存储过程和触发器的联系模型和特点
- 触发器和存储过程一样都是SQL语句集,通常通过创建触发器来强制实现不同表中的逻辑相关数据的引用完整性和一致性。触发器不同于存储过程,触发器主要是通过事件执行触发而被执行的,而存储过程可以通过存储过程名称名字而直接调用。
四、设计题
- 设某商业集团数据库中有3个实体集。一是“公司”实体集,属性有公司编号、公司名、地址等;二是“仓库”实体集,属性有仓库编号、仓库名、地址等;三是“职工”实体集,属性有职工编号、姓名、性别等。公司与仓库间存在“隶属”联系,每个公司管辖若干仓库,每个仓库只能属于一个公司管辖;仓库与职工间存在“聘用”联系,每个仓库可聘用多个职工,每个职工只能在一个仓库工作,仓库聘用职工有聘期和工资。
(1)试画出ER图,并在图上注明属性、联系的类型。
(2)将ER图转换成关系模式集,并指出每个关系模式集,并指出每个关系模式主键。
答:(1)如图:
(2)这个E-R图可以转换3个关系模式:
- 公司(公司编号,公司名,地址)
- 仓库(仓库编号,仓库名,地址,公司编号)
- 职工(职工编号,姓名,性别,仓库编号,聘用,工资)
- 设有学生选修课程数据库, 学生表(学号,姓名,年龄,性别,所在系,地址,出生日期) ,选课表(学号,课程号,成绩) ,课程表(课程号,课程名称,教师姓名) 用SQL语言查询下列问题:
(1)李老师所教的课程号、课程名称。
(2)年龄大于23岁的女学生的学号和姓名。
(3)“李小波”所选修的全部课程名称。
(4)所有成绩都在80分以上的学生姓名及所在系。
答:
(1)
select 课程号,课程名称
from 课程表
where 教师姓名='李老师'
(2)
select 学号,姓名
from 学生表
where (性别='女') and (年龄>23)
(3)
select 课程名称
from 课程表
where 课程号 in
(select 选课表.课程号
from 选课表,学生表
where(选课表.学号=学生表.学号) and (学生表.姓名='李小波'));
(4)
select 姓名, 所在系
from 学生表
where 学号 in
(select distinct 学号from 选课表
where 成绩 >= 80);