数据库原理学习

最近开始在MOOC上跟着学习数据库的基础知识,这里记下笔记.


几个大的概念

说到数据库就要提到三个不同的概念:

  • 数据库(database, 简称DB)
  • 数据库管理系统(DBMS)
  • 数据库系统(DBS)

接下来是具体定义:

  1. 数据库
    实际上”数据库”就是为了实现一定的目的按某种规则组织起来的”数据”和”集合”.严格的讲,数据库是长期存储在计算机内,有组织的,可共享的数据集合.数据库中的数据按一定的数据模型组织,描述和存储.具有较小的冗余度(但不会是零),较高的数据独立性和易扩展性,并可在一定范围内为各种用户所共享.

  2. 数据库管理系统
    DBMS是一个管理数据库的系统软件,它应具有以下功能:
    • 数据库定义功能 (提供数据定义语言DDL,即Data Definition Language.用户通过它可以定义数据库中的数据对象)
    • 数据库操纵功能 (提供数据操纵语言DML, 即Data Manipulation Language.用户通过它可以操zing数据库中的数据,实现增删改查等数据库基本操作)
    • 数据库的运行管理功能 (提供DCL, 数据库在建立,运用和维护时间由DBMS统一管理,负责数据的安全性,完整性,多用户对数据的并发使用及发生故障后的系统恢复)
    • 数据库的建立和维护功能 (一般包括数据库初始数据的输入,转换功能,数据库的转储,恢复功能,数据库的重组织功能和性能监视,分析功能)
  3. 数据库系统
    指在计算机系统换种引入数据库后构成的计算机应用系统,其中包括:
    • 数据库(及相关硬件)
    • 数据库管理员(DBA)和用户
    • 软件(主要包括操作系统,各种宿主语言,使用程序以及数据库管理系统)

    用户->应用系统->应用开发工具->DBMS->操作系统->DB

    其特点为: 数据结构化,数据共享,冗余度可控


数据库系统三级结构

从数据库管理系统的角度看,数据库系统通常采用三级模式结构: 内模式, 概念模式, 外模式

三级模式结构:
三级模式结构
概念模式(简称模式,也称逻辑模式):
是数据库的总框架,是指数据库中全体数据的逻辑结构和特征的描述.一个数据库只有一个概念模式.描述数据库中关于目标存储的逻辑结构和特性,以及对数据的安全性,完整性等方面的定义.

内模式(也称存储模式):
它是数据物理结构和存储结构的描述,是数据在数据库内部的表现方式.
内模式是由系统程序员设计实现的,一个数据库只有一个内模式.它规定数据在存储介质上的物理组织方式,记录寻址技术,定义物理存储块的大小,溢出处理方法等,与概念模式相对应.

外模式(也称子模式,用户模式):
通常是模式的一个子集,外模式面向用户,故称为”用户”视图.
一个数据库可以有多个外模式,所有的应用程序都是根据外模式中对数据的描述而不是根据概念模式中对数据的描述而编写的.在一个外模式中可以编写多个应用程序,但一个应用程序只能对应一个外模式.

总结:

  • 概念模式表示了概念级数据库,体现了数据库的总体观
  • 内模式表示了物理级数据库,体现了数据库的存储观
  • 外模式表示了用户级数据库,体现了数据库的用户观

数据库系统的两级映像

在数据库管理系统DBMS中,除了典型的三级模式,还有与之搭配的两级映像.
分别为:
内模式与概念模式之间的一级,负责将概念数据库与物理数据库联系起来,体现了其物理独立性.
外模式与概念模式之间的一级,负责将用户数据库与概念数据库联系起来,体现了其逻辑独立性.

当底层模式发生更改后,通过改变映像使得高层模式不需要进行变动.


数据模型

在设计数据库的过程中,通常是将客观事物进行抽象转变为数据模型.
这里的大概过程为: 客观事物->概念模型(E-R图)->数据模型

先简单提一些概念:
实体与属性: 客观上可以相互区分的事物就是实体,一个实体通常具有若干个特征,其中的每一个特征就称为实体的一个属性.
实体集之间的联系: 分为实体集内部的联系和实体集之间的联系.有一对一(1:1),一对多(1:n),多对多(n:n).

常见的数据模型:

  • 层次模型(可以理解为有向树,简单易操作,缺点为插入删除操作时限制较多)
  • 网状模型(可以理解为有向图,能够更直接的描述现实世界,但其DDL及其复杂)
  • 关系模型(最为主流,数据为一张二维表.缺点为查询不够效率)
  • 面向对象模型(具有很强的模型扩展能力,节省开销,但尚不成熟)

数据模型的三要素:

  • 数据结构
  • 数据操作
  • 完整性约束

关系数据模型

在关系模型中,数据的逻辑结构为满足一定条件的二维表,表具有固定的列数和任意的行数,在数学上称为”关系”.
从数学的角度: 域->笛卡尔积->关系(关系为笛卡尔积的一个子集)

: 一组具有相同数据类型的值的集合
笛卡尔积: 给定一组域D1,D2,…,Dn,这些域中可以是相同的域,则D1,D2,…,Dn的笛卡尔积为: D1xD2x…xDn = {(d1,d2,…,dn)|di Di, i=1,2,…,n}
其中,每一个元素(d1,d2,…,dn)叫做一个元祖(tuple),元素中的每一个值di叫做一个分量.基数代表笛卡尔积中最终有多少个元祖.
笛卡尔积的基数=各个域的基数(域中有多少分量)相乘.
关系: 记作R(D1,D2,…,Dn) R为关系名,n为关系的目或度

关系数据库中对关系的限制(若满足则称为规范化关系):

  1. 列是同质的,即每一列中的分量是同一个数据类型,来自同一个域,为元祖的一个属性
  2. 不同列的数据可以来自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名
  3. 列的顺序无所谓,即列的次序可以任意交换.交换时,应连同属性名一起交换,否则将得到不同的元素.
  4. 任意两个元祖的候选键不能相同,就是说表还总的任意两行不能相同,即一个关系不能有相同的元祖.
  5. 行的顺序无所谓,次序可以任意交换.
  6. 每个分量必须取原子值,即每一个分量都必须是不可分的数据项,即是一个确定的值,而不是值的集合,不可”表中有表”.

关系模型中的一些基本概念:

  1. 如果关系中的某一属性组的值能够唯一的标识一个元祖,则称该属性组为候选键(Candidate key)
  2. 如果一个关系中有多个候选键,可以从中选择一个作为查询,插入或删除元祖的操作变量,被选用的候选键称为主关系键(Primary key),或称为主键,关键字.每一个关系都有且只有一个主键.
  3. 包含在候选键中的各属性称为主属性.其他为非主属性或非键属性.
  4. 最极端的情况下,关系模型的所有属性是这个关系模型的候选键,这种情况称为全键(All-key)
  5. 设F为基本关系R的一个或一组属性,但不是R的键,KS是基本关系S的主键.如果F与基本关系S的主键KS相对应,则称F是基本关系R的外键,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系.
  6. 关系的描述称为关系模式,可表示为R(U,D,DOM,F).其中R为关系名,U为该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合.

关系的三类完整性约束:

  • 实体完整性
    若(一个或一组)属性是基本关系的主属性(或主键中的属性),则不能取空值
  • 参照完整性
    关系模型中实体与实体之间的联系都是用关系来描述的,这就存在着关系与关系之间的引用,该引用的值必须是确实存在的,若属性F是基本关系R的外键,它与基本关系S的主键KS相对应,则对于R中每个元祖在F上的值必须为:空值或者S中某个元祖的主键值.
  • 用户自定义完整性
    跟应用相关.