软件设计师备考笔记(九):数据库技术基础

发布于:2024-05-17 ⋅ 阅读:(90) ⋅ 点赞:(0)


一、基本概念

  1. 数据库系统(DBS):广义上讲,数据库系统是由数据库、硬件、软件和人员组成的。DBS包括DB和DBMS。

  2. 数据库(DB):统一管理的、长期储存在计算机内的、有组织的相关数据的集合。

  3. 数据库管理系统(DBMS):实现功能包括数据定义、数据库操作、数据库运行管理、数据的组织存储和管理、数据库的建立和维护、其他功能。

  4. 数据库系统的体系结构:集中式数据库系统、客户端/服务器结构、并行数据库系统、分布式数据库系统。

    a. 分布式数据库相关概念:分片透明(无需知道如何分块存储)、复制透明(无需知道如何复制)、位置透明(无需知道物理位置)、逻辑透明(无需知道局部使用哪种模型)。

    b. 分布式数据库特性:共享性(不同节点数据共享)、自治性(独立管理本地数据)、可用性(使用副本避免瘫痪)、分布性(数据不同场地存储。)

  5. 数据库的三级模式结构:采用“三级模式和两级映像”。

    a. 概念模式(模式):数据库中全部数据的逻辑结构和特征的描述,若若干个概念记录类型组成。

    b. 外模式(用户模式或子模式):用户与数据库系统的接口,用户用到的那部分数据的描述。

    c. 内模式(存储模式):数据物理结构和存储方式的描述,定义所有的内部记录类型、索引和文件组织方式等内容。

    d. 两级映像:包括模式/内模式映像(保证数据的物理独立性)和外模式/模式映像(保证数据的逻辑独立性)。


二、数据模型

(一)基本概念

  1. 最常见的数据模型分为:概念数据模型、基本数据模型。

  2. 数据模型的三要素:数据结构、数据操作、数据的约束条件。

(二)E-R模型

  1. 实体。

  2. 联系:一对一、一对多、多对多。

  3. 属性:简单属性和复合属性、单值属性和多值属性、NULL属性(无意义或不知道)、派生属性(能从其他属性得来)。

  4. 实体-联系方法。

  5. 扩充的E-R模型:弱实体、特殊化。

(三)数据模型

  1. 层次模型:树结构。

  2. 网状模型:图结构。

  3. 关系模型:目前最常用的数据模型之一,采用表格结构表达实体集以及实体集之间的联系。 由关系数据结构、关系操作集合和关系完整性约束三部分组成。

  4. 面向对象模型。


三、关系代数

(一)关系数据库的基本概念

  1. 关系模型的一些基本术语。

    a. 关系:一个关系就是一张二维表,每个关系有一个关系名。

    b. 元组:表中的一行即为一个元组,对应存储文件中的一个记录值。

    c. 属性:表中的列称为属性,包括属性名和属性值。

    d. 域:属性的取值范围。

  2. 关系的相关名词。

    a. 码:能够唯一标识一个元组的属性或属性组合。

    b. 候选码(候选键):能够唯一标识一个元组的最小属性或属性组合。

    c. 主码(主键):在一个关系中可能有多个候选码,从中选择一个作为主码。

    d. 主属性:包含在任一候选码中的诸属性称为主属性,否则称为非主属性。

    e. 外码(外键):如果一个关系中的属性或属性组并非该关系的码但他们是另外一个关系的码,则称其为该关系的外码。

    f. 全码:关系模式中所有的属性为一组是这个关系模式的候选码,称为全码。

    g. 超码(超键):一个包含码的属性集称为超码。

  3. 关系模式:关系的描述称为关系模式。

    a. 可以形式化地表示为: R ( U , D , d o m , F ) R(U,D,dom,F) R(U,D,dom,F),其中R表示关系名,U是组成该关系式的属性名集合,D是属性的域,dom是属性向域的映像集合,F为属性间数据的依赖关系集合。

    b. 通常将关系模式简记为: R ( U ) R(U) R(U) R ( A 1 , A 2 , A 3 , … , A n ) R(A_1,A_2,A_3,…,A_n) R(A1,A2,A3,,An),其中 A 1 , A 2 , A 3 , … , A n A_1,A_2,A_3,…,A_n A1,A2,A3,,An为属性名或域名。

  4. 完整性约束:实体完整性、参照完整性、用户定义的完整性。

    a. 实体完整性:主属性不能取空值。

    b. 参照完整性:外码或者取空值或者取其作为主码所在关系中某个元组的主码值。

    c. 用户自定义完整性:针对某一具体的关系数据库的约束条件。

