数据库复习笔记(全覆盖,包括往年部分真题)(常用的数据网站汇总)
PS:大学开始写博客,写了三年了,虽然大二太忙了,专业知识学的潦草,也没写太多博客。大三开始写专业课的复习笔记,没想到这一篇博文浏览和点赞这么高,心里还是挺高兴的。当时写的时候也没注意,加上好久没写了,结果用了富文本,本来一直用的Markdown,写到一半才发现,所以这一篇的排本就很丑,如果大家看着不舒服可以留言,我可以修改一下格式,当然,好好学习,学习的知识才是最重要的!
## 1、数据库系统概述
**1.1 数据库的基本概念**
数据库:
长期储存在计算机内、有组织的、可共享的大量数据的集合。
*基本特征:*
数据按一定的数据模型组织、描述和储存
可为各种用户共享、冗余度较小、易扩展
数据独立性较高
数据 :
描述事物的符号记录
数据有结构的:记录是计算机存储数据的一种格式或一种方法
数据库管理系统及其功能:
位于用户应用与操作系统之间的一层数据管理软件 ,是基础软件,是一个大型复杂的软件系统
用途: 科学地组织和存储数据、高效地获取和维护数据
数据库系统
是指在计算机系统中引入数据库后的系统构成。
在不引起混淆的情况下常常把数据库系统简称为数据库。
元数据
用来描述数据的数据。
**1.2 数据管理技术的产生和发展,以及每个阶段的特点**
## 2、数据模型
**2.1数据模型的基本概念**
是对现实世界数据特征的模拟和抽象,用来描述数据是如何组织、存储和操作的。
**2.2数据模型的分类及每类常用的数据模型**
对应不同的应用层次分成三种类型:分别是概念模型,逻辑模型和物理模型;
概念模型:
信息世界的基本概念:
实体(Entity)
客观存在并可相互区别的事物称为实体。
可以是具体的人、事、物或抽象的概念。
属性(Attribute)
实体所具有的某一特性称为属性。一个实体可以由若干个属性来刻画。
码(Key)
唯一标识实体的属性集称为码。
实体型(Entity Type)
用实体名及其属性名集合来抽象和刻画同类实体称为实体型
实体集(Entity Set)
同一类型实体的集合称为实体集
联系(Relationship)
1.实体内部的联系:组成实体的各属性之间的联系
2.实体之间的联系: 通常是指不同实体集之间的联系
实体之间的联系有一对一(1:1)、一对多(1:n)和多对多(m:n)等多种类型
**2.3数据模型的组成要素**
数据模型是严格定义的一组概念的集合, 精确地描述了系统的静态特性、动态特性和完整性约束条件。
数据模型由三部分组成:
数据结构–描述系统的静态特性 数据结构的类型来命名数据模型
数据操作–描述系统的动态特性 对数据库中各种对象的实例允许执行的操作的集合
完整性约束
一组完整性规则的集合
完整性规则:
给定的数据模型中数据及其联系所具有的制约和依存规则。
用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。
数据模型对完整性约束条件的定义
反映和规定必须遵守的基本的通用的完整性约束条件。
提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。
理解
完整性约束使用一些规则,规范数据的操作,来保证数据的正确、有效和相容。
ER图
ER图分为实体、属性、关系三个核心部分。实体是长方形是实体,属性是椭圆形,关系为菱形。
## 3、数据库系统结构
**3.1数据库模式和实例的概念以及区别**
*模式(Schema)*
是对数据库逻辑结构和特征的描述
是型的描述,不涉及具体值
模式是相对稳定的
*实例(Instance)*
数据库某一时刻的状态——模式的一个具体值
同一个模式可能有很多实例
实力随数据库中数据的更新而变动
**3.2数据库系统的三级模式结构**
*模式(Schema)*
模式(也称概念模式):
数据库中全体数据的逻辑结构和特征的描述
所有用户的公共数据视图
一般,某个应用的数据库有一个模式
模式是数据库系统模式结构的中心:
与数据的物理存储细节和硬件环境无关
与具体的应用程序、开发工具及高级程序设计语言无关
定义模式:
DDL定义数据的逻辑结构,以某种数据模型为基础
数据记录由哪些数据项构成,数据项的名字、类型、取值范围等
定义数据之间的联系
定义与数据有关的安全性、完整性要求
*外模式 (External Schema)*
外模式(也称子模式或用户模式):
数据库用户使用的局部数据的逻辑结构和特征的描述
数据库用户的数据视窗,是与某一应用有关的数据的逻辑表示
外模式与模式的关系:
外模式通常是模式的自己、一个模式可以有多个外模式,反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求
对模式中某一数据,在不同的外模式种结构、类型、长度、保密级别等都可以不同
外模式与应用的关系:
一个外模式可以为多个应用系统所使用,一个应用程序只能使用一个外模式
外模式的用途:
每个用户只能看见和访问所对应的外模式中的数据,简化用户视图
保证数据库安全性的一个有力措施
*内模式 (Internal Schema)*
内模式(也称为存储模式):
是数据物理结构和存储方式的描述
是数据再数据库内部的表示方式
记录的存储方式(例如,顺序存储,堆存储,Cluste按hash方法存储等)
索引的组织方式(B+树,Bitmap,Hash)
数据是否压缩存储
数据是否加密
数据存储记录结构的规定——如定长/变长,记录是否可以跨页存放等
一个数据库只有一个内模式
三级模式是对于数据的三个抽象级别
数据库管理系统内部提供二级映像
外模式/模式映像:
对每一个外模式,有一个外模式/模式映像 定义外模式与模式之间的对应关系 映像定义通常包含在各外模式的描述中
保证数据的逻辑独立性
当模式改变时,数据库管理员堆外模式/模式映像做相应改变,使外模式保持不变
应用程序是依据数据的外模式编写的,应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
模式/内模式映像:
定义了数据全局逻辑结构与存储结构之间的对应关系。如,说明某个逻辑记录对应何种存储结构
数据库中模式/内模式映像是唯一的
该映像定义通常包含在模式描述中
保证数据的物理独立性
当数据库的存储结构改变了(例如选用了另一种存储结构) ,数据库管理员修改模式/内模式映像,使模式保持不变
模式不变,则应用程序不变。保证了数据与程序的物理独立性,简称数据的物理独立性
**3.3数据库系统的两级映像功能与数据独立性**
保证了应用程序的稳定性
除非应用需求本身发生变化,否则应用程序一般不需要修改
从程序为中心——发展为以数据为中心
具有了数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去
数据的存取由数据库管理系统管理
简化了应用程序的编制
大大减少了应用程序的维护和修改
**3.4SQL SERVER数据库种类及文件(参考教材8.6节)**
## 4、关系数据库基础
**4.1关系模型的基本概念**
域
属性取值范围
关系模式
1.最早由E.F.Codd在1970年提出。
2.是从表(Table)及表的处理方式中抽象出来的,是在对传统表及其操作进行数学化严格定义的基础上,引入集合理论与逻辑学理论提出的。
3.是数据库的三大经典模型之一,现在大多数数据库系统仍然使用关系数据模型。
4.标准的数据库语言(SQL语言)是建立在关系模型基础之上的,数据库领域的众多理论也都是建立在关系模型基础之上的。
关系的前两种定义:
笛卡尔乘积的子集就是一个关系
关系是满足特定规范的二维表
关系与关系模式的区别:
1.同一关系模式下,可有很多的关系
2.关系模式是关系的结构,关系是关系模式在某一时刻的数据
3.关系模式是稳定的:而关系是某一时刻的值,是随时间可能变化的
码:也称作键,指的是取值具有唯一性的属性,可以唯一的确定表中的一个元组,他可以由一个属性组成,也可以由多个属性共同构成;
候选码:某一属性组的值能唯一地标识一个元组,而其子集不能的属性组
主码:若一个关系有多个候选码,则选定一个作为主码
外码:必须与其所参照的主码具有相同的域,且外码的取值只能引用参照表中主码的值或者使用空值。
4.2关系的类型
基本关系
实际存在的表,是 实际存储数据的逻辑表示
查询表
查询结果对应的表
视图表
由基本表或者其他视图表导出的表
4.3关系的性质
列是同质的,即每一列中的分量是同一类型的数据,来自同一个域
关系中的元组(行)无先后顺序
关系中的属性(列)无先后顺序
在关系中的所有元组必须是独一无二的
在元组中的每个值是一个原子值
4.4什么是复合属性、多值属性
4.5关系数据库和关系数据库模式
*4.6什么是完整性约束,五种约束的概念*
1、关系的完整性约束
完整性通常包括域完整性、实体完整性、参照完整性和用户自定义完整性;其中域完整性、实体完整性和参照完整性是关系模型必须满足的完整性的约束条件
2、域完整性约束
指属性的值域的完整性
3、实体完整性规则
关系中的主码值不可以为空值
意义:关系中的元组都是通过主码来识别的,若主码为空,则会出现不可识别的个体,这是不允许的。
4、参照完整性规则
如果关系R1的外码Fk与关系R2的主码Pk相对应时。那么R1的每一个元组的Fk值都等于R2的某个元组的Pk值或者为空。
意义:如果关系R1的某个元组t1参照R2的某个元组t2,则必须要求t2存在。
5、用户定义的完整性规则
用户根据具体应用的环境来定义的完整性约束。
*五种约束*
域约束
键约束
非空约束
实体完整性约束
参照完整性约束
4.7关系代数八种运算的符号、意义及表示方法。在这八种运算中哪些属于基本运算?
基本运算
选择(σ)
设R是一个n元关系,F是一个形如riθc的公式,其中θ∈{=,≠,>,<,≤,≥},R的选择操作定义为F(R)={(r1,…,ri ,…,rn )|(r1,…,ri ,…,rn )∈R∧riθc }。
白话: 把符合条件的拿出来
投影(Π)
设R是一个n元关系,R的投影操作定义为∏i1,i2,…,im(R) = {(ri1, …,rim)|(r1 ,…,ri1,…,rim,…,rn)∈R}。
白话: 看横行, 如果有两个横行相同, 只写一个. 因此若是S关系投影操作的话, 也就是有b和a
并(∪)
设R和S是n元关系,而且两者各对应属性的数据类型也相同。R和S的并操作定义为 R∪S = { t | t∈R∨t∈S }。
白话: R和S关系合一起, 相同的不写
交(∩)
设R和S是n元关系,而且两者各对应属性的数据类型也相同。R和S的交操作定义为 R S = { t | t∈R∧t∈S }= R-(R-S)。
白话: 相同的拿出来
差(-)
设R和S是n元关系,而且两者各对应属性的数据类型也相同。R和S的差定义为 R-S ={ t | t∈R∧tS}。
白话: 因为是R-S, 找R在S关系中没有的
笛卡尔积(X)
设R是n元关系,S是m元关系,R和S的的笛卡尔积定义为R×S={(r1,…,rn,s1,…,sm)|(r1,…, rn )∈R∧(s1, …,sm )∈S}。
白话: 和普通的笛卡尔乘机差不多, 自己看看, 规律很好找
连接()
设R是n元关系,S是m元关系,A是R的属性,B是S的属性,A和B的值域具有相同的数据类型,θ∈{=, ≠, >, <, ≤, ≥}。R和S的连接操作定义为这里写图片描述![在这里插入图片描述](https://img-blog.csdnimg.cn/20201124202758225.png#pic_center)
其中,r[A]表示元组r在属性A上的值,s[B]表示元组s在属性B上的值。我们称A和B是连接属性。
除(/)
4.8什么叫“并兼容”的两个关系?哪些关系代数运算要求两个关系必须是“并兼容”的?什么叫“重复消除”?
两个关系有相同数量的属性,每对对应的属性有同样的值域; 并,交,差。
## 5、SQL语言
**5.1SQL语言的功能组成**
数据查询,数据操纵,数据定义,数据控制;
**5.2单表查询,主要掌握以下SQL语句用法,并复习实验2相关部分**
(1)不带元组筛选条件的单表查询
检索所有行和列:**SELECT * FROM Student**
(2)重命名查询结果关系列名(友好列标题)
在原始字段之后跟上As再指定标题即可:**SELECT Sno As 学号,Sname As 姓名……**
(3)TOP关键字
TOP n语法只说明显示前n条数据:**SELECT TOP 3 * FROM Student**
(4)筛选元组:IN、BETWEEN、DISTINCT、LIKE的用法
1.可以在BETWEEN…AND语法前使用NOT取反
检索年龄不在19-21岁的学生信息,显示学号,姓名:**SELECT Sno,Sname FROM Student WHERE Sage NOT BETWEEN 19 AND 21**
2.要检索的信息是一系列取值列表,可以使用IN
从Teacher表中检索职称为教授或者副教授的信息:**SELECT * FROM Teacher WHERE Tport IN(‘教授’,’副教授’)**
3.使用DISTINCT关键字,表示检索时显示不重复信息
显示Teacher表中有哪些职称,要求信息不重复:**SELECT DISTINCT Tprot FROM Teacher**
4.使用LIKE关键字进行模糊查询
查询Student表中姓刘的同学:**SELECT * FROM Student WHERE Sname LIKE ‘刘%’**
(5)空值检查
检索Master数据库中spt_values表里low字段为空的数据行:**SELECT * FROM spt_values WHERE low IS NULL**
(6)查询结果排序
使用ORDER BY对显示的数据进行排序,升序时ASC可以省略
显示Course表的所有行,要求按照课程名称降序显示:**SELECT * FROM Course ORDER BY Cname DESC**
显示Course表的所有行,要求按照课程学分降序,学分相同再按照课程号升序排列:**SELECT * FROM Course ORDER BY Ccredit DESC,Cno ESC**
(7)返回“计算列”
对Course表,显示课程号、课程名、学分,另外额外增加一列“学时”,学时等于学分*16:**SELECT Cno,Cname,Ccredit, Ccredit*16 AS 学时 FROM Course**
(8)五个汇总函数的用法
COUNT(统计Teacher表中教授的数量):**SELECT COUNT(*) FROM Teacher WHERE Tprot = ‘教授’** (COUBT()函数返回匹配指定条件的行数,COUNT(*)函数返回表中的记录数)
SUM(求和):对Course表中必修课的学分进行求和:**SELECT SUM(Ccredit) FROM Course WHERE XKLB=’必修’**
MAX
MIN
AVG:分别用来计算最大值,最小值,平均值,显示Teacher表中教师年龄最大,最小,平均年龄:**SELECT MAX(Tage),MIN(Tage),AVG(Tage) FROM Teacher**
(9)分组及对分组的筛选
对Course表,按照必修和选修进行分类,统计每种类别的课程数量:**SELECT XKLB As 类别,COUNT(Cname) AS 数量 FROM Course GROUP BY XKLB**
对Student表按照专业和性别进行分组,显示每个专业,每种性别的学生数量,按照学生数量降序排列:**SELECT Smajar,Ssex,COUNT(Sno) FROM Student GROUP BY Smajor,Ssex,ORDER BY COUNT(Sno) DESC**
**5.3多表连接查询,主要掌握以下SQL语句用法,并复习实验2相关部分**
(1)内联接
对SC和Student表进行内连接,显示学生的学号,姓名,课程号,分数:
语法一:**SELECT Student.Sno,Student.Sname,SC.Cno,SC.Grade FROM SC JOIN Studet ON SC.Sno=Student.Sno**
语法二:**SELECT Student.Sno,Student.Sname,SC.Cno,SC.Grade FROM SC,Student WHERE SC.Sno=Studet,Sno**
(2)外联接
让Student表和SC表进行左外连接,即不管学生是否选课,该学生的信息都会显示出来:
**SELECT Student.Sno,Student.Sname,SC.Sno,SC.Grade FROM Student LEFT OUTER JOIN SC ON Student.Sno= SC.Sno**
让SC表和Teacher表进行完全外连接,显示教师编号,教师姓名,教师讲授的课程号:
**SELECT Teacher.Tno,Teacher.Tname.SC.Cno FROM SC FULL OUTER JOIN Teacher ON SC.Tno=Teacher.Tno**
(3)交叉联接
对学生和课程两张表进行交叉连接:**SELECT * FROM Student CROSS JOIN Course**
(4)自联接
(5)补充:一个查询优化的例子(参考课件第7讲)
**5.4子查询,主要掌握以下SQL语句用法,并复习实验2相关部分**
(1)带有IN谓词的子查询
查询在SC表中选修了课程的学生信息:**SELECT * FROM Student WHERE Sno IN (SELECT DISTINCT Sno FROM SC)**
(2)带有比较运算符的子查询
(3)带有ANY或ALL谓词的子查询
在教室表中,检索比任何一个女教师年龄都大的男教师的信息:**SELECT * FROM Teacher WHERE Tsex=’男’ AND Tage > ALL(SELECT Tage FROM Teacher WHERE Tsex=’女’)**
(4)带有EXISTS谓词的子查询(只需掌握一层EXISTS)
查询和王国在同一专业学习的所有学生的基本信息:**SELECT Sno,Sname,Smajar FROM Student S1 WHERE EXISTS(SELECT * FROM Student S2 WHERE S2 WHERE S1.Smajor=S2.Smajor AND S2.Sname=’王国’)**
**5.5集合查询,主要掌握以下SQL语句用法,并复习实验2相关部分**
(1)并
将学生的学号、姓名和教师的教工号,姓名,在一个检索结果中显示出来:**SELECT Sno,Sname FROM Student UNION SELECT Tno,Tname FROM Teacher**
(2)交
对专业名以计算机开头的学生及年龄是21岁的学生,用交运算求两者的交集:**SELECT Sno,Sname,Sage,Smajor FROM Student WHERE Smajor LIKE ‘计算机%’ INTERSECT SELECT Sno,Sname,Sage,Smajor FROM Student WHERE Sage=21**
(3)差
查询专业名以计算机开头,但不包括年龄是21岁的学生:**SELECT Sno,Sname,Sage,Smajor FROM Student WHERE Smajor LIKE ‘计算机%’ EXCEPT SELECT Sno,Sname,Sage, Smajor FROM Student WHERE Sage=21**
**5.6数据的增、删、改(利用SQL语言),并复习实验3相关部分**
将学生表中的学号,姓名,性别,院系,年龄,电话,邮箱抽取出来,插入Teacher表,所有新插入的数据,职称为讲师:
**INSERT INTO Teacher(Tno,Tname,Tsex,Tdept,Tage,Tport,Tel,EMAIL)SELECT Sno,Sname,Ssex,Sdept,Sage,’讲师’,Tel,EMAIL FROM Student**
将Course表中的编号是B002的课程,学分修改为3分:
**UPDATE Course SET Ccredit=3 WHERE Cno=’B002’**
删除Course表中编号为B009的记录
**DELETE FROM Course WHERE Cno=’B009’**
字符截取函数SUBSTRING
查询姓名中第二个汉字和第三个汉字相同的学生:**Select * from Student Where SUBSTRING(Sname,2,1)=SUBSTRING(Sname,3,1)**
**5.7DDL数据定义语言,主要掌握以下SQL语句用法,并复习实验3相关部分**
(1)创建数据库(简易版)
CREATE DATABASE 数据库名字
(2)删除数据库
DROP DATABASE 数据库名字
(3)创建数据库表:指定数据类型、是否允许为空、标识列
(4)修改数据库表:增加列、修改列、删除列
Alter table 表名 add 字段名 类型 是否为空
Alter table 表名 alter column 字段名 类型 是否为空
Alter table 表名 drop column 字段名 类型 是否为空
(5)删除数据库表
DROP table 表名
(6)完整性约束条件
①完整性约束条件的分类:按作用对象、按状态
②默认值约束
③对数据格式的约束
④对取值范围或取值集合的约束
⑤元组级约束
⑥主键约束
⑦唯一性约束
⑧外键约束
⑨删除约束
(7)视图的概念(复习实验3相关部分)
(8)视图的优点
(9)视图的创建
创建一个名为vwSCs的视图,将学生表中院系是计算机科学学院的学生学号、姓名、性别、专业四个字段显示出来:
**CREATE VIEW vwScs AS SELECT Sno,Sname,Ssex,Tel,EMAIL FROM Student WHERE Sdept=’计算机科学学院’**
(10)视图的修改
通过对视图进行数据更新,将杨华的电话修改为66666666:**UPDATE vwScs SET TEL=’66666666′ WHERE Sname =’杨华’**
(11)删除视图
(12)视图的更新
①视图可更新性的基本判断原则
(1)视图中的每一列都必须和一个基本表中的一个源列对应
(2)视图中的每一行都必须和一个基本表中的一个源行对应
②视图可更新性的具体判断标准
只要修改只影响与视图相关的一个基础表,视图就可以修改,
包含聚合函数的视图不可更新
存在计算列或者导出列的视图不可更改
(14)索引的概念和作用(参考教材4.7节)
(15)索引的创建和管理(复习实验3相关部分)
**5.8DCL数据控制语言,主要掌握以下相关概念及SQL语句用法,并复习实验4相关部分**
(1)SQL SERVER的安全控制过程、安全控制模型
(2)SQL SERVER的身份验证模式
(3)SQL SERVER登录名的管理
(4)SQL SERVER数据库用户的管理
(5)SQL SERVER权限的管理
(6)SQL SERVER角色的管理
**5.9 Transact-SQL编程,主要掌握以下相关概念及T-SQL语句用法,并复习实验5相关部分**
(1)Transact-SQL基础语法
(2)Transact-SQL流程控制语句
(3)Transact-SQL常用函数
(4)存储过程概述
(5)存储过程(包括带输入和输出参数的)的创建与管理
**6、数据库设计(复习数据库设计案例)**
6.1数据库设计的基本过程及每阶段的主要任务
数据库设计通常分为6个阶段
1、需求分析:分析用户的需求,包括数据、功能和性能需求;
分析方法常用SA(Structured Analysis) 结构化分析方法,SA方法从最上层的系统组织结构入手,采用自顶向下,逐层分解的方式分析系统。
数据流图表达了数据和处理过程的关系,在SA方法中,处理过程的处理逻辑常常借助判定表或判定树来描述。在处理功能逐步分解的同事,系统中的数据也逐级分解,形成若干层次的数据流图。系统中的数据则借助数据字典(data dictionary,DD)来描述。数据字典是系统中各类数据描述的集合,数据字典通常包括**数据项,数据结构,数据流,数据存储,和处理过程** 5个阶段。
2、概念结构设计:主要采用E-R模型进行设计,包括画E-R图;
3、逻辑结构设计:通过将E-R图转换成表,实现从E-R模型到关系模型的转换;
4、数据库物理设计:主要是为所设计的数据库选择合适的存储结构和存取路径;
常用的存取方法有三类:1.索引方法,目前主要是B+树索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。
5、数据库的实施:包括编程、测试和试运行;
6、数据库运行与维护:系统的运行与数据库的日常维护。
6.2 掌握E-R建模和绘制E-R图的方法
6.3 “数据库逻辑结构设计阶段”的任务
6.4 掌握将E-R模型转换为关系模型的规则和方法
(1)每个实体类型转换成一个关系模式。实体的属性就是关系模式的属性,实体的的码就是关系的主码。
(2)实体之间的联系转换,根据不同的情况进行不同的处理:一个 1:1 的联系可以转换为一个独立的关系模式,也可以与任意一端的关系模式合并;一个 1:n 的联系可转换为一个独立的关系模式,也可以与 n 端实体对应的关系模式合并;一个 m:n 的联系必须转换为一个关系模式。
6.5 掌握关系模式的非形式化设计原则和更新异常的概念
6.6 掌握1NF、2NF、3NF的概念和规范化方法(参考教材5.1、5.2、5.3节)
*规范化*的基本思想是消除关系模式中的数据冗余,消除数据依赖中不合适的部分,解决数据插入、删除和修改时发生的异常现象。关系数据库的规范化过程中为不同程度的规范化要求设立的不同的标准或准则称为范式。一个低一级的范式的关系模式,通过模式分解可以转换为若干个高一级的范式的关系模式的集合,这种过程叫做规范化。
6.6.1 第一范式
如果关系模式R所有属性均为简单属性,即每个属性都是不可再分的,则称R为第一范式。
6.6.2 第二范式
如果关系模式属于第一范式,R(U,F)中的所有非主属性都完全函数依赖于任意一个候选关键字,则称关系R属于第二范式。即不存 在某非主属性对某候选关键字存在部分函数依赖。
6.6.3 第三范式
如果关系模式R属于第二范式,R(U,F)中的所有非主属性对任何候选关键字都不存在传递函数依赖,则称R是属于第三范式。
6.7 反规范化的基本概念(参考教材5.4节)
常用的反规范化技术有哪些?
解:反规范化常用的方法是合并 1:1 联系的表,合并 1:n 联系的表,复制 1:n 联系 1端表中数据到 n 端,复制 m:n 联系中 m 端和 n 端数据到新产生的联系表中。
有关ER图的例题
例题一:
(2)将所画的 E-R 图转换为关系模型。
解: 读者(借阅证号 ,姓名,地址)
图书(编号,书名,出版社,单价,作者姓名)
借阅(借阅证号,图书编号,借阅日期)
作者(姓名,性别,工作单位)
例题二
2. 设计满足下述业务需求的 E-R 图(注意:实体、属性和联系名称均用中文表示)。
某图书馆要实现如下的业务:新书的入库,读者信息的入库,读者对图书的借阅 和归还业务。此外,图书馆还要维护书籍的作者信息,在有需求的情况下可以查 询作者联系方式。
(1)图书,需要存储:图书编号、索书号、书名、出版社、单价;
(2)作者,需要存储:作者编号、姓名、性别、联系电话;(3)读者,需要存储:借阅证号、姓名、联系电话。图书编号是指图书馆中的每一本书,有一个全馆唯一的编号。假定一个作者可以撰写多本图书,但是一个图书只能属于一个作者。一个读者可以借多本图书,一本书也可以先后在不同时刻被多个读者借阅。读者借阅图书时,要记录借阅的日期时间。你的设计中暂不考虑读者的还书业务,也不考虑同一个索书号的库存问题。
2. 将该 E-R 图转换为等价的关系模式,分别指出每个关系的主键和外键,并画出各关系间的主键、外键参照(注意:关系模式的表示规范请参照下图、不用写数据类型;关系和属性名称均用中文表示)。
作者(作者编号,姓名,性别,联系电话)
图书(图书编号,索书号,书名,出版社,单价,作者号)
读者(借阅证号,姓名,联系电话)
借阅(图书编号,借阅证号,借阅日期)
说明:借阅表也可增加一个自增字段作为主键
例题三:
3. 设计满足下述业务需求的 E-R 图,并写出你在确定 E-R 模型约束条件时所做的其他假设(注意:实体、属性和联系名称均用中文表示)某研究所拟开发一套系统管理其科研人员及科研项目,经分析,有如下需求:
1) 该研究所由多个研究部门组成,每个员工属于某一个研究部门;
2) 该研究所有若干研究项目,每个项目由且仅由一个部门负责;
3) 每个员工可参与多个研究项目(注:可参与不由员工所属部门负责的项目),当员工参与研究项目时,需记录这个员工在所参与的每个项目上的工作时间和角色。
4) 员工的基本信息包括:员工号、姓名、性别、生日、职称、年龄;
5) 部门的基本信息包括:部门号、部门名、办公地址;
6) 研究项目的基本信息包括:项目编号、项目名称、项目经费;
7) 上面信息中的员工号,部门号和项目编号都具有唯一性。
**7、 数据库保护**
7.1事务的基本概念
7.2 事务的定义
事务是用户定义的一个数据操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单元;
7.3 事务的特征
7.4 并发控制
事务是并发控制的基本单位。
7.5 并发操作引发的问题
并发操作带来的数据不一致性包括:丢失修改、不可重复读、读 “脏” 数据。
7.6并发控制的基本方法(封锁协议,并发调度的可串行性,两段锁协议)
并发控制主要技术:封锁、时间戳、乐观控制法、多版本并发控制等。
基本封锁类型:排他锁(X 锁 / 写锁)、共享锁(S 锁 / 读锁)。
7.7 死锁的概念、预防、诊断与解除(详见教材第7.2节)
活锁和死锁:
活锁:事务永远处于等待状态,可通过先来先服务的策略避免。
死锁:事物永远不能结束
预防:一次封锁法、顺序封锁法;
诊断:超时法、等待图法;
解除:撤销处理死锁代价最小的事务,并释放此事务的所有的锁,使其他事务得以继续运行下去。
7.7数据库故障类型
事务内部故障,系统故障,介质故障,计算机病毒
7.8数据库恢复的基本方法(详见教材第7.3节)
7.9备份和恢复数据库(详见教材第11章)
7.10 备份类型和备份内容(详见教材第11.2节)
数据库备份,就是通过特定的办法,将数据库的必要文件复制到转储设备的过程。其 中,转储设备是指用于放置数据库拷贝的磁带或磁盘。数据库备份的作用就是防止数据丢失,最大限度地降低灾难性数据丢失的风险,从数据库中定期保存用户对数据库所做的修改,当数据库出现故障时,用以将数据库从错误状态下恢复到正确状态的副本。还有一个作用,就是对数据库进行转储。
7.11 备份策略(详见教材第11.3节)
7.12 恢复策略(详见教材第11.5节)
**8 、数据库新技术**
8.1 什么是大数据?(参考教材14.2)
8.2 数据仓库与数据挖掘(参考教材14.3)
8.3 NoSQL数据库(参考教材14.4)