数据库: 期末复习

期末总复习

基本概念

文件系统的弊端

  • 数据冗余、数据不一致:在多个文件中,某些数据会出现冗余,导致修改时涉及很多文件,此时发生异常将导致数据不一致问题;这里的一致性指的是不同文件中数据本该相同,但实际上不同的情况
  • 访问困难
  • 数据孤立
  • 数据完整性:指文件中数据不符合现实逻辑的情况,对某个数据添加约束时,很难约束所有涉及到该文件的程序
  • 操作的原子性:对文件的修改难以做到要么全部完成、要么完全没有修改
  • 多用户并发访问:当多个用户同时访问文件时,容易导致数据不一致问题
  • 安全性问题:难以灵活调整不同用户对文件的访问权限

DBMS基本概念

  • 数据是描述现实事物的符号记录
  • 数据库是数据的集合
  • DBMS(数据库管理系统),是用于管理数据库的基础软件系统,也是通常意义上的数据库 数据库系统则是由DBMS、数据库、管理员、应用进程组成的一套系统
  • 数据库的三级模式:分为外部层(视图层、外模式)、概念层(逻辑层、模式)、内部层(物理层、内模式)
    • 先考虑模式的概念:相当于一种数据类型,一个模式包含多个属性名及对应的属性类型和完整性约束 平常接触的表就是一个模式的实例 平常一个模式只会有一个实例,所以经常将“关系”、“关系模式”混着说
    • 视图层:对于不同的用户、根据权限和需求展现不同的数据 例如平时使用查询语句以及创建视图时,查出来的结果,用户可以修改视图的列名,由系统完成从视图层到概念层的映射,只不过这些视图是
    • 逻辑层:包含由创建该模式的用户起的名称及类型,例如平常接触的表就是一个概念层的实例
    • 物理层:包含具体来说在数据库管理系统中真正的由系统起名、由系统管理的名称;以及其对应的存储大小、存储位置等
  • 数据库的两级映射:使数据库具有独立性,在一层发生变动时,其它层不需要由用户维护而仍保持不变
    • 视图层和逻辑层:使数据库具有逻辑独立性
    • 逻辑层和物理层:使数据库具有物理独立性
  • 数据模型:是数据、数据联系、数据语义、数据一致性约束的集合
    • 概念数据模型:实体-联系模型 也就是ER
    • 逻辑数据模型:关系模型、网状模型、层次模型、基于对象数据模型、半结构化数据模型
    • 物理数据模型:B树等

关系数据模型

  • 关系数据模型是一种逻辑数据模型 其中数据结构、数据完整性约束体现在用户设计的模式上 数据操作和数据结构、数据完整性约束共同构成关系数据模型
  • 在关系数据模型中:
    • 关系模式的实例称为关系,它们通常是一对一的,所以会混着用
    • 关系也称为表
    • 属性相当于表的一列
    • 元组相当于表的一行,元组是一个关系的最小单位
  • 一个属性的域是所有可以作为该属性的值的集合 域的原子性是第一范式,即域的所有值都是不可再分的
  • 空值NULL是一个特殊的值,表示未知、不确定,其参与的所有表达式都返回false(除is null等特殊表达式)
  • 关系完整性约束:
    • 超码:是一个属性组,若这个属性组的值确定,则可以唯一确定关系中所有属性的值
    • 候选码:是最小的超码,其任何真子集都不是超码 所有在候选码中出现过的属性称作主属性,其余是非主属性
    • 主码:被设计者选中来作为关系的唯一标识的那个候选码
    • 实体完整性约束:对于一个主码,它会受到实体完整性约束,用户插入的主码的值必须满足唯一、非空
    • 参照完整性约束和外码:一个关系R1的属性组T1参照另一个关系R2的主码T2,称为T1是参照R2的外码 其中,T1不要求是主码,但有参照完整性约束T1的值要么为空、要么是现在R2存在的T2的值 T2要求是R2的主码
    • 用户自定义完整性约束:唯一性约束、非空约束、检查约束(约束值的范围)

关系代数

