数据库复习 (找工作版)

1.概念

1.基础概念

  • 数据库DB     数据库管理系统DBS     数据库管理系统DBMS
  • DBS核心是DBMS,DBMS核心是DB
  • 三大管理阶段

人工管理

文件系统管理

数据库系统管理:数据独立性强(核心),共享性高,冗余小(消除冗余X)2

体系结构三级模式两级映射

2外模式

外模式,也被称为用户模式或子模式,是用户与数据库系统的接口,是用户需要使用的部分数据的描述。外模式对应数据库中的视图,将表进行一定处理后再提供给用户使用

 3数据库的概念模式(模式):

数据库的概念模式是指数据库系统中的基本概念和功能,包括以下几个方面:

1.1 数据:

数据库中存储的信息,可以是文本、数字、图像、音频等形式的数据。

1.2 数据库管理系统(DBMS):

用于管理数据库的软件系统,提供数据的创建、查询、更新和删除等功能。常见的DBMS包括MySQL、Oracle、Microsoft SQL Server等。

1.3 数据模型:

描述数据在数据库中的组织方式和相互关系的抽象结构。常见的数据模型包括:

  • 层次模型:使用树形结构组织数据,每个节点代表一个实体,具有父子关系。
  • 网状模型:使用图形结构表示数据,实体之间可以有多对多的关系,不受限于树形结构。
  • 关系模型:使用表格(关系)来表示数据和它们之间的关系,是最常用的数据库模型,使用 SQL 进行查询和操作。
  • 对象模型:将数据和操作数据的方法封装在一起,类似于面向对象编程中的对象。
  • 文档模型:将数据组织为文档,通常使用 NoSQL 数据库来存储和管理。
1.4 查询语言:

用于从数据库中检索数据的语言,例如 SQL(结构化查询语言)是最常用的查询语言之一,用于关系型数据库。

eg:数据库技术的根本目的是解决数据共享的问题

数据库设计是指建立数据库

4数据的存储模式(内模式)

数据库的存储模式是指数据库中数据在物理存储层面的组织方式,包括以下几种常见的存储模式:

2.1 基于文件的存储模式:

将数据存储在文件中,每个文件对应一个数据表或实体,数据的组织和访问由文件系统管理。这种存储模式简单直观,但效率和安全性相对较低。

2.2 基于页的存储模式:

将数据按照页(通常是固定大小的数据块)的方式存储在磁盘上,每个页包含多条记录,数据的组织和访问由数据库管理系统管理。

2.3 基于表的存储模式:

采用关系模型将数据组织为表格形式,每个表格包含多个行(记录)和列(字段),数据按照表格的形式存储在数据库中,通过行和列的方式进行访问和操作。

2.4 基于对象的存储模式:

将数据和操作数据的方法封装在一起,以对象的形式存储在数据库中,数据的组织和访问由对象管理器管理,类似于面向对象编程中的对象。

2.5 基于文档的存储模式:

将数据组织为文档的形式存储在数据库中,每个文档可以是一个 JSON 或 XML 格式的文档,文档之间可以有复杂的嵌套和关联关系,通常用于 NoSQL 数据库。

这些存储模式的选择取决于应用场景和需求,不同的存储模式具有不同的优缺点,可以根据具体情况进行选择和应用。

关于模式的考点

  • 外模式:用户视图,有多个
  • 模式:链接外模式,内模式,描述内外模式逻辑结构,只有一个
  • 内模式:内部存储数据的描述,只有一个
  • 外模式变化,内模式不变;内模式变化,外模式自动更新
  • 外模式和模式的映射保证了数据的逻辑独立性
  • 模式和内模式的映射保证了数据的物理独立性

5数据独立性:

物理独立性:用户的应用程序和数据库中的物理存储相互独立

逻辑独立性:用户的应用程序和数据库的逻辑结构相互独立

6.事物一致性

