软考数据库部分 ---- (概念数据库模型,三级模式,两级映像,事物管理)

文章目录


一、概念数据库模型

  • 实体:客观存在并可以相互区别的事物称为实体,如一个单位、一个职工、一个部门或一个项目等。
  • 属性:描述实体的特性称为属性,一个实体可以由若干个属性来刻画,如学生实体用若干属性(学号、姓名、性别、出生日期和班号)来描述。
  • 码:唯一标识实体的属性集称为码,例如学号是学生实体的码。
  • 域:属性的取值范围称为该属性的域,如性别域为(男,女)。联系:实体(型)之间的对应关系称为联系。
  • 联系分为两种,一种是实体内部各属性之间的联系;另一种是实体之间的联系。
    -- 一对一联系(1:1)
    -- 一对多联系(1:n)
    -- 多对多联系(m:n)
  • 实体--联系方法表示的概念数据模型为E-R图
    --实体是矩形,属性是椭圆形,联系是菱形

二、结构数据库模型

结构数据模型主要包括:层次、网状、关系和面向对象模型

  • 层次,树结构,一对多
  • 网状,图结构,多对多
  • 关系模型,二维表

三、三级模式

  1. 概念模式(模式),基本表
  2. 外模式(子模式/用户模式),视图
  3. 内模式(存储模式),存储文件

四、两级映像

  1. 模式/内模式映像。物理独立性
  2. 外模式/模式映像。逻辑独立性

五、关系模式基本术语

  1. 关系模式基本术语
  • 关系:一个关系就是一张二维
  • 元组:表中的一行即为一个元组
  • 属性:表中的列称为属性,每一列有一个属性名。
  • 域:属性的取值范围,即不同元组对同一个属性的值所限定的范围。
  • 关系模式:对关系的描述称为关系模式
  1. 码/键
  • 候选码(或候选键):属性或属性组合,其值能够唯一地标识一个元组
  • 主码(或主键):在一个关系中可能有多个候选码,从中选择一个作为主码
  • 主属性:包含在任何候选码中诸属性称为主属性,不包含在任何候选码中诸属性称为非码属性。
  • 外码(或外键):如果一个关系中的属性或属性组并非该关系的码,但它们是另外一个关系的码,则称其为该关系的外码。
  • 全码:关系模式的所有属性组是这个关系模式的候选码,称为全码。
  • 超码(超键):一个包含码的属性集称为超码,例如学号是码,则(学号,姓名)就是一个超码。

六、关系模式

  1. 关系的描述称为关系模式,它可以形式化地表示为:R(U,D,dom,F)
  2. 关系模型由关系数据结构(一张二维表)、关系操作集合(关系操作有:选择、投影、连接、除、并、交、差等查询操作和增加、删除操作等。)和关系完整性约束三部分组成。
  3. 关系完整性约束
  • 实体完整性,主键不能为空
  • 参照完整性,外键
  • 用户定义的完整性