概述

  • 过程式查询语言

  • 基本、附加、扩展

  • 基本运算:σΠ

  • $\Pi_{投影的若干列}\left(\begin{align}\sigma_{选择条件}\left(数据源\right)\end{align}\right)$

  • σ:选择(限制)运算

  • 选择条件可用的逻辑运算符: ∧ 、 ∨ 、¬

  • Π:狭义的投影运算,只能选择属性进行投影

  • ρ():重命名运算

  • $\cross$:笛卡尔积运算

  • 集合运算: ∪ 、−

  • :自然连接

  • ⟕、⟖、⟗:左/右/全外连接,在自然连接的基础上保留左端/右端/两端的所有行

  • θθ连接,其中θ是自定义的连接条件

  • 关系除:r(R)

  • 聚集函数:𝒢

$\begin{align}\Large\rm\Pi_{ename,sal}(\sigma_{dept.loc='New\ York'\wedge emp.deptno=dept.deptno}(emp\cross dept))\end{align}$

数据库设计

基本概念

  • 在进行需求分析后,数据库设计分为三步:
    • 设计概念数据模型
    • 设计逻辑数据模型
    • 设计物理数据模型

ER模型设计

  • ER模型是最常见的概念数据模型,全称Entity-Relationship模型,即实体-联系模型

  • ER模型由以下部分组成:

    • 实体集
    • 联系集
    • 属性和它的域
  • 属性的类型:

    • 简单类型

    • 复合类型:由多个属性组成的属性,在ER模型中表示为:

      1
      2
      3
      composite_attribute
      component_1
      ...

      即由缩进表示从属关系

    • 多值类型:可能同时含有多个值的类型,在ER模型中表示为:

      1
      {multivalue_attribute}
    • 派生属性(或导出属性):可以由其它属性求出的属性,在ER模型中表示为:

      1
      derived_attribute()
    • 作为码的属性:在ER模型中用下划线指出

  • 实体由属性和具体的值表示,由所有可能的实体构成的集合就是实体集 实体集在ER模型中表示为方框,上面是实体集名称,下面是属性集合

  • 联系是若干实体之间的关联,也就是一个联系允许关联多个实体(但本文仅考虑二元联系),但不允许有关联联系的联系 由相同类型的联系构成的集合就是联系集,在ER模型中表示为棱形 一个联系集允许有不同于相关联实体集属性的属性,称为描述性属性,在ER模型中表示为由虚线引出的方框中的属性

  • 参与度约束:

    • 称一个实体参与一个联系集,是一个实体至少对应一个另一端的实体,即限制对应关系的下限
    • 称一个实体集完全参与一个联系集,是这个实体集的所有实体都参与这个联系集 否则称这个实体集部分参与这个联系集
    • 完全参与和部分参与在ER模型中表示为双线、单线
  • 映射基数约束:限制对应关系的上限,分为一对一基数、一对多基数、多对多基数

    • 一对一基数:双方实体集都满足“所有实体至多对应一个另一端的实体”
    • 一对多(或多对一)基数:对于多方实体集,没有上述限制
    • 多对多基数:对于双方实体集都没有上限的限制
  • 码约束:

    • 对于实体集来说,用户定义的码属性就是该实体集的码,它们的某个值必须能够唯一标识一个实体
    • 对于联系集来说,多方实体集的码属性就是联系集的码;如果两边都是多方,则使用双方的码作为联系集的码;如果双方都是“一”方,则使用任意一方的码作为联系集的码
    • ER模型中不允许出现起外码功能的属性,如果实体集中存在这样的属性则需要删去 如果删去后剩余的码属性无法唯一标识一个实体,但依赖于另一方的码属性后又可以唯一标识时,则称该实体集为弱实体集,关联该弱实体集和其依赖的强实体集的联系集双棱形表示 弱实体集的“码属性”没有码的职责,因此它们的集合称为分辨符,用虚线下划线表示

关系型数据模型设计

  • 关系型数据模型是一种逻辑数据模型,将ER模型转化为关系型数据模型
  • 对于所有一对一的联系集,联系集不需要单独作为一个关系,两个实体集各作为一个关系,联系集的属性可作为任意一个实体集的属性