数据库知识点复习

实体(entity):客观存在并可相互区别的事物,虚拟的概念

属性(attribute):实体所具有的某一特性,共同的性质

码(key),键唯一标识实体的属性集

实体类型(entity type,class):用实体名及其属性名集合来抽象和刻画同类实体。例如学生(学号,姓名,性别,出生年月日,所在院系,入学时间)就是一个实体型

实体集(entity set):同一类型实体的集合。例如,全体学生就是一个实体集

联系(relationship):实体集内的单个实体之间的联系通常是指不同实体集之间的联系,实体之间的联系有一对一、一对多和多对多等多种类型
————————————————

关系数据库

关系数据库系统采用关系模型作为数据的组织方式

基本概念:

关系(ralation):一个关系对应通常说的一张表

元组(tuple):表中的一行即为一个元组

属性(attribute):表中的一列即为一个属性,给每一个属性起一个名称即为属性名

码,键(key):表中的某个属性组,它可以唯一确定一个元组

域(domain):域是一组具有相同数据类型的值的集合。即某个属性的取值范围

分量:元组中的一个属性值

关系模式:对关系的描述,一般表示为关系名(属性1,属性2,···,属性n)

数据库系统的结构

在这里插入图片描述

1.模式(schema)

模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,不同的dbms表示模式的方法不一样!

Create schema schema_name ;

Schema : object (user, table , view , function, procedure,index,…);

Schema = user(MYSQL, ORACLE,…)

Schema : object ( table , view , function, procedure,index,…);

Create user user_name identified by pass_wd;

2.外模式(external schema)