七、关系的数学定义

  1. 交,并,差,笛卡尔积

    例如:D₁{0,1},D₂=fa,b,c}

    则:笛卡尔积D₁ X D₂={(0,a),(0,b),(0,c),(1,a),(1,b),(1,c);

  2. 投影

  3. 选择

  4. 连接

    连接分为θ连接、等值连接和自然连接3种。

  5. 外连接

    外连接运算有3种,即左外连接、右外连接和全外连接。

  • 左外连接。取出左侧关系表中所有与右侧关系中任一元组都不匹配的元组,用空值 nul 充填所有来自右侧关系的属性,构成新的元组,将其加入自然连接的结果中。
  • 右外连接。取出右侧关系表中所有与左侧关系中任一元组都不匹配的元组,用空值 nul 填充所有来自左侧关系的属性,构成新的元组,将其加入自然连接的结果中。
  • 全外连接。完成左外连接和右外连接的操作。即填充左侧关系中所有与右侧关系中任一元组都不匹配的元组,并填充右侧关系中所有与左侧关系中任一元组都不匹配的元组,将产生的新元组加入自然连接的结果中。
  1. 自然连接
    自然连接是除去重复属性的等值连接,它是连接运算的一个特例,是最常用的连接运算。
  2. 查询效率

八、数据定义语言

  1. SQL Server数据库的体系结构是由视图、基本表和存储文件三级结构组成。
  2. SQL语言的分类
  • DDL(数据定义语言):在数据库系统中,每一个数据库、数据库中的表、视图和索引等都是数据库对象。要建立和删除一个数据库对象都可以通过 SQL语言来完成。DDL包括CREATE、ALTER和 DROP等。
  • DML(数据操纵语言):DML 是指用来添加、修改和删除数据库中数据的语句,包括 INSERT(插入)、DELETE(删除)和 UPDATE(更新)等。
  • DQL(数据查询语言):查询是数据库的基本功能,查询操作通过 SQL数据查询语言来实现,例如,用SELECT 查询表中的内容。
  • DCL(数据控制语言):DCL包括数据库对象的权限管理和事务管理等。
  1. SQL数据定义语言

①建立数据库

sql 复制代码
CREATE DATABASE 数据名

②建立数据库表

sql 复制代码
CREATE TABLE 表名
(列名 数据类型,
...
完整性约束,
...
)

③修改基本表结构

  • 增加一个新列的基本语句为:
sql 复制代码
ALTER TABLE 表名 ADD 列名 类型
  • 修改一个新列的基本语句为:
sql 复制代码
ALTER TABLE 表名 ALTER COLUMN 列名 新类型
  • 删除一个列的语句为:
sql 复制代码
ALTER TABLE 表名 DROP COLUMN 列名

④删除基本表

sql 复制代码
DROP TABLE 表名
  1. 约束

列级完整性 NOT NULL ,UNIQUE,NOT UNIQUE,DEFAULT

实体完整性(主键) PRIMARY KEY

用户自定义CHECK

参照完整性(外键) FOREIGN KEY

  1. 数据操作
    ①插入
sql 复制代码
insert into 表名(列名序列) values (元组值);
  • 插入查询值
sql 复制代码
insert into 表名(列名序列) select 查询语句

②删除

sql 复制代码
delete from 表名 where 条件表达式

③更新

sql 复制代码
update 表名 
set 列名 = 值表达式
[where 条件表达式]
  1. 查询
sql 复制代码
SELECT 目标表的名或列表达式序列
FROM 关系名表列
[WHERE 行条件表达式]
[GROUP BY 列名列            # 分组
[HAVING 条表达式]]
[ORDER BY 列名[ASCIDESC]...]  # 排序

①投影查询

sql 复制代码
select distinct 列名 as '列名别名' from 表名 

distinct去重,as取别名

②选择查询

  • %(百分号)代表任意长度(长度可以为0)的字符串。例如a%b表示以a开头,以b结尾的任意长度的字符串,如acb、addgb、ab等都满足该匹配串。
  • _(下划线)代表任意单个字符。例如ab表示以a开头,以b结尾的长度为3的任意字符串,acb、afb等都满足该匹配串。

③聚合函数

函数名 功能
AVG 计算一个数值型表达式的平均值
COUNT 计算指定表达式中选择的项数,COUNT(*)统计查询输出的行数
MIN 计算指定表达式中的最小值
MAX 计算指定表达式中的最大值
SUM 计算指定表达式中的数值总和
STDEV 计算指定表达式中所有数据的标准差
STDEVP 计算总体标准差
  1. 交,并,差

union:并

intersect:交

except:差

九、SQL访问控制

获得权限的用户也可以给别人权限

sql 复制代码
with grant option 
sql 复制代码
grant 权限 on 表/库 to 用户

收回权限

sql 复制代码
revoke 权限 on 表/库 from 用户

十、视图

  1. 视图是从一个或者多个基本表或视图中导出的表,是一个虚拟表
  2. 视图的创建语句格式:
sql 复制代码
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句
[WITH CHECK OPTION];
  1. 视图的删除语句格式:
sql 复制代码
DROP VIEW 视图名
  1. WITH CHECK OPTION表示增删改查条件表达式

十一、索引

sql 复制代码
create index 索引名 on 表名

索引改变的是内模式(存储文件)

十二、关系模式

  1. 一个关系模式应当是一个五元组(含关系名)。R <U,D,dom,F>
    (1)R为关系名,它是符号化的元组语义;
    (2)U为一组属性;
    (3)属性组U中的属性来自域D;
    (4)dom为属性到域的映射;
    (5)F为属性组U上的一组数据依赖。
  2. A→B,A决定B,B依赖A
  3. 函数依赖
    ①平凡函数依赖, A→B,B⊆A⊊
    ②非平凡函数依赖, A→B,B⊊A
    ③完全函数依赖:如果 X→Y,并且对于X的任何一个真子集X'都有X'不能决定 Y,则称Y对X完全函数依赖,
    ④部分函数依赖:如果X→Y,但Y不完全函数依赖于X,则称对X部分函数依赖
    ⑤传递函数依赖, A→B,B⊊A,B→A

十三、范式

伪传递率:X→Y,WX→Y,XW→Z

1NF→2NF:消除主属性对候选码的部分函数依赖

2NF→3NF:消除非主属性对候选码的传递函数依赖

3NF→BCNF:消除主属性对候选码的部分函数依赖和传递函数依赖

十四、数据库设计

需求分析→概念结构设计→逻辑结构设计→物理设计→数据库实施→运行,维护

  1. 需求分析
    ①需求分析阶段的工作以及形成的相关文档(作为概念结构设计阶段的依据)
    ②建立需求说明文档、数据字典和数据流程图
  2. 概念结构设计

①实体

②属性

③联系(一对一(1:1),一对多(1∶n),多对多(m:n))

步骤:选择局部应用→逐一设计分E-R图→E-R合并

E-R图之间的冲突:

① 属性冲突。属性的类型、取值范围和数据单位等可能会不一致

②命名冲突。相同意义不同命名,或是名称相同意义不同

③ 结构冲突。同一实体在不同的分E-R图中有不同的属性,同一对象在某一分E-R图中被抽象为实体,而在另一分E-R图中又被抽象为属性,需要统一。

  1. 逻辑结构设计(关系规范化)
    ①一对一(1:1)
    ②一对多(1∶n)
    ③多对多(m:n)

十五、事物管理(ACID)

BEGIN TRANSACTION:事务开始。

COMMIT:事务提交。

ROLLBACK:事务回滚。

  1. 原子性:事务是原子的,要么都做,要么都不做。
  2. 一致性:事务执行的结果必须保证数据库从一个一致性状态变到另一个一致性状态。因此,当数据库只包含成功事务提交的结果时,称数据库处于一致性状态。
  3. 隔离性:事务相互隔离。当多个事务并发执行时,任一事务的更新操作直到其成功提交的整个过程,对其他事务都是不可见的。
  4. 持久性:一旦事务成功提交,即使数据库崩溃,其对数据库的更新操作也将永久有效。

十六、数据库的备份

  1. 故障类型
    ①事务内部故障 ②系统故障 ③介质故障 ④计算机病毒
  2. 备份方法
    ①静态转储和动态转储。静态转储是指在转储期间不允许对数据库进行任何存取、修改操作;动态转储是在转储期间允许对数据库进行存取、修改操作。因此,转储和用户事务可并发执行。
    ②海量转储和增量转储。海量转储是指每次转储全部数据:增量转储是指每次只转储上次转储后更新过的数据。
    ③日志文件。在事务处理的过程中,DBMS把事务开始、事务结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销事务对数据库的改变,回退到事务的初始状态。因此,DBMS利用日志文件来进行事务故障恢复和系统故障恢复,并可协助后备副本进行介质故障恢复。
  3. 恢复
    ①反向扫描文件日志(即从最后向前扫描日志文件),查找该事务的更新操作。
    ②对事务的更新操作执行逆操作。
    ③继续反向扫描日志文件,查找该事务的其他更新操作,并做同样的处理,直到事务的开始标志。

十七、锁

  1. 排它锁:若事务T对数据对象A加上X锁,则只允许T读取和修改 A,其他事务都不能再对 A 加任何类型的锁,直到T释放A上的锁。
  2. 共享锁:若事务T对数据对象A加上S锁,则只允许T读取 A,但不能修改 A,其他事务只能再对A加S锁,直到T释放A上的S锁。这就保证了其他事务可以读 A,但在T释放A上的S锁之前不能对A进行任何修改。

十八、分布式数据库

  • 分片透明:指用户或应用程序不需要知道逻辑上访问的表具体是怎么分块存储的
  • 复制透明:指采用复制技术的分布方法,用户不需要知道数据是复制到哪些节点,如何复制的。
  • 位置透明:指用户无须知道数据存放的物理位置
  • 逻辑透明:指用户或应用程序无需知道局部场地使用的是哪种数据模型
  • 共享性:指数据存储在不同的结点数据共享
  • 自治性:指每结点对本地数据都能独立管理
  • 可用性:指当某一场地故障时,系统可以使用其他场地上的副本面不至于使整个系统瘫
  • 分布性:指数据在不同场地上的存储
相关推荐
激流丶18 分钟前
【Mysql 底层原理】MySQL 查询优化器的工作原理:如何生成最优执行计划
数据库·mysql·explain·执行计划
雷神乐乐34 分钟前
Sqoop学习
数据库·sqoop
小丑西瓜66639 分钟前
MySQL库操作
linux·服务器·数据库·mysql
谦谦均44 分钟前
PostgreSQL序列:创建、管理与高效应用指南
数据库·postgresql
荒川之神1 小时前
RHEL/CENTOS 7 ORACLE 19C-RAC安装(纯命令版)
服务器·数据库·oracle
ZWZhangYu1 小时前
【MyBatis源码】深入分析TypeHandler原理和源码
数据库·oracle·mybatis
ascarl20103 小时前
系统启动时将自动加载环境变量,并后台启动 MinIO、Nacos 和 Redis 服务
数据库·redis·缓存
LightOfNight3 小时前
Redis设计与实现第9章 -- 数据库 总结(键空间 过期策略 过期键的影响)
数据库·redis·后端·缓存·中间件·架构
Jasonakeke3 小时前
【重学 MySQL】八十四、深入理解 LEAVE 和 ITERATE 在存储过程中的使用
数据库·mysql
伏虎山真人5 小时前
开源数据库 - mysql - mysql-server-8.4(gtid主主同步+ keepalived热切换)部署方案
数据库·mysql·开源