事务一致性:确保事务的执行不会破坏数据库的一致性,即事务的执行结果必须使数据库从一个一致的状态转变为另一个一致的状态,事务中的操作要么全部执行成功,要么全部失败并回滚,不会出现部分执行成功的情况

错误表述:数据的一致性是指数据库中的数据类型一致

7.关系完整性

实体完整性和参照完整性是关系模型中必须满足的完整性约束条件,被称作是关系的两个不变性

5.1实体完整性

若属性A是基本关系R的主属性,则A不能取空值
若主码由若干属性组成,则所有这些主属性都不能取空值

5.2参照完整性

若属性或属性组F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:
(1)空值,F的每个属性值均为空值。
(2)S中某个元组中的主键值(主码值)。
参照的关系中的属性值必须能够在被参照关系找到或者取空值(外键要么为空,要么等于被参照关系中的某个元素的主键值),否则不符合数据库的语义。

eg:在一个订单表中,订单的客户ID是一个外键,它对应于客户表中的客户ID,这就保证了订单表中每个订单的客户ID要么是空值,要么是客户表中实际存在的客户ID。
在实际操作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据操作是否正确,不正确则拒绝操作。

参照关系—→被参照关系(目标关系)

显然,目标关系S的主码Ks和参照关系R的外码F必须定义在同一个(或同一组)域上。

要控制两个表中的数据的完整性和一致性可以设置“参照完整性”,要求这两个表是同一个数据中的两个表

eg:

5.3用户定义的完整性

用户自定义完整性指针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

某个属性必须取唯一值、某个非主属性也不能取空值的
用户定义完整性可以涵盖实体完整性、域完整性、参照完整性等完整性类型。

例如某个属性必须取唯一值,某个非主属性也不能取空值,某个属性的取值范围在0-100之间等

8.数据库文件

逻辑结构:记录式文件

9概念模型

1E-R图

实体用矩形,联系集用菱形,属性用椭圆

10视图表

  • 基本表+视图

11.常用数据模型

数据模型三要素:数据结构(实体间的联系)数据操作(增删改查)数据约束(数据约束条件)

1层次模型

  • 有且只有一个结点没有双亲结点,这个结点称为根结点
  • 类似数据结构树
2.网状模型

  • 允许一个以上结点无双亲
  • 一个结点可以有多于一个双亲
3.关系模型

元组/记录:关系表中的一行

属性/字段:关系表中的一列

码/键:唯一表示其他记录的属性

候选码:在数据库中,候选码(Candidate Key)是指能够唯一标识一条记录的最小属性集(多个码)

主码:候选码中找到一个作为唯一标识的码

外码:两个表格,属性A,在1表格中不是主码,但是在2表格中属于主码

12.外模式和内模式

2关系数据库

1笛卡尔积:X

2选择:

eg:

3.投影

Π

注:一个括号里面只是找到了一行数据,再投影其中一列才是课程号

4.连接

1.自然连接:把共同属性等值连接

注:B有两个1 a,D有两个1 a两两配对就是4个1 a,再一边一个 2 b

悬浮元组:ACE

2.外连接

左外连接,右外连接

eg:根据上图的右外连接还有补充两行

NULL 3 NULL a  β

NULL 3 NULL b  E

再举个例子:

左外连接(Left Outer Join)

左外连接的操作是,返回左表(即连接操作中的第一个表)的所有记录,以及右表(即连接操作中的第二个表)中满足连接条件的记录。如果右表中没有与左表某条记录匹配的记录,则结果中对应字段将包含NULL值。

以表A和表B为例,如果我们使用左外连接将这两个表连接起来,基于员工ID进行匹配,那么结果将包含表A中的所有员工信息。对于表A中的每个员工,如果他们在表B中有对应的部门信息,那么这些信息将被显示出来;如果他们在表B中没有对应的部门信息(即该员工ID在表B中不存在),那么结果中的部门信息字段将包含NULL值。

右外连接(Right Outer Join)

