简答题合集
绪论
数据库的 4个基本概念
这里把缩写看一下结束
数据:是数据库中存储的基本对象,是描述事物的符号记录
数据库DB:永久存储在计算机内部,有组织,可共享的大量数据的集合
数据库管理系统 DBMS:位于用户和操作系统之间的一层数据管理软件
数据库系统DBS:分为Data DBMS APP DBA
打个比喻,比如说菜鸟物流:
Data: 快递
DB:物流厂库
DBMS: 对应整个仓库的运作情况
DBS:对应整个物流体系
数据库管理系统的主要功能
数据定义
数据操纵
数据库的运行管理
数据库的建立维护
数据库系统的特点
数据结构化
数据共享性高、冗余度低且易扩充
数据独立性高
数据由DBMS统一管理
解释说明:
冗余度:在数据库中,冗余度是指存储在数据库中的重复数据量或信息量。
逻辑独立性和物理独立性是数据库管理系统中的两个重要概念,它们描述了数据库系统中数据和应用程序之间的关系的不同方面。
数据与程序的独立性有哪两个 各个含义是什么
数据与程序的物理独立性是指数据处理方式与存储设备无关
数据与程序的逻辑独立性是指数据结构与处理规则与程序实现无关
文件系统与数据库系统的区别与联系
区别:数据库系统特点写上去即可 而文件系统就是数据库系统特点的反义词 例如共享性低 冗余度高……
文件系统面向某一应用程序 数据库系统面向现实世界
联系:都是计算机系统中管理数据的软件,但是DBMS是在操作系统的基础上实现的;数据库中数据的组织和存储是通过操作系统中的文件系统来实现的
数据模型
数据模型:对现实世界数据特征的抽象,也即数据模型是用来描述数据、组织数据和对数据进行操作的
数据模型分为概念模型(信息模型)
逻辑模型及物理模型
概念模型 按用户的观点建模,用于数据库设计,表示方法有 ER模型
逻辑模型 按计算机的观点建模,用于 DBMS 实现,包括网状模型、层次模型、关系模型等等
层次模型:数据结构里面的树
网状模型:数据结构里面的图
关系模型:二维表
物理模型是对数据最底层的抽象
数据模型的三要素
数据结构
数据操纵
数据完整性约束
数据模型中概念模型的基本概念
补充:
候选码:是一个属性组(或者属性),通过该属性组能够推出所有的属性,并且该属性组的任意子集都不能够再推出所有属性了。
外码:是本关系的属性且不是码,而是另一个关系的主码
超码:能推出所有属性的属性组的集合
关系模型中的基本概念
码用于唯一确定一个元组
数据库系统的三级模式结构
关系模式 :对关系的描述,必须是规范化的
外模式,模式(逻辑模式),内模式
在数据库中
模式描述了全体数据的逻辑结构和特征
外模式描述了用户可见的局部数据的逻辑结构和特征
内模式描述了数据库的物理结构和存储方式
物理独立性:用户的应用程序与存储在磁盘上的数据库中数据是独立的。当数据的物理存储改变时,应用程序不改变
逻辑独立性 :用户应用程序与数据库的逻辑结构是相互独立的。数据的逻辑结构改变了,用户的程序也可以不变
SQL
SQL的特点?
综合统一。集DCL,DML,DDL功能于一体;
高度非过程化。使用SQL进行数据操作时,是需要提出“做什么”,而不需要指明怎么做;
面向集合的操作方式。SQL支持对数据集合进行操作,包括交集、并集、差集等,使得数据处理更为灵活
同一种语法结构提供多种使用方式。既可以作为独立的语言进行交互,又可以作为嵌入式语言嵌入到更高级的语言程序中进行操作;
语言简洁,易学易用。
DCL,DML,DCL这三个术语是与数据库操作语言相关的,它们分别表示不同类型的数据库操作:
DDL(Data Definition Language) - 数据定义语言:
作用: 用于定义和管理数据库的结构,包括创建、修改和删除数据库对象(表、索引、视图等)的语句。
示例:
CREATE TABLE: 创建表。
ALTER TABLE: 修改表结构。
DROP TABLE: 删除表。
DML(Data Manipulation Language) - 数据操纵语言:
作用: 用于查询和操作数据库中的数据,包括插入、更新、删除和查询数据的语句。(增删查改)
示例:
SELECT: 从数据库中查询数据。
INSERT: 向数据库中插入新数据。
UPDATE: 更新数据库中的数据。
DELETE: 从数据库中删除数据。
DCL(Data Control Language) - 数据控制语言:
作用: 用于控制数据库用户的访问权限和安全性,管理数据库的访问权限。
示例:
GRANT: 赋予用户或角色对数据库对象的访问权限。
REVOKE: 撤销用户或角色对数据库对象的访问权限。
这三种语言一起构成了数据库操作的基本框架:
SQL的三种类型
DDL 用于定义数据库的结构。
DML 用于操纵数据库中的数据。
DCL 用于控制用户对数据库的访问权限。
在实际应用中,这些语言通常会结合使用,以完成复杂的数据库操作和管理任务。
左外连接和右外连接对比
假设我们有两个表:Students(学生)和 Grades(成绩)。我们希望使用左外连接和右外连接来查询这两个表之间的关系。
左外连接案例:
SELECT Students.Name, Grades.Grade
FROM Students
LEFT OUTER JOIN Grades ON Students.ID = Grades.StudentID;
在这个案例中,我们使用左外连接,它返回学生的所有信息,以及他们的成绩(如果有的话)。如果某个学生没有成绩记录,则相应的 Grade 列将为 NULL。
右外连接案例:
SELECT Students.Name, Grades.Grade
FROM Students
RIGHT OUTER JOIN Grades ON Students.ID = Grades.StudentID;
在这个案例中,我们使用右外连接,它返回成绩的所有信息,以及对应的学生信息(如果有的话)。如果某个成绩没有对应的学生信息,则相应的 Name 列将为 NULL。
这两个案例中,一个是左外连接,另一个是右外连接,分别以学生和成绩为主要查询对象。
左外连接和右外连接案例
左外连接(Left Outer Join):
左外连接返回左表中所有行以及右表中符合连接条件的行。如果右表中没有匹配的行,则将返回 NULL 值。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
结果:
在这个左外连接中,我们保留了左表 Employees 的所有行,同时匹配了右表 Departments 中符合条件的行。如果没有匹配的行,则对应的 DepartmentName 列显示为 NULL。
右外连接(Right Outer Join):
右外连接返回右表中所有行以及左表中符合连接条件的行。如果左表中没有匹配的行,则将返回 NULL 值。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
RIGHT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
结果:
在这个右外连接中,我们保留了右表 Departments 的所有行,同时匹配了左表 Employees 中符合条件的行。如果没有匹配的行,则对应的 Name 列显示为 NULL。
全外连接(Full Outer Join):
全外连接返回左表和右表中所有行,如果没有匹配的行,则对应的列显示为 NULL。去掉重复项的元组集并集。
SELECT Employees.Name, Departments.DepartmentName
FROM Employees
FULL OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;
结果:
在这个全外连接中,我们返回了左表 Employees 和右表 Departments 中的所有行,如果没有匹配的行,则对应的列显示为 NULL。
这就是外连接及其各种类型的简单示例
等值连接和自然连接的区别
自然连接是等值连接的一种特殊情况;
等值连接要求连接的是值相等的分量,两个关系中可以没有相同的属性;
进行自然连接的两个关系中必须有相同的属性。
等值连接不要求去掉重复属性列;
自然连接时需要除掉重复的属性列。
等值连接和自然连接案例
让我们通过一个简单的案例来演示等值连接和自然连接的使用。
等值连接(Equi Join):
SELECT Students.*, Courses.*
FROM Students
INNER JOIN Courses ON Students.学生ID = Courses.学生ID;
结果表:
在这个等值连接中,我们使用了学生表和课程表中的学生ID列作为连接条件。结果表中包含了符合连接条件的学生和他们所选的课程信息。
自然连接(Natural Join):
SELECT *
FROM Students
NATURAL JOIN Courses;
结果表:
在自然连接中,系统会自动查找两个表中列名相同的列,然后以这些列作为连接条件。在这个例子中,我们并没有明确指定连接条件,而是让系统自动选择学生表和课程表中的学生ID列作为连接条件。结果表中只保留了一次学生ID列,并且自动匹配了其他列名相同的列。
这就是等值连接和自然连接的简单案例演示。
关系代数的基本运算
并
差
笛卡尔积:是一种域上面的集合运算,得到每个域中元素的所有可能的组合,它可以表示为一张二维表
投影
选择
restrict和cascade
在删除的场景中:
restrict:欲删除的基本表不能被其他表的约束所引用
cascade:所有相关依赖对象连同基本表一起删除
在权限管理的场景中:
CASCADE表示连锁回收,即不仅回收指定用户的权限,还会连带回收该用户授予其他用户的相同权限;而RESTRICT表示限制回收,只回收指定用户的权限,不会影响其他用户。
视图是什么
视图是由数据库中的一个表或多个表导出的虚拟表。
数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据。
视图是存储在数据库中的查询的SQL语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据,例如,员工信息表,可以用视图只显示姓名、工龄、地址,而不显示社会保险号和工资数等;另一个原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列。
从基本表中删除记录,会影响到视图中的数据,前提是这些记录是视图所基于的数据
视图的作用
视图是在原有表或者视图的基础上重新定义的虚拟表,这可以从原有的表上选取对用户有用的信息,忽略次要信息,其作用类似于筛选。视图的作用归纳为如下几点:
1、使操作简单化
视图需要达到的目的就是所见即所需。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
2.增加数据的安全性
通过视图,用户只能查询和修改指定的数据。指定数据之外的信息,用户根本接触不到。这样可以防止敏感信息被未授权的用户查看,增强机密信息的安全性。
3.提高表的逻辑独立性
视图可以屏蔽原有表结构变化带来的影响。例如原有表增加列和删除未被引用的列,对视图不会造成影响。同样,如果修改表中的某些列,可以使用修改视图来解决这些列带来的影响。
索引的作用
当表的数据量比较大时,查询操作比较耗时,建立索引可以加快查询速度。
优点:加速查询速度;
缺点:索引需要占一定的存储空间,且基本表更新时需要维护索引表。
索引和键的区别
索引是存储在数据库中的一个物理结构,是实际存在的,相当于一本书的目录;
键是一个逻辑概念,不是数据库中的物理部分。键分为主键和外键,主键相当于一本书中每个页的页码。
(扩展:聚簇索引:与基表的物理顺序相同,数据值的顺序总是按照顺序排列。)
数据库中常用的索引有哪些?
B+树索引:B+树是对B树优化处理了的多路搜索树,与B树的区别在于,B树的每个结点都可以存储数据,而B+树只有叶子结点可以存储数据,且每个叶子结点都用链表链接。
在数据库的查询中一般都是批量查询数据,采用B+树一次查询多条时,确定首尾位置,便可以方便的确定多条数据位置,提高查询效率。
Hash索引:通过一定的算法计算出哈希值,然后映射出对应的数据存储位置。检索速度快,但是哈希值可能存在碰撞
相关子查询和不相关子查询
在嵌套查询中,如果子查询的查询条件不依赖父查询,就是不相关,反之为相关
数据库安全性
数据库安全性的基本概念
数据库的安全性就是:保护数据库以防被恶意破坏和非法存取。
安全性技术
安全性技术:用户标识和鉴别、多层存取控制、审计、视图、数据加密
存取控制是指什么?主要包括哪两部分?
存取控制是指确保只授权给有资格的用户访问数据库的权限,且令所有未被授权的人员无法接近数据。
两个部分:定义用户权限和合法权限检查;
两种方法:
自主存取控制(DAC):由资源所有者自主管理访问权限
强制存取控制(MAC):由系统管理员或安全策略强制制定访问权限
MAC的三部分以及代表什么意思
主体:访问或控制资源的实体
客体:资源
敏感度标记:标识客体的安全级别
主体许可证级别>或=客体密级 主体才能读到相应的客体
视图机制是如何对数据库实现安全性控制的
可以对不同的用户定义不同的视图,也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来。
审计功能是如何对数据库实现安全性控制的
审计功能是把用户对数据库的一系列操作自动记录到审计日志中,审计员可以利用审计日志监控数据库中的各种行为,找出导致数据库发生异常的事件。
对数据库安全性产生威胁的因素
非授权用户对数据库恶意存取与破坏
数据库中重要或敏感的数据被泄露
安全环境的脆弱
数据库完整性
数据库完整性的相关概念
数据库完整性:防止数据库中存在不正确的数据
完整性约束条件:是数据库中数据必须满足的语义条件规则
关系模型中的完整性约束
实体完整性:关系模式中的主码不能为空值;
参照完整性:关系模式中的外码只能是空值或者另一关系模式的主码;(当外码属性不是主属性的时候可以为空值)
用户定义完整性:关系模式中针对某一属性的约束。check可以满足表达式
实体完整性:
定义: 关系模型中的主码不能为空值,确保每一行数据都有唯一标识。
示例: 假设有一个学生表(Students),其中学生ID是主码。实体完整性确保每个学生都有一个唯一的学生ID,且学生ID不能为空值。
参照完整性(Referential Integrity):
定义: 关系模式中的外码只能是空值或者另一关系模式的主码,保持关系之间的一致性。
示例: 假设有学生表(Students)和课程表(Courses),学生表中有一个字段是课程ID,该字段是指向课程表中的主码的外码。参照完整性确保学生表中的课程ID要么为空,要么引用课程表中的一个有效课程ID。
用户定义完整性(User-Defined Integrity):check约束
数据库实现完整性检查的方法
唯一约束
外键约束
检查约束
默认值约束
触发器
断言的概念
断言是一种用于强制执行数据完整性的约束条件。它是一种声明式的规则,用于确保数据库中的数据满足特定的条件。
假设有一个学生信息管理系统的数据库,其中包含学生信息表(Students)和课程表(Courses)。现在,我们希望确保每个学生的年龄必须在 18 到 25 岁之间。我们可以使用断言来实现这一约束。
断言的例子:
CREATE ASSERTION CheckStudentAge
CHECK (
SELECT COUNT(*)
FROM Students
WHERE Age < 18 OR Age > 25
) = 0;
这个断言 CheckStudentAge 用于确保学生表中所有学生的年龄都在 18 到 25 岁之间。如果有任何学生的年龄不符合这个条件,那么在尝试进行数据修改操作时,数据库管理系统将阻止或回滚这些操作。
一般查询的例子:
假设我们需要查询年龄在 20 到 22 岁之间的学生,我们可以使用一般查询语句来完成:
SELECT *
FROM Students
WHERE Age >= 20 AND Age <= 22;
这个查询将返回年龄在 20 到 22 岁之间的所有学生的信息。
通过这两个例子,你可以看到断言用于定义和强制执行数据库中的约束和规则,而一般查询用于满足用户特定的数据检索需求。
触发器以及触发器的作用
触发器是用户定义在关系表上的一类由事物驱动的特殊过程,类似于约束,但是比约束更灵活,是保证数据库完整性的一种方法。任何用户对表进行增删改操作都会有数据库服务器自动激活相应的触发器,对数据库进行相应的检查和操作。
规范化过程中,逐级依次消除了何种函数依赖
由INF到2NF,消除了非主属性对码的部分函数依赖;
由2NF到3NF,消除了非主属性对码的传递函数依赖;
由3NF到BCNF,消除了主属性对码的部分函数依赖和传递函数依赖。
案例:
R中无非主属性,满足 3NF的条件,即不存在非主属性对键的部分和传递函数依赖
判断范式sb题
R 是 3NF。
R 候选关键字为 XY 和 XZ
R 中所有属性都是主属性,不存在非主属性对的候选关键字的传递依赖
判断BCNF技巧:左边的都包含候选码
函数依赖
完全函数依赖:A->B A的真子集推不出B 那么B完全函数依赖于A
部分函数依赖:A->C且AB->C C部分函数依赖于AB
看下面这个案例:
存在非主属性对候选关键字的部分函数依赖
R是 1NF。
R 的候选关键字为 WX,则Y,Z 为非主属性,又由于 X一>Z,因此 F 中存非主属性对候选关键字的部
分函数依赖
传递函数依赖:A->C C->B B传递函数依赖于A
专业术语
设有关系模式 R (A,B,C,D),F 是 R 上成立的 FD 集,F = {D→A,D→B} F被叫做为FD集
在数据库中,FD(Functional Dependency)集是指一组属性之间的函数依赖关系。在关系型数据库中,FD集用来描述属性之间的依赖性,这种依赖性通常是指在给定一个关系中,某些属性的取值能够唯一决定其他属性的取值。FD集是数据库设计中的一个重要概念,它有助于理解和规范数据库表的设计,确保数据的一致性和完整性。
两个函数信赖集 F和 G 等价的充分必要条件是什么
F 中每个 FD 在 G+中,并且 G 中每个 FD 也在 F+中
操作异常问题
设有关系模式 R(S#,C#,CNAME,TNAME),其属性分别表示学生的学号、选修课程号、课程名、任课教师名。请说明该关系模式存在哪些操作异常?
修改异常
插入异常
删除异常
在关系模式分解时,为了保持原模式的特性,要求分解具有哪些特性
无损分解
保持函数依赖
判断表是否可以直接作为关系数据库的关系例题
一个部门号对应多个部门成员。因此,该表不能直接作为关系数据库中的关系,因为不符合关系数据库的规范。在关系数据库中,每个属性应该是原子的,即每个属性中只包含一个值。要符合关系数据库的规范,可以将部门成员拆分为一个独立的表,并使用外键将其与部门信息表关联。
简述最小函数依赖集的条件
最小函数依赖集的条件如下:
函数依赖集是不可分解的:即不能从已有的函数依赖集中移除任何一个函数依赖,而使其仍然保持函数依赖的闭包。
函数依赖集是无冗余的:即不能有多余的函数依赖存在,如果移除任意一个函数依赖,那么闭包就会发生变化,不再满足原先的函数依赖规则。
函数依赖集不能包含推导出的函数依赖:即不能包含可以通过其他函数依赖来推导出的函数依赖,只包含最基本的函数依赖。
判断关系模式存在问题题型
有关系模式 R(学号,姓名,所在学校,院长),是判断该关系模式存在的问题,并说明原因
从依赖关系 属性空缺 范式来考虑
在关系模式 R(学号,姓名,所在学校,院长) 中存在问题,问题如下:
学号、姓名、所在学校、院长之间可能存在部分函数依赖,即学号和姓名可能唯一确定所在学校和院长,但所在学校和院长并不依赖于学号和姓名,这会导致数据不一致和冗余。
院长可能不是每个学校都有,如果将院长作为属性,会导致某些学校信息的空缺。
如果院长是学校的属性,那么这个关系模式就不是第一范式(1NF),因为院长是多值属性。 为了解决这些问题,可能需要将院长作为一个独立的关系模式,或者将院长作为学校的外部实体,引入外键来关联。
完整性与安全性
完整性:确保数据的准确性和一致性
安全性:防止恶意操作
数据库设计步骤
需求分析。了解和分析用户需求;
概念结构设计 对用户需求进行抽象和归纳,形成一个独立于DBMS的概念模型**(E-R图)**;
逻辑结构设计 将概念结构转换为数据模型,通常为关系模型;
物理结构设计 为逻辑数据模型选取一个最适合存储结构和存取方法;
数据库实施阶段。编写数据库,编写和调试应用程序;
数据库运行和维护。正式投入运行。
数据字典
内容:数据项、数据结构、数据流、数据存储和处理
作用:是关于数据库中数据的描述(不是数据本身) 存储数据库元数据,可在数据库设计过程不断完善与修改
概念模型有什么作用
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
合并E-R图时主要包括哪几种冲突
属性冲突。不同的实体对同一属性的定义不同;
命名冲突。同名异义、异名同义;
结构冲突。同一实体在不同的局部E-R图中有不同的抽象。
属性冲突:
示例: 在合并两个E-R图时,一个实体可能在一个图中被定义为“客户”并具有属性“电话号码”,而在另一个图中被定义为“顾客”并具有属性“联系电话”。
解决方法: 确定每个属性的含义,并对它们进行统一,例如将两个属性统一命名为“联系电话”,以反映相同的概念。
命名冲突:
示例: 两个不同的实体在不同的E-R图中都使用名称“订单”,但一个实体表示客户下的订单,另一个表示供应商收到的订单。
解决方法: 使用更具体的命名或添加上下文以消除歧义,例如将一个实体命名为“客户订单”,另一个命名为“供应商订单”。
结构冲突:
示例: 在两个不同的E-R图中,同一个实体在一个图中被表示为具有单个属性“姓名”,而在另一个图中被表示为具有“姓”和“名”两个属性。
解决方法: 对实体的属性进行归纳,使其在所有图中保持一致,例如将“姓名”属性拆分为“姓”和“名”,或者将“姓”和“名”合并为一个“姓名”属性
一个实体型转换为一个关系模式有哪几种情况
一个1:1联系可以转换为一个独立的关系模式,在任意一方加入堆放的主码并设为其外码,并加入联系本身的属性
一个1:n联系可以转换为一个独立的关系模式,将1方的主码加入n方作为外码,并同时将联系的属性加入n方
一个m:n联系可以转换为一个独立的关系模式,将联系本身转换为一个关系模式,将联系双方的主码加入其中设为码,并将来联系的属性也加入其中
数据库编程
游标
系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果
关系查询和优化
关系数据库中查询处理的步骤及每一步进行简要概括
查询分析:对查询语句进行词法分析、语法分析(检查其是否正确);
查询检查:对合法的查询语句进行语义检查(语义检查就是检查其是否存有效)
查询优化:选择一个高效执行的查询处理策略;
查询执行:依据优化得到的执行策略生成查询执行计划,并生成相应的查询执行计划代码。
三条启发式优化规则包括哪几点?
选择运算尽可能先做;
投影操作尽可能先做;
把笛卡尔积和附近的一连串选择和投影操作合并起来做。
事务
事务以及ACID特性
事务是数据库进行操作的一个基本单位。
ACID特性包括:
隔离性:一个事务的执行不能被其他事务所干扰;
原子性:事务是一个不可分割的单位,要么全做,要么全不做;
一致性:事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态;(假设你在银行取钱,你取钱得到钱就是+,银行扣钱就是-,两种事件都在做,而且转移的金额相同,保证其一致性)
永久性:一旦事务被提交,它对数据库的改变就是永久的。
为什么事务非正常结束时会影响数据库数据的正确性?
事物具有一致性,事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是不一致的状态。
数据库恢复技术
数据库恢复的关键是什么?
关键是建立冗余数据
数据库恢复的基本技术有哪些?
数据转储和登录日志文件是数据库恢复的基本技术。
数据转储是指DBA定期将数据库复制到其他介质上进行保存,这些备份的数据叫做后备副本;
登记日志文件,日志文件是用来记录事物对数据库进行更新操作的文件。
当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。
登记日志文件时为什么必须先写日志文件,后写数据库?
如果先写了数据库修改,而在运行记录中没有登记这个修改,则以后就无法恢复这个修改了。
用于数据库恢复的文件是什么?
日志文件、后备副本。
数据库故障的种类有哪几种?相应的恢复策略是什么?
三种:事务故障、系统故障、介质故障;
事务故障是指事务在运行至终点前被中止;
事务故障恢复是由系统自动完成,利用日志文件撤销此事务已对数据库进行的修改;
系统故障是指造成系统停止运转的任何事件,使得系统要重新启动;
系统故障的恢复是在重新启动后系统自动完成,为了防止系统故障造成的数据不一致性,必须撤销故障时未完成的事物,重做已完成的事物;
介质故障是指磁盘上的物理数据和日志文件被破坏;
介质故障的恢复方法就是重装数据库,重做已经完成的事物。
在数据库中为什么要并发控制?
数据库是共享资源,通常有多个事物在同时执行,当多个事物并发的存取数据库时就会存在同时读或写统一数据的情况,如果对并发操作不加控制,就会存在数据读取或存取错误,破坏数据库的一致性。
并发控制
并发造成的数据不一致性包括什么?
丢失修改:A、B两个事物同时对一个数据进行操作,A的修改破坏了B的修改,导致B的修改丢失;
不可重复读:A读取了数据后,B对数据进行了修改,导致A无法再现前一次的读取结果;
读脏数据:A对数据进行了修改之后,B读入该数据,然后A又因为某一原因撤销了该修改,导致数据恢复原值,此时B读取的数据就成了脏数据。
不可重复读案例
假设有一个简单的银行账户数据库,其中有两个字段:账户余额和账户状态。考虑下面的情景:
事务A查询账户余额,并得到结果1000。
事务B在事务A查询之后向该账户转账500元,并更新账户余额为1500。
事务A再次查询同一账户余额,但这次得到的结果是1500,而不是之前的1000。
在这个案例中,由于事务A在两次查询之间,事务B修改了数据,导致事务A的两次查询结果不一致。这种情况就是不可重复读的典型案例。
什么是锁?有哪两种锁?
答:锁是最常用的并发控制机构,是防止其他事务访问指定资源,实现并发控制的一种手段。
排他锁(X写锁):当数据被加上写锁,其他事务不能对该数据进行读和写;
共享锁(S读锁):当数据被加上读锁,允许其他事务对该数据进行读,不允许写。
简要概括一、二、三级封锁协议
一级封锁协议:事务在修改数据之前加写锁,直到事务结束才释放。该协议可以防止丢失修改;
二级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前对其加读锁,读完后即可释放读锁。该协议避免了读脏数据;
三级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前必须加上读锁,直到事务结束才释放。该协议解决了不可重复读问题。
数据库保护(访问)的内容有哪些
利用权限机制
利用完整性约束防止非法数据进入数据库
提供故障恢复能力
提供并发访问控制
填空题合集
第一章 绪论
1.数据库数据具有永久存储 有组织 可共享三个基本特点。
2.数据库系统是指在计算机系统中引入数据库后的系统,一般由数据库 数据库管理系统 应用系统 数据库管理员构成。
3.数据库管理技术的发展是与计算机技术及其应用的发展联系在一起的,它经历了三个阶段:人工管理阶段 文件系统阶段 数据库系统阶段
4.数据库具有数据结构化、最小的冗余度、较高的数据独立性等特点 。
5.三级模式之间的两层映象保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。
6.数据模型的三要素是指数据结构 数据操作 完整性约束实际数据库系统中所支持的主要数据模型是层次模型 网状模型 关系模型
7.数据模型中的数据结构是对数据系统的静态特征描述,包括数据结构和数据间联系的描述,数据操作是对数据
库系统的动态特征描述,是一组定义在数据上的操作,包括操作的涵义、操作符、运算规则及其语言等。
8.用树型结构表示实体类型及实体间联系的数据模型称为层次模型,上一层的父结点和下一层的子结点之间的联系是一对多的联系。
9.关系模型是目前最常用也是最重要的一种数据模型。采用该模型作为数据的组织方式的数据库系统称为关系数据库系统。
10.关系的完整性约束条件包括三大类:实体完整性 参照完整性 用户定义完整性。
11.数据管理技术经过了人工管理 文件系统 数据库系统三个阶段。
12.数据库系统一般是由数据库 数据库管理系统 应用系统 数据库管理员组成。
13.数据库是长期存储在计算机内有组织的可共享的数据集合。
14.DBMS 是指它是位于操作系统和用户之间的一层管理软件。
15.DBMS 管理的是结构化的数据。
16. 实体间的联系可抽象为三类,它们是1 : 1 1 : m m : n。
17.数据库语言包括数据描述语言和数据操作语言两大部分,前者负责描述和定义数据库的各种特性,后者用于说明对数据进行的各种操作。
18.外模式是模式的子集。
19.现实世界的事物反映到人的头脑中经过思维加工成数据,这一过程要经过三个领域,依次是现实世界 信息世界 计算机世界。
20.开发、管理和使用数据库的人员主要有 数据库管理员 系统分析员 应用程序员 和最终用户四类相关人员。
21.由数据库管理员负责全面管理和控制数据库系统。
22.数据库系统与文件系统的本质区别在于数据库系统实现了整体数据的结构化。
23.数据库体系结构按照外模式 模式 内模式三层结构进行组织。
24.数据独立性又可分为逻辑独立性和物理独立性 。
25.当数据的物理存储改变了应用程序不变,而由 DBMS 处理这种改变,这是指数据的物理独立性 。
26.数据模型由数据结构 数据操作 完整性约束三部分组成的。
27.按照数据结构的类型来命令,数据模型分为层次模型 网状模型 关系模型。
28.层次模型中,根结点以外的结点至多可有1个父结点。
29.关系模型是将数据之间的关系看成网络关系,这句话是否正确? 错 。
30.关系数据库是采用关系模型作为数据的组织方式。
31.层次数据模型中,只有一个结点,无父结点,它称为根 。
32.层次模型是一个以记录类型为结点的有向树,这句话是否正确?正确 。
第二章 关系数据库
1.能唯一标识实体的属性或属性集称为码
2.关系中属性的取值范围称为属性的域。
3.由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果是一个关系。
4.在数据库阶段,对数据的操作不一定以记录为单位,可以以数据项为单位。
5.设关系 R 和 S 具有相同的关系模式,R 和 S 的差是由属于R单数不属于S的元组构成的集合。
6.已知关系 R(A,B,C,D)和 S(B,C,D),则 R×S 的元数是7个。(元数是指属性的数量)
7.关系 R 和 S 做外连接时,结果元组中只有 R 中的属性存在 Null 值,该连接属于右外连接连接。
8.关系代数运算中,专门的关系操作有:选择、投影、除和连接 。
9.关系代数中基本操作是并、差、笛卡尔积、投影和选择,没有集合的补操作,因而关系代数运算总是安全的。
解释说明:在集合论中,集合的补操作指的是对某个给定全集中除去另一个集合中的元素,从而得到的结果集合。通常用符
号表示为(AB),读作“A减去B”,表示包含了属于A但不属于B的元素的集合。
10.实体完整性规则要求关系中元组在组成候选码的属性上不能有空值。
11.关系操作的特点是集合操作。
12.关系代数是用对关系的运算来表达查询的,而关系演算是用谓词表达查询的,它又分为元组关系演算和域关系演算两种。
13.关系数据库中可命名的最小数据单位是属性名。
14.在一个实体表示的信息中,称能够唯一标识实体的属性或属性组为关键字。
15.关系代数运算中,传统的集合运算有笛卡尔积 并 交 差
16.关系代数运算中,基本的运算是并 差 笛卡尔积 选择 投影
17.关系代数运算中,专门的关系运算有选择 投影
18.关系数据库中基于数学上两类运算是关系代数 关系演算
19.传统的集合“并、交、差”运算施加于两个关系时,这两个关系的属性个数 相对应的属性值必须相等, 必须取自同一个域。
20.关系代数中,从两个关系中找出相同元组的运算称为交运算。
21.已知系(系编号,系名称,系主任,电话,地点)和学生(学号,姓名,性别,入学日期,专业,系编号)两个关系
系关系的主关键字是系编号 。系关系的外关键字是无
学生关系的主关键字是学号,外关键字是系编号。
第三章 关系数据库标准语言SQL
1.SQL 数据库中表的三种类型有基本表视图和导出表。
2.SQL 语言中, 创建基本表的命令是create table 表名
3.SQL 语言中,撤消基本表的语句是 drop table 表名
4.撤销基本表 Score 的 SQL 语句是 drop table Score
5.SQL 语言中修改数据的命令是update
6.SQL 语言的条件表达式中字符串匹配操作符是like
7.在 SQL 语言中,对分组查询中指定满足条件的语句是 having 子句
8.设 R 和 S 是关系表,则 SQL 语句“R LEFT OUTER JOIN S ON (R.B = S.B)”的含义为R左外连接S
9.在数据库中为提高查询速度而设置的逻辑排序手段称为索引
10.在 SQL 中,视图机制使系统具有三个优点:数据安全性、逻辑数据独立性和操作简单性。
11.视图是一个虚表,它一经定义就可以和基本表一样被查询,但有一定限制的操作是 更新
12.视图被用来对无权用户屏蔽数据。用户只能使用视图定义中的数据,而不能使用视图定义外的其他数据,从而保证了数据 安全性
13.SQL 是 结构化查询语言
14.SQL 语言的数据定义功能包括定义数据库 定义基本表 定义视图 定义索引
15.视图是一个虚表,它是从一个或几个基本表中导出的表。在数据库中,只存放视图的定义,不存视图的视图对应的数据。
1 select * from R union select * from T;
2 select * from R where dwh='100';
3 select distinct XM,DWH from R;
4 select XM,DWH from R where XB='女';
5 select R.BH,R.XM,R.XB,R.DWH,S.DWH,S.DW from R,S where R.DWH=S.DWH;
6 select R.XM,R.XB,S.DWH from R,S where R.DWH=S.DWH and R.XB='男'
1 insert into R values(25,'李明','男','95031');
2 insert into R(NO,NAME,CLASS)values(30,'郑和','95031');
3 update R set name='王华' where NO=10;
4 update R set class='95091' where class='95101';
5 drop from R where name like '王%'
第四章 数据库的安全性
- 数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露 ** 更改或破坏**。
- 用户标识和鉴别的方法有很多种,而且在一个系统中往往是多种方法并举,以获得更强的安全性。常用的方法有通
过输入用户名和口令来鉴别用户。 - 用户权限是由两个要素组成的:数据对象和操作类型 。
- 在数据库系统中,定义存取权限称为 授权 SQL 语言用grant语句向用户授予对数据的操作权限,用revoke 语句收回授予的权限。
- 对数据库模式的授权由 DBA 在创建用户时实现。
- 一个 DBA 用户可以拥有create user create schema create table权限,一个 RESOURCE 用户可以拥有create table权限。
- 数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合。
- 通过视图机制可以把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
- 审计一般可以分为用户级审计和系统级审计。
- 资料的安全性是指保护数据库,防止未经授权的或不合法的使用造成的资料汇漏、更改或破坏
- 安全性控制的一般方法有用户表示鉴定 存取控制 审计 数据加密和视图的保护五级安全措施。
- 存取权限包括两方面的内容,一个是要存取的资料对象另一个是对此资料对象进行操作的类型
- 授权编译系统 和 合法权检查机制 一起组成了安全性子系统。
- 在数据库系统中对存取权限的定义称为授权
- 在 SQL 语言中,为了数据库的安全性,设置了对资料的存取进行控制的语句,对用户授权使用grant 语句,收回所授的权限使用revoke语句。
第五章 数据库完整性
- 保护数据库,防止不合法的使用,以免数据的泄密、更改或破坏,属于数据库的安全性控制。
- SQL 标准使用了一系列概念来描述完整性,包括关系模型的实体完整性 参照完整性和用户定义完整性。
- 数据库完整性的定义一般由 SQL 的DDL语句来实现。它们作为数据库模式的一部分存入数据字典中。
- 关系模型的实体完整性在create table中用primary key定义。
- 为了避免对基本表进行全表扫描,RDBMS 核心一般都对主码自动建立一个索引。
- 关系模型的参照完整性在create table中用foreign key references短语定义哪些列为外码列
- 参照完整性是指在基本表中外码可以为NULL或者为另一个关系主码的有效值
- 为了保护数据库的实体完整性,当用户程序对主码进行更新使主码更新使主码值不唯一时,DBMS 就拒绝此操作
第六章 关系数据理论
1.产生数据冗余和异常的两个重要原因是局部依赖和传递依赖。
2.解决冗余的主要方法,也是规范化的一条原则就是:关系模式有冗余问题,就分解它。
3. 由于数据的冗余,在对数据操作时常会引起各种操作异常,包括:修改异常、插入异常、删除异常。
4. 若关系 R 满足 1NF,且它的每一非主属性完全函数依赖于候选键,则该关系满足2NF。
假设我们有一个关系学生课程表R,包含以下属性:
R(学生ID, 课程ID, 学生姓名, 课程名称, 成绩)
在该关系中,学生ID和课程ID可以唯一确定一条记录,因此它们是候选键。学生姓名和课程名称是非主属性,它们完全依赖于候选键学生ID和课程ID。
由于每一个非主属性都完全函数依赖于候选键,这个关系满足2NF。但是如果成绩属性依赖于学生姓名或者课程名称而不直接依赖于候选键,那么这个关系就不满足3NF。
5.设 F 是关系模式 R 的 FD 集,如果对 F 中每个非平凡的 FD X→Y,都有 X 是 R 的超码则 R∈BCNF。
6. 在函数信赖中,平凡的函数信赖根据 Armstrong 推理规则中的自反律就可推出。
7.Armstrong 公理系统的三条推理规则是自反律、增广律和传递律。
答:自反性
9.最小函数依赖集 F 必须满足的一个条件是 F 中的每个函数依赖的右部都是单属性
答:{B,C}(增广律)
11.设关系模式 R (A,B,C),F 是 R 上成立的 FD 集,F = {B→A,B→C},则分解ρ = {AB,AC}丢失的 FD 是B->C
解释:原始关系模式 R 上的 FD 集合 F = {B→A, B→C} 在分解后的关系模式 R1 和 R2 上是不完整的。因为我们分解后得到的 R1(A, B) 中缺少了属性 C,而 R2(A, C) 中缺少了属性 B
12.设有关系模式 R(A,B,C,D),F 是 R 上成立的 FD 集,F={AB→C,D→B},则 F 在模式 ACD 上的投影为AD->C
13.数据模型质量的高低不会影响数据库性能的好坏,这句话正确否? 不对。
14.关系规范化的目的是控制冗余 避免插入和删除异常 从而增强数据库结构的稳定性和灵活性
15.在关系 A(S,SN,D)和 B(D,CN,NM)中,A 的主键是 S,B 的主键是 D,则 D 在 S 中称为外键。
16.对于非规范化的模式,结过使属性域变为简单域转变为 1NF,将 1NF 经过消除非主属性对主关键字的部分依赖转变为 2NF,将 2NF 经过消除非主属性对主关键字的传递依赖转变为 3NF。
17.在一个关系 R 中,若每个数据项都是不可再分割的,那么 R 一定属于1NF
18.1NF,2NF,3NF 之间,相互是一种3NF属于2NF属于1NF关系。
19.若关系为 1NF,且它的每一非主属性都不部分函数依赖于候选关键字,则该关系为 2NF。
20.在关系数据库的规范化理论中,在执行“分解”时,必须遵守规范化原则:保持原有的依赖关系和无损连接。
第七章 数据库设计
- 数据库应用系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间,称为数据库系统的生命周期
- 数据字典中通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。
- 在数据库的概念设计中,客观存在并且可以相互区别的事物称为实体。
- 设计数据库概念结构时,常用的数据抽象方法是聚集和概括。
- 当局部 ER 图合并全局 ER 图时,可能出现属性冲突、结构冲突、命名冲突。
- 全局 ER 模型的优化原则包括:合并实体类型、消除冗余属性和消除冗余关系。
- 概念设计中最著名的方法就是ER方法
- 完成关系模式设计是在数据库设计的逻辑设计阶段。
- 关系模式的设计应尽可能含有直接关系的属性,不要包含有有间接关系的属性。
- 在关系模式 R 中,能函数决定所有属性的属性组称为模式 R 的超码。
- 在数据库系统生存期中,对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程,称为物理设计阶段。
- 数据库物理设计完成后,进入数据库实施阶段。
- 在数据库运行阶段,对数据库经常性的维护工作主要是由数据库管理员完成的。
- E-R 数据模型一般在数据库设计的概念设计阶段使用。
- 数据模型是用来描述数据库的结构和语义的,数据模型有概念数据模型和结构数据模型两类,E-R 模型是概念数据模型。
- 数据库设计的几个步骤是需求分析 概念设计 逻辑设计 物理设计 编码和调试
- “为哪些表,在哪些字段上,建立什么样的索引”这一设计内容应该属于数据库设计中的物理设计阶段。
- 在数据库设计中,把数据需求写成文档,它是各类数据描述的集合,包括数据项、数据结构、数据流、数据存储
和数据加工过程等的描述,通常称为数据字典 - 在设计分 E-R 图时,由于各个子系统分别有不同的应用,而且往往是由不同的设计人员设计的,所以各个分 E-
R 图之间难免有不一致的地方,这些冲突主要有属性冲突 命名冲突 结构冲突 三类。 - E-R 图向关系模型转化要解决的问题是如何将实体和实体之间的联系转换成关系模式,如何确定这些关系模式
的通过属性和码 - 在数据库领域里,统称使用数据库的各类系统为数据库应用系统。
- 数据库逻辑设计中进行模型转换时,首先将概念模型转换为与特点的DBMS无关的 但为一般的关系模型、网状模型或层次模型所表示的一般模型,然后将一般模型转换为特定DBMS支持的逻辑模型。
第八章 数据库编程
1.嵌入式 SQL 的实现,有两种处理方式:一种是扩充主语言的编译程序,使之能处理 SQL 语句;另一种是采用预处理方式。
2.存储过程是使用 SQL 语句和流程控制语句编写的模块,存储过程经编译和优化后存储在数据库服务器 中。
3.存储过程是使用SQL语句和流程控制语句编写的模块,存储在数据库服务器端,客户端程序调用。
4.存储过程可以增强代码的可重用性,提高系统安全性
5.ODBC 是一个分层体系结构,由纵向四个部分:ODBC 数据库应用程序、驱动程序管理器、DB 驱动程序、数据源构成。
6.ODBC 的卓越贡献是使应用程序具有良好的互用性和可移植性,并且具备同时访问多种数据库的能力。
7.创建数据源最简单的方法是使用ODBC
8.ODBC 规范定义的驱动程序有两种类型:即单层驱动程序和多层驱动程序
9.ODBC 数据库应用程序:用宿主语言和 ODBC 函数编写的应用程序用于访问数据库。