(二)五种基本的关系代数运算

  1. 并: R ∪ S = { t 丨 t ∈ R ∨ t ∈ S } R∪S=\{t丨t∈R∨t∈S\} RS={ttRtS}

  2. 差: R − S = { t 丨 t ∈ R ∧ t ∉ S } R-S=\{t丨t∈R∧t∉S\} RS={ttRt/S}

  3. 广义笛卡尔积: R × S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S } R×S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S\} R×S={tt=<tn,tm>tnRtmS}

  4. 投影: π A ( R ) = { t [ A ] 丨 t ∈ R } π_A(R)=\{t[A]丨t∈R\} πA(R)={t[A]tR}。(垂直选择若干属性列)

  5. 选择: σ F ( R ) = { t 丨 t ∈ R ∧ F ( t ) = T r u e } σ_F(R)=\{t丨t∈R∧F(t)=True\} σF(R)={ttRF(t)=True}。(水平选择满足条件的元组行)

(三)扩展的关系代数运算

  1. 交: R ∩ S = { t 丨 t ∈ R ∧ t ∈ S } 。 R∩S=\{t丨t∈R∧t∈S\}。 RS={ttRtS}

  2. 连接:分为θ连接、等值连接、自然连接。

    a. θ连接: R ⋈ X θ Y S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] θ t m [ Y ] } R⋈_{XθY}S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧t^n[X]θt^m[Y]\} RYS={tt=<tn,tm>tnRtmStn[X]θtm[Y]}。(θ是比较运算符,θ连接可有笛卡尔积和选取运算导出)

    b. 等值连接: R ⋈ X = Y S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ t n [ X ] = t m [ Y ] } R⋈_{X=Y}S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧t^n[X]=t^m[Y]\} RX=YS={tt=<tn,tm>tnRtmStn[X]=tm[Y]}。(即θ为“=”时)

    c. 自然连接: R ⋈ S = { t 丨 t = < t n , t m > ∧ t n ∈ R ∧ t m ∈ S ∧ R . B 1 = S . B 1 ∧ R . B 2 = S . B 2 ∧ … ∧ R . B k = S . B k } R⋈S=\{t丨t=<t^n,t^m>∧t^n∈R∧t^m∈S∧R.B_1=S.B_1∧R.B_2=S.B_2∧…∧R.B_k=S.B_k\} RS={tt=<tn,tm>tnRtmSR.B1=S.B1R.B2=S.B2R.Bk=S.Bk}。(比较分量必须是相同属性组且在结果集中将重复属性列去掉)

  3. 除: R ÷ S = { t n [ X ] 丨 t n ∈ R ∧ π y ( S ) ⊆ Y x } R÷S=\{t^n[X]丨t^n∈R∧π_y(S)⊆Y_x\} R÷S={tn[X]tnRπy(S)Yx}

  4. 广义投影: π F 1 , F 2 , . . . , F n ( R ) π_{F_1,F_2,...,F_n}(R) πF1,F2,...,Fn(R)。(允许在投影列表中使用算术运算)

  5. 外连接:分为左外连接、右外连接、全外连接。

    a. 左外连接: R = ⋈ S R=⋈S R=⋈S。(对于左侧关系中所有与右侧关系任意元组都不匹配的元组用空值null填充所有右侧关系的属性)

    b. 右外连接: R ⋈ = S R⋈=S R⋈=S。(对于右侧关系中所有与左侧关系任意元组都不匹配的元组用空值null填充所有左侧关系的属性)

    c. 全外连接: R = ⋈ = S R=⋈=S R=⋈=S。(完成左外连接和右外连接的操作)

在这里插入图片描述


四、关系数据库SQL语言简介

(一)SQL体系结构

  1. SQL支持三级模式结构:视图对应外模式,基本表对应模式,存储文件对应内模式。

  2. SQL语言的分类。

    a. 数据定义(DDL):CREATE、DROP、ALERT。

    b. 数据查询(DQL):SELECT。

    c. 数据操纵(DML):INSERT、UPDATE、DELETE。

    d. 数据控制(DCL):GRANT、REVORK。

(二)SQL数据定义

  1. 创建表。
    在这里插入图片描述

  2. 修改和删除表。

    在这里插入图片描述

    在这里插入图片描述

  3. 索引建立与删除。

    在这里插入图片描述

    在这里插入图片描述

  4. 视图创建与删除。

    在这里插入图片描述

    在这里插入图片描述

(三)SQL数据查询

  1. SELECT基本结构

    在这里插入图片描述

  2. 简单查询。

  3. 连接查询。

  4. 子查询与聚集函数。

  5. 分组查询。

  6. 更名运算。

  7. 字符串操作。

  8. 视图的查询。

在这里插入图片描述

(四)SQL数据更新

  1. 插入。

    在这里插入图片描述

  2. 删除。

    在这里插入图片描述

  3. 修改。

    在这里插入图片描述

(五)SQL数据控制

  1. 授权。

    在这里插入图片描述

  2. 收回权限。

    在这里插入图片描述
    在这里插入图片描述


五、关系数据库的规范化

