zoukankan      html  css  js  c++  java
  • 数据库系统设计与开发

    一、关系数据库系统概述

    数据:是对事物描述的符号记录,它描述事物中人们所感兴趣的特征,它能被计算机识别、存储和处理

    数据管理:是对数据的分类、组织、编码、存储、查询和维护等活动,是数据处理的中心环节

    数据管理的目标:

    • 减少数据的冗余度(数据的重复存储)
    • 提高数据的共享性(用户/语言/现在未来)
    • 提高数据的独立性(应用程序独立于数据结构变化)

    数据管理的三个阶段:人工 -> 文件 -> 数据库(60年代末)

    数据库技术:数据管理的最新技术,研究数据库的结构、存储、管理和使用

    DBS的组成:

    • 数据库:以一定的组织形式(数据模型)存放在计算机存储设备上的相关数据的集合
    • 数据库管理系统:管理数据库的软件
      1. 提供多种高级用户接口
      2. 查询处理和优化
      3. 数据的安全性控制
      4. 数据的完整性控制
      5. 并发控制
      6. 数据库恢复
      7. 数据目录(数据字典)管理
    • 用户或应用程序
      1. 基于数据库的应用程序及用户
      2. 使用简单的终端命令会查询语言对数据库进行存取操作,即以查询性应用为主的用户
    • 数据库管理员(DBA):进行数据库的规划、设计、协调、维护和管理的人员或集体

    数据库系统的生存周期

    • 数据库系统的规划
    • 数据库设计
    • 数据库的建立
    • 数据库的运行、管理和维护
    • 数据库的扩充和重构

    开发数据库系统的有关人员

    1. 数据库管理员:进行数据库的规划、设计、协调、维护和管理
    2. 系统分析员:负责应用系统的需求分析和规范说明,与DBA和用户一起确定DBS的硬件平台和软件设置,参与DBS设计
    3. 程序设计员:负责设计和编制应用系统程序模块,并进行调试和安装
    4. 用户:参与可行性研究与需求分析

    关系数据模型与关系模式

    数据模型 -> 用来描述数据的一组概念和定义

    三级数据模型

    • 概念数据模型:面向客观世界,与DBMS无关(E-R)
    • 逻辑数据模型:关系数据模型(面向用户和DBMS)
    • 物理数据模型:与DBMS、OS和硬件有关

    逻辑数据模型的三要素:

    1. 数据结构 -> 规定如何把基本的数据项组织成较大的数据单位
    2. 数据操作 -> 查询、更新(增、删、改);定义操作的含义、操作规则和实现操作的语言
    3. 数据约束 -> 是一组完整性规则的集合,定义了给定数据模型中数据及其联系所具有的制约和依赖规则

    数据模式 -> 用数据模型对具体数据的描述

    关系数据模型

    • 关系数据库由关系组成(用二维表示)
    • 关系由元组组成(二维表的),元组无序
    • 元组由属性组成(二维表的),属性无序
    • 属性的取值范围 -- >属性域(原子数据的有限集)
    • 数据间的关系用(候选/主/主属性/外)隐含表示

    关系中属性的个数 --> 关系的目

    关系中元组的个数 --> 关系的基数

    关系名+属性名 --> 关系模式

    候选键:其属性或属性组的值能唯一决定其它所有属性的值,而它的任何真子集无此性质

    • 主属性 ------- 包含在任何一个候选键中的属性
    • 非主属性 ----- 不包含在任何一个候选集中的属性

    主键(Primary Key(PK)):当一个关系能有多个候选键时,可选定一个来标识元组

    外键(Foreign Key(FK)):(不是本关系的键)却引用了其它关系或本关系的键的属性或属性组

    关系数据模型中表内不同元组间的联系用外键隐含地表示

    关系数据模型中表间(实体间)的联系是用外键隐含地表示的

    二、约束(四类)

    1. 域完整性 --> 属性域中的值/由语义决定可否为NULL
    2. 实体完整性 --> 每个关系都有一个主键、值唯一、≠NULL
    3. 引用完整性约束 --> 外键引用已有的主键值,或为NULL(非主属性作为主键)
    4. 一般化完整性约束 --> 由用户定义的、和数据的具体内容有关的约束

    前三个称为隐含约束

    后一个为显示约束(可用触发器、断言、过程)

    属性为原子的 --> 固有约束

    数据库中完整性约束检查,由DBMS实现或由用户负责

    操作

    查询是更新的基础

    操作的对象及运算结果都是关系

    关系代数完备集(σ,Π,∪, —, × )

    σ:在关系中选出符号条件的元组(行)----> 水平分割(where)

    Π:选取关系中感兴趣的列,可重排列顺序 -----> 对关系垂直分割(select)

    ×: 如:R x S :目为 r+s,基数为 基数R x 基数S

    ⋈:只保留一个关系中的公共属性

    关系代数运算与SQL的QL的对应关系:

    QL 的完整句法:

    QL 的执行过程:

    三、RDBMS 概述

    1、层次结构

    • 应用层:应用程序与DBMS之间的接口,包括各种DB应用程序
    • 语言翻译处理层:对数据库语言的各类语句进行语法分析视图转换授权检查完整性检查、查询优化等
    • 数据存取层:将上层的集合操作转换化为单元组操作,完成数据记录的存取、存取路径维护、并发控制、事务管理和数据库恢复等任务,涉及到数据字典的读与写、日志文件的读与写、加/解锁
    • 数据存储层:负责文件的逻辑打开、关闭、读写页、读写缓冲等操作,并完成缓冲区管理、内外存交换和外存管理等任务
    • 操作系统
    • DB

    2、DBMS的进程结构

    1. 一个应用进程对应一个DBMS核心进程
    2. 单进程多线程结构
      • 系统只创建一个DBMS进程
      • 在该进程中:有常驻的公共服务线程、用户线程
      • 各个线程能在逻辑上并行执行,共享DBMS的资源

    3、DBMS与DBS的结构

    1. 分时系统环境下的集中式数据库系统结构
    2. 网络环境下的客户/服务器结构(C/S)
    3. 物理上分布、逻辑上集中的分布式数据库结构
    4. 三层结构(B/S结构): Browser ---> web 服务器 ---> 数据库服务器

    4、RDBMS功能的实现技术

    一、必备的用户接口 --> SQL/非过程化数据库语言

    • 交互式SQL:不能编程,访问为主(DDL、QL、DML、DCL)
    • 嵌入式SQL:将SQL嵌入其它程序设计语言中,可处理数据

    二、数据目录(数据字典或系统目录)

    有关数据库中数据的定义和描述信息是 ---> 元数据

    元数据组成的若干表 --> 数据目录

    数据目录的内容:

    • 基表、视图的定义
    • 存取路径(索引、散列)
    • 用于查询优化的统计数据
    • 数据目录的定义和描述等

    数据目录作用、定义方法、使用范围:

    • 数据目录对DBMS的运行必不可少,DBMS频繁访问
    • 数据目录本身不能用SQL语句定义,由系统在初始化生成,由DBMS维护
    • DBMS一般不允许用户对之更新,只允许受控查询
    • 数据目录中的基表的定义被删除,表中数据不能用
    • 数据目录未定义,任何SQL语句都无法执行

    三、查询处理与优化

    1. 数据库的存储结构
      • 数据库的存储介质:多级
      • 记录的存储结构
      • 文件结构与存取路径:堆、散列、索引:动态(B+树)、静态(主索引,次索引)
    2. 查询优化的途径(可综合运用)
      • 代数优化:改变基本操作的次序
      • 依赖于存取路径的优化:结合存取路径(顺序扫描、索引、簇集)的分析考虑各操作的执行策略及选择原则
      • 规则优化:仅根据启发式规则,选择执行的策略(先做选择、投影,后做连接操作等)
      • 代价估算优化

    四、并发控制

    1)事务的概念

    • DBMS的最小执行单位,含有若干有序的操作

    • 遵守ACID准则:原子性、一致性、隔离性、持久性

    • 结束的方式:提交成功/失败 或 人为的故障

    • 事务的定义和划分:(a)没有显式定义,则由DBMS按缺省规定自动划分事务

      ​ (b)用SQL语句显式控制一个事务的开始和终止

    1. 并发的概念

    ​ 并发是不同用户(事务)同时访问同一数据的事件,是不同事务在时间上的交叉执行

    3)事务并发执行可能带来的问题

    ​ 不加控制 --> 三种冲突 -- > 三个问题 -- > 数据不一致

    4)事务管理的任务 --> 保证事务的正常执行

    • 满足ACID准则
    • 在系统故障时应满足 --> 数据库恢复
    • 在单事务执行时满足
    • 在多事务并发执行时满足 -- > 并发控制

    5)并发控制的正确性准则

    • 调度的冲突可串行化(目前DBMS普遍采用)

    • 采用机制:事务在操作前先对数据对象加锁

      ​ 加锁时必须遵守的规则 -- > 加锁协议(相容矩阵)

      ​ 几种有代表性的加锁协议:S锁(共享锁)、X锁(排它锁)、U锁(更新锁)

      S锁:多个事务可封锁一个共享页;任何事务都不能修改该页; 通常是该页被读取完毕,S锁立即被释放

      X锁:仅允许一个事务封锁此页;其他任何事务必须等到X锁被释放才能对该页进行访问;X锁一直到事务结束才能被释放

      U锁:用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;当被读取的页将要被更新时,则升级为X锁;U锁一直到事务结束时才能被释放

    五、数据库恢复

    1. ​ 故障的概念

      起因:DBS 硬件、软件故障

      现象:出现差错

      后果:导致系统失效、数据丢失

      DBS 的措施:增强系统可靠性

      ​ 检查差错,将数据库恢复到某个一致状态

    2. ​ 3种恢复技术

      • 仅使用后备副本(脱机、增量转储、恢复用最近后备副本)
      • 使用后备副本和日志文件(运行记录)
      • 利用多个副本

    六、E-R数据模型与E-R图(概念设计)

    用E-R数据模型对现实世界抽象的结果用E-R图表示

    三个抽象概念:实体、属性、联系

    实体(矩形框):客观存在的且可以相互区分的事物

    ​ 实体集:具有相同性质的实体的集合

    联系(菱形框):实体集之间的相互关系(抽象表示)

    ​ 联系的元数:与一个联系有关的实体集的个数

    ​ 联系的类型:1:1、1:n、m:n

    属性(椭圆):实体或联系所具有的特征

    ​ 实体键(下画线):能够唯一标识实体集中某一实体的属性或属性组

    七、逻辑设计

    任务:

    • 将概念结构转换为某个具体的DBMS所支持的逻辑结构
    • 形成合理的全局逻辑结构(基表),并设计出外模式(视图)
    • 对逻辑结构进行适当的调整和优化,使之在功能、完整性约束、可扩充性上满足用户需求

    主要步骤:

    概念设计结果 -- > 初始关系模式(E-R图转换成关系模式)

    1. 实体集

      实体集 -- > 关系模式

      实体属性 -- > 关系模式的属性 -- > 修改RDBMS不支持的类型

      实体键 -- > 关系模式的键

    2. 联系

      m : n 的联系集 -- > 用联系集的属性和两个实体集的键单独构成一个关系、新关系的键由两个实体集的键组合 而成、每个实体键是一个外键

      1 :n 的联系集 -- > 联系集的属性归入 n 方关系模式中,并引用 1 方关系中的键,形成外键

      1 : 1 的联系集 -- > 联系集的属性归入两个关系模式的任一个之中,并引入另一个关系的键,形成外键

      多元联系集 -- > 联系集的属性与各关系模式的键构成新关系

    3. 将具有相同实体键的关系模式合并为一个关系模式

    实例:

    基于 E-R 图做逻辑设计,写出关系模式(单下划线表示主键,波浪线表示外键(此处用斜体表示 ,别问,问就是不知道咋表示波浪线))

    两个实体对应两个模式,M : N联系对应一个模式

    读者(借书证号,姓名,单位,职称)

    图书(图书编号,分类号,书名,作者,出版单位,单价)

    借阅(借书证号,图书编号,借阅日期)

    八、函数依赖和关系模式的规范化

    函数依赖

    1. 属性之间的约束关系 --> 数据依赖 --> 函数依赖

      ​ --> 多值依赖

      ​ -- > 连接依赖

    2. 函数依赖 -- > 一个或一组属性的值可以决定其它属性的值,是最基本的数据依赖

    3. 函数依赖的形式化定义 (X -> Y,表示 Y 函数依赖于 X)

    4. 函数依赖成立的条件

      关系的任一可能指都满足(不仅是当前值)

    5. 平凡函数依赖与非平凡函数依赖

      一个函数依赖 X -> Y 如果满足 Y ⊈ X,则为非平凡函数依赖,否则称之为平凡函数依赖

    6. 完全函数依赖与部分函数依赖

      若 Y 函数依赖于 X,但不依赖于 X 的任何子句 X',则称 Y 完全函数依赖于 X,否则称 Y 部分函数依赖于 X

    7. 传递函数依赖

      若关系的三个属性子集 X、Y、Z 之间有:

      [X -> Y,Y⇏X,Y->Z ]

      则称 Z 传递函数依赖于 X

    8. 逻辑蕴涵

      对一个关系模式存在的多个函数依赖,可以通过推理,从一组已知的函数依赖导出另一组函数依赖,两个函数依赖集之间的这种关系称为逻辑蕴涵

    9. 闭包

      所有被一个已知函数依赖集 F 逻辑蕴涵的那些函数依赖的集合为 F 的闭包

    10. Armstrong 公理

      • 自反律
      • 扩展律
      • 传递律

    候选键

    求属性集闭包算法可用于推导候选键

    定义:

    在关系模式R(U,F)中,若 X ⊆ U,Y ⊆ X, 且满足 X -> U, Y⇏U

    则称 X 为 R 的候选键

    方法:

    • 若属性 A 仅出现在所有函数依赖的

      则它一定不包含在任何候选键中

    • 若属性 A 仅出现在所有函数依赖的

      则它一定包含在某个候选键中

    • 若属性 A 既出现在函数依赖的 部,又出现在 部,则它可能包含在候选键中

    • 在上述基础上求属性集闭包

    未出现函数依赖集中的属性一定是主属性

    关系模式的规范化

    1. 规范化 -- 使关系模式满足某种条件

    2. 范式NF(Normal Form) -- 关系模式满足的条件

    3. 有多级范式,级别越高,条件越严格(共5级,1NF、2NF、3NF(BCNF) -- 模式设计、4NF、5NF -- 理论研究)

      • 第一范式(1NF)

        属性都是原子的关系模式满足第一范式

        可记为 R ∈ 1NF(通常自动满足)

      • 第二范式(2NF)

        如果关系模式 R ∈ 1NF,且它的任一非主属性都完全函数依赖于任一候选键,则称 R 满足第二范式

        记为 R ∈ 2NF

      • 第三范式(3NF)

        如果关系模式 R ∈ 2NF,且每一个非主属性不传递依赖于任一键

        -> 各非主属性既不部分依赖也不传递依赖于键,记为 R ∈ 3NF

      • BCNF(Boyce-Codd范式)-- 改进的3NF

        如果关系模式的所有非平凡函数依赖的决定子都含有键,记为 R ∈ BCNF

        满足 BCNF 的关系可避免更新异常和数据冗余

        若 R ∈ BCNF,则 R ∈ 3NF

    4. 关系模式的分解

      • 模式分解
      • 分解目的:使关系达到某级范式
      • 分解准则:无损、保持依赖
  • 相关阅读:
    tree命令详解
    rm 命令详解
    rename命令详解
    pwd命令详解
    mv命令详解
    mkdir命令详情
    find命令详解
    dockerfile中配置时区
    docker导入导出
    docker上传私有仓库报错
  • 原文地址:https://www.cnblogs.com/alivinfer/p/13091465.html
Copyright © 2011-2022 走看看