它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述((你有权限可我也看到的东西!VIEW)

3.内模式(internal schema)

一个数据库只有一个内模式。它是数据物理结构和存储方式的描述

关系数据结构及形式化定义

基本概念:

候选码(key):某一属性组的值能唯一地标识一个元组,而其自己不能,则称该属性组为候选码(candidate key)

主码:若一个关系有多个候选码,则选定其中一个为主码(primary key),主码只可以有一个

主属性(prime attribute):候选码的诸属性称为(主属性)
非主属性:不包含在任何候选码中的属性

全码(all key):关系模式的所有属性是这个关系模式的候选码;

代理键(id,序列号、序号,系统自动生成,自增长)

关系的完整性

实体完整性

若属性A是基本关系的主属性,则A不能取空值

参照(引用)完整性

主(父亲)、从(子)

关系代数

选择(selection)

选择是在关系R中选择满足给定条件的诸元组,记作

δF® = {t|t∈R∩F(t)=‘真’}

其中F表示选择条件,它是一个逻辑表达式

例如:查询信息系(IS系)的学生

δSdept=‘IS’(Student)

投影(projection)

关系R上的投影是从R中选择出若干属性列组成新的关系,记作

∏A® = {t[A]|t∈R}

其中A为R中的属性列

例如:查询学生的姓名和所在系

∏Sname,Sdept(Student)

连接(笛卡尔积)

并UNION

差minus(except)

重命名 as

关系数据标准语言SQL

删除(drop 、delete )

Drop : 删除数据库对象(user table,view,index,function,procedure)
Delete: 删除数据
修改(alter , update)

Alter 改数据库对象(modify)(user table,view,index,function,procedure)
Update 改数据!

模式

定义模式

CREATE SCHEMA<模式名> AUTHORIZATION<用户名>

Create user <用户名> identified by <用户密码>;

删除模式

DROP SCHEMA<模式名><CASCADE|RESTRICT>

Drop user <用户名> ;

Drop user <用户名> cascade;

定义基本表

CREATE TABLE<表名>(<列名><数据类型>[列级完整性约束条件]

[,<列名><数据类型>[列级完整性约束条件]]

···

[,<表级完整性约束条件>]);

例如:

修改基本表

ALTER TBALE<表名>

[ADD [COLUMN]<新列名><数据类型>[完整性约束]]

[ADD<表级完整性约束>]

[DROP[COLUMN]<列名>[CASCADE|RESTRICT]]

[DROP CONSTRAINT<完整性约束名>[RESTRICT|CASCADE]]

[ALTER COLUMN<列名><数据类型>];

删除基本表

DROP TABLE <表名> [RESTRICT|CASCADE]

索引

建立索引

CREATE [UNIQUE][CLUSTER] INDEX <索引名>

ON <表名>(<列名>[<次序>][,<列名>[<次序>]]···);

修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>;

数据查询

(SELECT [ALL|DISTINCT] <目标列表达式> [,<目标列表达式>]···

FROM <表名或视图名> [,<表名或视图名>···]|(<SELECT 语句>) [AS] <别名>

[WHERE <条件表达式>]

[GROUP BY <列名1>

[HAVING <条件表达式>]]

[ORDER BY <列名2> [ASC|DESC]])

;

数据更新

插入元组

INSERT INTO <表名>[([<属性列1>][,<属性列2>•••)] VALUES(<常量1>[,<常量2>]•••)

插入子查询结果

INSERT INTO <表名>[<属性列1>][,<属性列2>···] 子查询;

修改数据

UPDATE <表名>

SET <列名> = <表达式>[,<列名>=<表达式>]···

[WHERE<条件>];

删除数据

DELETE FROM <表名>

[WHERE<条件>];

视图

视图能够简化用户的操作(简化操作)

视图使用户能以多种角度看待同一数据(多角度)

视图对重构数据库提供了一定程度的逻辑独立性(逻辑独立性)

视图能对机密数据提供安全保护(安全保护)

适当利用视图可以更清晰地表达查询(清晰表达)

定义视图

CREATE VIEW <视图名>[(<列名>[,<列名>]···)]

AS <子查询>

[WITH CHECK OPTION]

当更新、插入或删除时,WITH CHECK OPTION可以将子查询中的条件自动加上

3.6.2 删除视图
DROP VIEW <视图名> [CASCADE]

3.7 索引
Create index <索引名> on <表名> (<列名>[,<列名>]···)

Drop index <索引名>;

过程与函数

过程

Create procedure <过程名> ([(<参数 in 参数类型>[,<参数 in out参数类型>]···)

As

Begin

End;

函数

Create function <函数名> ([ (<参数 in 参数类型>[,<参数 in参数类型>]···)

Return <结果的数据类型>

Begin

Return <结果表达式>;

End;

关系数据理论

规范化

一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)

函数依赖

属性闭包!

阿姆斯特朗公理!

等价的最少的函数依赖集!

第二范式(2NF)

若R∈1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R∈2NF

例如:SLC的码为(Sno,Cno),Sdept和Sloc依赖于Sno,不依赖于Cno,则不满足第二范式

6.1.3 第三范式(3NF)
若R∈2NF,且非主属性不能有传递依赖

例如:SLC的码为(Sno,Cno),Sno决定Sdept,Sdept决定Sloc,存在Sno->Sdept->Sloc这样的传递依赖,则不满足第三范式

6.1.4 BCNF(Boyce Codd Normal Form)
若R∈3NF,且不能有主属性对码的部分依赖和传递依赖

数据库设计

7.1. 数据库设计概述
数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效的存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。

7.2. 数据库设计的基本步骤
需求分析(建立数据字典)

概念结构设计(E-R图建立,应用需求抽象为信息世界的结构)

逻辑结构设计(E-R图转成相应的数据模型,在基本表基础上构建外模式)

物理结构设计(选择物理存储安排,建立索引,构建内模式)

数据库实施

数据库运行和维护

需求分析和概念设计独立于任何数据库管理系统

逻辑设计和物理设计与选用的数据库管理系统密切相关

7.3. 数据字典
它是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。

通常包括:数据项、数据结构、数据流、数据存储和处理。

数据库的概念模型向物理模型的转换规则!

数据库编程

8.1. 标准SQL缺点和SQL编程技术优点
标准SQL是非过程化的查询语言,缺少流程控制能力,难以实现应用业务的逻辑控制

SQL编程技术可以有效克服SQL语言实现复杂应用方面的不足,提高应用系统和数据库管理系统间的互操作性。

8.2. 存储过程
存储过程是由过程化SQL语句书写的过程,这个过程经编译和优化后存储在数据库服务器中。

运行效率高,因为是被编译后保存在数据库中的

降低了客户机和服务器的通信量

方便实施企业规则

8.3. JDBC编程
是为解决异构数据库间的数据共享而产生的,它建立了一组规范,并提供了一组访问数据库的应用程序编程接口(API)。JDBC具有两重约束力:一方面规范应用开发,另一方面规范关系数据库管理系统应用接口

数据恢复技术

10.1. 事务的概念及事务的4个特性及恢复技术能保证事务的哪些特性
ACID

原子性,事务是数据库中的逻辑工作单元,里面的操作要么全做,要么不做

一致性,事务执行结果必须是一个事务从一个一致性状态转到另一个一致性状态

隔离性,一个事务的执行不能受其他事务的影响

持久性,一旦一个事务完成提交了,那么对数据库的改变是永久的,保证了事务的原子性和隔离性

10.2. 故障种类(数据库的高可用性技术
(备份、恢复!复制、分区、主库(master)、从库(standby),cluster,data guard)

事务内部的故障

系统故障

介质故障

计算机病毒

10.3. 恢复技术
恢复机制两个关键问题:如何建立冗余数据,以及如何利用这些冗余数据实施数据库恢复。建立数据库冗余数据最常用的技术是数据转储和登记日志文件

10.4. 为什么事务的非正常结束会影响数据库数据的正确性?
如果数据库运行过程中出现故障导致事务非正常结束,有些事务尚未完成就被中断,那么就破坏了事务的原子性,这些事务的一部分操作已经写入了数据库,这时数据库处于不一致的状态,例如银行转账。

10.5. 登记日志文件时为什么必须先写日志文件,后写数据库?
因为这是两个不同的操作,如果中间发送故障,两个只能完成一个。如果先写了数据库操作,而在日志中没有这个记录,那么就无法恢复这个修改了。如果先写了日志,但没有写入数据库。那么恢复时只要多执行一次UNDO操作,并不会影响数据库操作。

10.6. 针对不同的故障的恢复策略和方法
10.6.1. 事务内部故障
反向扫描文件日志,查找到该事务的更新操作

对该事务的更新操作执行逆操作,直到读到改事务的开始标记

10.6.2. 系统故障
正向扫描日志文件,找出在故障前已经提交的事务队列和未完成队列

对未完成队列执行中各个事务执行UNDO操作

对已经提交的各个事务执行REDO操作

10.6.3. 介质故障
装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态

装入转储结束时刻的日志文件副本

启动系统恢复命令,由DBMS完成恢复功能

10.7. 什么是检查点记录,包括什么内容
检查点记录是一类新的日志记录。它的内容包括:

建立检查点时刻所有正在执行的事务清单
这些事务的最近一个日志记录的地址
10.8. 具有检查点恢复技术有什么优点?
节约时间,利用日志技术进行数据库恢复时,恢复子系统必须搜索整个日志,这将耗费大量时间

需要REDO的操作实际上已经将它们的更新操作结果写到数据库了,恢复子系统又重新执行了这些操作,浪费了大量时间

10.9. 使用检查点方法进行恢复的步骤
找到最后一个检查点记录在日志文件的地址,由该地址在日志文件中找到最后一个检查点记录

由该检查点记录得到检查点建立时刻所有正在执行的事务清单,建立两个事务队列UNDO和REDO

从检查点开始正向扫描日志文件,根据提交与否选择重做还是撤销

对队列执行事务操作

10.10. 什么是数据库镜像?它有什么用途
自动将整个数据库或者关键数据复制到另一个磁盘上。每当主数据库更新时,把更新后的数据复制过去,即自动保证镜像数据和主数据的一致性。

用途:

数据恢复
提升数据库利用率。例如被加了排他锁,可以在镜像数据库上读。
10.11. 为什么UNDO是反向扫描日志,REDO是正向扫描日志
UNDO是恢复到第一个失败的事务就OK了,正向做不到。REDO是恢复到最后一个成功的事务之后。

10.12. 恢复系统是否可以保证事务的原子性和持续性
UNDO保证原子性,REDO保证持续性

并发控制

11.1. 数据库中为什么要并发控制?并发控制技术能保证事务的哪些特性?
数据库时共享资源,通常有多个事务同时执行。当多个事务同时并发地存取时就会产生同时读/写同一个数据。若对并发操作不加以控制就可能导致存取不正确的数据,破坏事务的一致性。

并发控制保证了事务的一致性和隔离性

11.2. 并发操作会产生哪几类数据的不一致?用什么方法可以避免
丢失修改,两个事务对同一个数据同时进行修改,那么就会有一个事务的操作被另一个事务的修改覆盖掉。

不可重复读,一个事务读了某一数据以后,另一个事务对其进行了更新操作,那么再次读的时候就会得到与上次不一样的数据。

读取脏数据,一个事务修改了某一数据并把其写回磁盘,另一个事务读取了这个数据以后,之前那个事务因为某种原因撤销了。

避免不一致性的方法就是并发控制,常用的并发控制有封锁法、时间戳法、乐观控制法、多版本并发控制法等

11.3. 什么是封锁?封锁类型有哪几种?
封锁就是事务T对某一数据进行操作前,先向系统发送请求,对其加锁,加锁以后事务就对这个数据有了一定的控制权,在事务T释放锁之前,其他事务不能对该数据进行更新或者读取

封锁类型有:排它锁、共享锁

11.4. 三级协议分别能解决哪些问题
加X锁,直到事务结束再释放。解决了丢失修改问题。

在1基础上加S锁,读完后可以释放,解决了读取脏数据的问题。

在1基础上加S锁,直到事务结束再释放,解决了不可重复读问题

11.5. 什么是活锁,产生原因和解决办法
当一系列封锁操作无法按照其正确顺序执行时,就可能导致事务无限等待某个封锁。

避免活锁的方法就是使用FCFS

11.6. 什么是死锁,解决死锁的办法
举例说明什么是死锁。

防止死锁的方法有两种:预防死锁、死锁诊断与解除

预防死锁有两种办法:一次封锁法、顺序封锁法

死锁诊断与解决:超时法、事务等待图法

解除法:选择处理死锁代价最小的事务,将其解除

Alter session kill ‘sessionid,pid ’;

11.7. 什么样的并发调度是正确的调度
可串行化的并发调度是正确的调度。可串行化调度定义:多个事务并发执行是正确的,当且仅当其结果与按某一次序执行的串行执行的结果相同。

11.8. 如何保证并发调度的正确性
冲突可串行化,使用两段锁协议

  1. NoSQL和New数据库
    自1970年以来,数据库技术发展到了第四代,第一代是60~70年早期的层次和网状数据库系统,第二代是70年代中期开始的关系数据库系统,第三代是80年出现的对象数据库系统和以及90年出现的对关系模型进行扩展,使关系数据库系统具有面向对象功能。

自2000年以来,Web技术、社交网络、移动计算和物联网的进步导致全球范围应用程序生成的半结构化、非结构化数据呈现爆炸式增长势态,此类应用程序产生了各种不同的需求,包括水平可扩展能力、支撑大规模海量数据处理能力,系统要具有高可用性和容错能力以应对硬件和软件故障,并且可以通过利用额外资源响应客户端请求,从而提高查询处理速率,这就导致了第四代数据库技术NoSQL和NewSQL技术的出现。

NoSQL数据库的关键特征是:(1)采用图形、树、键值、文档等表格模型以外的数据模型;(2)数据库设计时没有固定的模式定义;(3)提供对水平可扩展性的隐式支持;(4)具有最终一致性而不是强一致性。NoSQL的另一个重要概念是CAP定理,它对分布式系统至关重要的属性提供了一些约束,即:一致性、可用性和分区容错性。CAP定理表明,分布式系统在任何给定时间最多只能满足其中2个属性。

Json格式!!!

NewSQL是最新一代的数据库系统,它不仅提供NoSQL数据库系统具有的可扩展性和可用性,还保留了传统关系数据库的ACID特性、关系数据模型和SQL查询语言。

原文链接:https://blog.csdn.net/qq_41112170/article/details/111240043

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值