(一)函数依赖

  1. 函数依赖: X → Y X→Y XY

  2. 非平凡的函数依赖: X → Y X→Y XY,但 Y ⊈ X Y⊈X YX

  3. 平凡的函数依赖: X → Y X→Y XY,但 Y ⊆ X Y⊆X YX

  4. 完全函数依赖: X → F Y X \overset F \rightarrow Y XFY(X的任一真子集都不能决定Y)。

  5. 部分函数依赖: X → P Y X \overset P \rightarrow Y XPY(存在X的真子集能决定Y)。

  6. 传递依赖: X → 传递 Z X \overset {传递} \rightarrow Z X传递Z X → Y X→Y XY,但 Y ⊈ X Y⊈X YX Y → Z Y→Z YZ)。

  7. 函数依赖的公理系统:设关系模式 R ( U , F ) R(U,F) R(U,F)

    a. 合并规则:若 X → Y X→Y XY X → Z X→Z XZ,则 X → Y Z X→YZ XYZ F F F所蕴涵。

    b. 伪传递率:若 X → Y X→Y XY W Y → Z WY→Z WYZ,则 X W → Z XW→Z XWZ F F F所蕴涵。

    c. 分解规则:若 X → Y X→Y XY Z ⊆ Y Z⊆Y ZY,则 X → Z X→Z XZ F F F所蕴涵。

(二)规范化

  1. 范式之间, 5 N F ⊂ 4 N F ⊂ B C N F ⊂ 3 N F ⊂ 2 N F ⊂ 1 N F 5NF⊂4NF⊂BCNF⊂3NF⊂2NF⊂1NF 5NF4NFBCNF3NF2NF1NF 成立。

  2. 1 N F 1NF 1NF(第一范式):关系模式R的每一个分量是不可再分的数据项。

    a. 可能存在部分函数依赖,不能排除数据冗余和更新异常等问题。

  3. 2 N F 2NF 2NF(第二范式):关系模式 R ∈ 1 N F R∈1NF R1NF ,且每一个非主属性完全依赖于码。

    a. 相较 1 N F 1NF 1NF 消除了部分函数依赖。

    b. 可能存在传递函数依赖,不能排除数据冗余和更新异常等问题(但能排除插入异常、删除异常和修改复杂等问题)。

  4. 3 N F 3NF 3NF(第三范式):关系模式 R ( U , F ) ∈ 1 N F R(U,F)∈1NF R(U,F)1NF 中不存在这样的码 X X X ,属性组 Y Y Y 及非主属性 Z ( Z ⊈ Y ) Z(Z⊈Y) Z(ZY) 使得 X → Y ( Y ↛ X ) X→Y(Y↛X) XY(YX) Y → Z Y→Z YZ 成立。

    a. 相较 2 N F 2NF 2NF 消除了非主属性对码的传递函数依赖。

    b. 产生冗余和异常的两个重要原因是部分函数依赖和传递依赖。

  5. B C N F BCNF BCNF(BC范式):关系模式 R ( U , F ) ∈ 1 N F R(U,F)∈1NF R(U,F)1NF X → Y X→Y XY Y ⊈ X Y⊈X YX X X X 必含有码。

    a. 排除了任何属性对码的传递依赖与部份依赖。

    b. 所有非主属性对每一个码都是完全函数依赖,所有主属性对每一个不含它的码也是完全函数依赖,没有任何属性完全依赖于非码的任何一组属性。

在这里插入图片描述

(三)模式分解及分解应具有的特性

  1. 分解。

  2. 无损连接。

  3. 保持函数依赖。


六、数据库的控制功能

(一)事务管理

  1. 事务。

  2. 事务定义语句:BEGIN TRANSACTION(事务开始)、COMMIT(事务提交)、ROLLBACK(事务回滚)。

  3. 事务的ACID性质。

    a. 原子性:要么都做,要么都不做。

    b. 一致性:数据库只包含成功事务提交的结果。

    c. 隔离性:多个事务并发执行时对其他事物都不可见。

    d. 持久性:一旦事务成功提交即使崩溃也将永久有效。

(二)数据库的备份与恢复

  1. 故障类型。

  2. 备份方法。

  3. 恢复。

  4. 数据库镜像。

(三)并发控制

  1. 并发操作带来的三类数据不一致性:丢失修改、不可重复读、读脏数据。

  2. 并发控制技术:封锁。

    a. 排它锁(X锁或写锁):只允许读取和修改,其他事物不能再加任何锁。

    b. 共享锁(S锁或读锁):只允许读取而不能修改,其他事物只能再加共享锁。
    b. 一致性:数据库只包含成功事务提交的结果。

    c. 隔离性:多个事务并发执行时对其他事物都不可见。

    d. 持久性:一旦事务成功提交即使崩溃也将永久有效。

(二)数据库的备份与恢复

  1. 故障类型。

  2. 备份方法。

  3. 恢复。

  4. 数据库镜像。

(三)并发控制

  1. 并发操作带来的三类数据不一致性:丢失修改、不可重复读、读脏数据。

  2. 并发控制技术:封锁。

    a. 排它锁(X锁或写锁):只允许读取和修改,其他事物不能再加任何锁。

    b. 共享锁(S锁或读锁):只允许读取而不能修改,其他事物只能再加共享锁。