右外连接的操作与左外连接相反。它返回右表的所有记录,以及左表中满足连接条件的记录。如果左表中没有与右表某条记录匹配的记录,则结果中对应字段将包含NULL值。

同样以表A和表B为例,如果我们使用右外连接将这两个表连接起来,基于员工ID进行匹配,那么结果将包含表B中的所有部门信息。对于表B中的每个部门,如果它在表A中有对应的员工信息,那么这些信息将被显示出来;如果它在表A中没有对应的员工信息(即该部门ID在表A中不存在),那么结果中的员工信息字段将包含NULL值。

5.除

 R中满足S的,而且R中列要去掉S的列

3.SQL语言

1.SQL概念

SQL是Structed Query Language的缩写,意思是结构化查询语言,是一种在数据库管理系统中查询或对数据库里面的数据进行更改的语言

2.SQL语言

  • DDL (Data Ddefinition Language)

定义逻辑结构,包括定义基表,视图和索引

删除表,定义表,修改表

  • DQL:数据查询语言
  • DML:数据操纵语言
  • DCL:数据控制语言

3.SQL基本语法

1.模式定义

/*要求学号唯一,姓名取值唯一,年龄范围6-13,系取默认值计算机系*/
CREATE TABLE Student
    (Sno CHAR(5) PRIMARY KEY,                        /*Sno为主码*/
    Sname CHAR(18) UNIQUE,
    Ssex CHAR(2),
    Sage INT NOT NULL CHECK(6>=Sage>=13),
    Sdept CHAR(15) NOT NULL DEFAULT '计算机系'
    );
2.模式删除

3.表的定义和删除和修改

定义create

删除drop

修改ALTER

4.索引的建立与修改&删除

建立

唯一索引是一种确保索引列的值唯一性的机制。这意味着在表中,任何两行都不能具有相同的唯一索引值。这种索引类型有助于防止重复数据,并在查询时提供快速的数据检索。但是,唯一索引允许空值(null)的存在(聚簇索引不行)。

而聚簇索引则是一种数据存储和检索的方式。在聚簇索引中,表中行的物理存储顺序与键值的逻辑(索引)顺序相同。也就是说,数据行实际上是按照聚簇索引键的顺序进行存储的。这种设计可以大大提高范围查询的性能,因为相关数据在物理存储上也是相邻的。然而,聚簇索引并不要求索引列的值是唯一的,也就是说,可以有多个行具有相同的聚簇索引值,这些行在物理存储上仍然会按照索引键的顺序相邻。

另外,需要注意的是,虽然主键通常与聚簇索引相关联(通过主键聚集数据),但聚簇索引并不等同于主键索引。主键是一种特殊的约束,用于唯一标识表中的每一行,并且主键的值不能为null。而聚簇索引只是一种数据存储和检索的方式,其索引值并不要求唯一。

修改

删除

5.查询所有&查询部分列

ps:

6.查询给列起别名(给表起别名也是一样)

7. 去重

在上面代码的select 和username中加个distinct

eg:

8.查询结果加条件

9.聚集函数的使用

加上DISTINCT是去除列里面重复的来计算

9.分组查询

ps:GROUP BY分组,如果要进行筛选,请使用Having

10.连接
  • 等值连接(两张表做笛卡尔积)
  • 自身连接
  • 外连接

左外连接

  • 多表查询

  • 嵌套查询

  • 带有any all的子查询

最里面是指这个人没选一门课程,外面的子查询是没有这样的课程

11.数据的插入,修改,删除


12.视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。因此,视图中的数据是依赖于原来的表中的数据的。一旦表中的数据发生改变,显示在视图中的数据也会发生改变。同样对视图的更新,会影响到原来表的数据。

视图是存储在数据库中的查询的SQL语句,它主要出于两种原因:安全原因,视图可以隐藏一些数据,例如,员工信息表,可以用视图只显示姓名、工龄、地址,而不显示社会保险号和工资数等;另一个原因是可使复杂的查询易于理解和使用。这个视图就像一个“窗口”,从中只能看到你想看的数据列。这意味着你可以在这个视图上使用SELECT *,而你看到的将是你在视图定义里给出的那些数据列。

13.数据控制

4.数据库的安全性

4.1数据库的安全性 概述

不安全因素 

1.非授权对数据库的恶意存取和破坏

2.数据库中重要的数据泄露

3.安全环境的脆弱性

安全性控制

1.用户身份鉴别

静态口令鉴别

动态口令鉴别

生物特征鉴别

智能卡鉴别

2.存取控制

3.自主存取控制

可以自定义和分配其他用户的操作

主要通过grant revoke来进行控制

由两个元素构成:数据库对象和操作权限

我们定义用户的存取权限成为授权

4.授权 grant

5.回收权限

加cascade:同时回收下一级分配权限的所有人

6.数据库角色

6.1 角色创建

create role <角色名>

create role CEO

6.2角色授权

grant select on Student to CEO

6.3

4.2 视图机制

4.3 审计

4.4数据加密

加密算法使明文变密文

5.数据库的完整性

5.1数据库的安全性 概述

1.正确性

符合现实世界描述

2.相容性

同一对象不同表里面得逻辑一致

3.维护完整性

5.2 三大完整性

1.实体完整性

主码唯一且非空

2.参照完整性

外键要么没有,要么只有一个

3.用户定义完整性

3.1非空

3.2列值唯一

3.3满足某一条件表达式 check来写

5.3 断言

6.触发器

有点难猜他不考
 

触发器会生效的操作UPDATE,INSERT,DELETE

7.关系数据理论

7.1范式

1.为什么引入范式

数据冗余

更新异常

插入异常

删除异常

2.范式分类

7.2依赖

1.完全依赖:表中的候选码共同决定着某个属性

(A,B)->C 必须是AB一起决定C

2.传递依赖

表中两个键之间没有直接关系,但可通过其他键建立关系

7.3候选码

概念:可以推出所有属性

7.4三大范式

第一范式:1NF

eg:不满足第一范式的例子

所有字段都是不可分解的原子值

第二范式:2NF

一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中

eg1

第三范式 :3NF

确保数据表中的每一列数据都和主键直接相关,不能间接相关

第三范式(3NF)是在第二范式(2NF)基础上进一步的规范化,它要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。简单来说,就是如果一个关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R为第三范式模式1

举个例子,假设我们有一个部门信息表和一个员工信息表。在员工信息表中,我们只需要列出员工的部门编号,而不需要再列出部门名称、部门简介等与部门有关的信息。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余1

总的来说,第三范式主要是为了解决数据冗余的问题,通过将数据分散在多个表中,每个表只包含必要的信息,从而达到减少数据冗余,提高数据一致性的目的。

BCNF:

消除传递函数依赖

7.5公理系统(easy)
7.6求最小函数依赖

step1:拆右边为多个元素

右边都是一个元素不管

step2:除去当前元素,求它的闭包,把集合里面所有的元素都弄完

先出去BCD看其他元素还能否推出A,不能,BCD加上

再出去BC,加上

A加上

F加上

C加上

最后一个不用这个方式也可以推出就删去

step3:左边最小化

第一个遮住B,可以退出B吗,不能保留

所以第一个BC->A

7.6模式分解

无损(连接分解一样)+依赖不变

eg:

8.数据库设计

需求分析:生成的文档是数据字典数据流图

概念结构设计:ER图或者是设计数据字典

逻辑结构设计:ER图转为逻辑模型

物理结构设计:把逻辑模型转为物理

数据库实施:写SQL代码

数据库运行维护:性能检测

9.数据恢复技术

10.上面没有的习题

选A

两段锁协议:成长阶段只能加锁,衰退阶段只能解锁

选A

更新查询是操作查询的一种,更新查询一次更新一组满足条件的记录,使用后数据不可恢复效率要高于在数据表中更新数据

C

视图是续表不可以定义表本身但是可以,再创建视图

C

  • 18
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值