《数据库系统概论》学习笔记

数据库

本文总阅读量
Posted by Xiaoxi on October 16, 2016

《数据库系统概论》学习笔记


第一章. 绪论

1. 数据库 4个基本概念

  1. 数据:数据是数据库中存储的基本对象,也定义为描述事物的符号记录。此外,数据的含义称为数据的语义,数据与其语义是不可分的。
  2. 数据库:数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。 数据库数据具有永久存储、有组织和可共享三个基本特点。
  3. 数据库管理系统:用于管理数据库,主要功能:数据定义功能、数据组织、存储和管理、数据操纵、数据库的事务管理和运行管理、数据库的建立和维护功能等等。
  4. 数据系统:数据库系统是由数据库、数据库管理系统(及其应用开发工具)、应用程序和数据库管理员组成的存储、管理、处理和维护数据的系统。

2. 数据库管理技术的产生和发展

  1. 人工管理阶段
  2. 文件系统阶段
  3. 数据库系统阶段

具体比较参考书p7

3.数据库系统的特点

  1. 数据结构化:这事数据库的主要特征之一,也是数据库系统和文件系统的本质区别
  2. 数据的共享性高、冗余度低且易扩充
  3. 数据独立性高:包括物理独立性和逻辑独立性,物理独立性是指用户的应用程序和数据库中数据的物理存储是相互独立的。逻辑独立性是指用户的应用程序和数据库的逻辑结构是相互独立的
  4. 数据由数据库管理系统统一管理和控制,这能解决共享导致的安全隐患,它能提供数据的安全性保护,数据的完整性检查,兵法控制,数据库恢复

综上,数据库是长期存储在计算机内有组织、大量、共享的数据集合。它可以供各种用户共享,具有最小冗余度和较高的数据独立性。数据库管理系统在数据库建立、运用和维护时对数据库进行统一控制,以保证数据的完整性和安全性,并在多用户同时使用数据库时进行兵法控制,在发生故障后对数据库进行恢复。

4.数据模型

数据模型是对现实世界数据特征的抽象,用来描述数据、组织数据和对数据进行操作的。数据模型是数据库系统的核心和基础。

分类

  1. 概念模型:它按用户的观点来对数据和信息建模,主要用于数据库设计
  2. 逻辑模型和物理模型:逻辑模型主要包括层次模型、网状模型、关系模型、面向对象数据模型和对象关系数据模型、半结构化模型等。物理模型是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法。

概念模型

  1. 实体:客观存在并可互相区别的事物称为实体。(具体的一个事物,例如一个学生)
  2. 属性:实体所具有的某一特性称为属性。(一个实体可以由若干个属性来刻画,例如学生实体可以由学号、性别、姓名等来刻画)
  3. 码:唯一标识实体的属性集称为码。(学号可以作为学生实体的码,来唯一区分)
  4. 实体型:用实体名及其属性名集合来抽象和刻画同类实体,称为实体型。例如(学生(学号,姓名,性别,出生年月)就是一个实体型
  5. 实体集:同一类型实体的集合称为实体集(例如全体学生就是一个实体集)
  6. 联系:实体之间的联系通常指不同实体集之间的联系,实体之间的联系有一对一、一对多和多对多等多种类型

概念模型一般采用实体-联系方法,也就是E-R图来描述

数据模型

数据模型一般由数据结构、数据操作和数据完整性约束条件三部分组成。

  1. 数据结构:描述数据库的组成对象以及对象之间的联系
  2. 数据操作:是指对数据库中各种对象(型)的实例允许执行的操作的集合,包括操作及有关的操作规则。
  3. 数据的完整性约束条件:数据的完整性约束是一组完整性规则。完整性规则是给定的数据模型中数据及其联系所具有的制约和遗存规则,用以限定符合数据模型的数据库状态以及状态的变化,以保证数据及的正确、有效和相容。
常见的数据模型
1. 层次模型

通俗的讲层次模型就是一颗树,这棵树需要满足以下两个条件:

  1. 有且只有一个节点没有双亲节点,这个节点称为根节点
  2. 根以外的其他节点有且只有一个双亲节点。 优缺点:数据结构比较简单清晰,查询效率高,提供了良好的完整性支持,但是并不能适用于现实世界的联系,有时能使用,但是很笨拙。 #####2. 网状模型 典型代表:DBTG系统,亦称为CODASYL系统。 满足条件:

  3. 允许一个以上的结点无双亲
  4. 一个节点可以有多于一个的双亲 较层次模型更宽松的规则,更具有普遍性。 优点:能够更为直接描述现实世界,良好的性能,存取效率较高。 缺点:结构复杂,网状模型的DDL、DML复杂,并且需嵌入某一种高级语言中。有一定的应用程序负担
3. 关系模型

建立在严格的数学概念的基础上。

  1. 关系:一个关系对应通常说的一张表。
  2. 元组:一行
  3. 属性:一列
  4. 码:也称为码键,表中的某个属性组,唯一确定一个元组。
  5. 域:域是一组具有相同数据类型的值的集合。
  6. 分量:元组中的一个属性值。
  7. 关系模式:对关系的描述,一般表示为 关系名(属性1,属性2,。。。。属性n)

关系模型要求关系必须是规范化的,关系的每一个分量必须是一个不可分的数据项。

优缺点:建立在严格的数学概念上,概念单一,数据结构简单、清晰,用户易懂易用,开发方便。

3. 数据库系统的结构

  1. “型”和“值”的概念,型是指对某一类数据的结构和数学的说明,值时型的一个具体赋值。
  2. 模式是数据库中全体数据的逻辑结构和特征描述,模式的一个具体值称为模式的一个实例。模式是相对稳定的,而实例是相对变动的。
  3. 数据库系统的三级模式结构:外模式、模式和内模式三级构成。
    • 模式:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
    • 外模式也称子模式或用户模式,它是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
    • 内模式也称存储模式,一个数据库只有一个内模式。它是数据物理结构和存储方式的描述,是数据在数据库内部的组织方式。
  4. 数据库的二级映象功能
    • 外模式/模式映象:当模式改变时,由数据库管理员对各个外模式/模式的映象作相应改变,可以使外模式保持不变。应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性,简称数据的逻辑独立性
    • 模式/内模式映象:当数据库的存储结构改变时,由数据库管理员对模式/内模式映象作相应改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性,简称数据的物理独立性。

第二章. 关系数据库

关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

1. 关系(关系数据库的数据结构)

  1. 域:域是一组具有相同数据类型的值的集合。

  2. 笛卡尔积:

    在数学中,两个集合XY笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员

    假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。

    一个域允许的不同取值个数称为这个域的基数。

    关系是笛卡儿积的有限子集。

  3. 若关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。

  4. 若一个关系有多个候选码,则选定其中一个为主码。

  5. 候选码的诸属性称为主属性。不包含在任何候选码中的属性称为非主属性或非码属性。

  6. 在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码。

  7. 关系可以有三种类型:基本关系(基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示;查询表示查询结果对应的表;视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。

  8. 在对关系进行限定和扩充下(为了适应数据库要求):关系需要具有以下几个性质

    1. 列是同质的

    2. 不同的列可出自同一个域

    3. 列的顺序无所谓

    4. 任意两个元组的候选码不能取相同的值

    5. 行的顺序无所谓

    6. 分量必须取原子值

      必须保证表中不能再有表

  9. 关系的描述称为关系模式(型),关系是关系模式在某一时刻的状态或内容(值)。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的。

  10. 关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。

2. 关系操作

关系操作的对象和结果都是集合。基本操作:选择、投影、并、差、笛卡尔积。分类:关系代数、关系演算、介于两者之间(SQL)。

3. 关系的完整性

  1. 实体完整性:若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。所谓空值就是“不知道”或“不存在”或”无意义“的值。
  2. 参照完整性:设F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系或目标关系。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须:或者取空值,或者等于S中某个元组的主码值。
  3. 用户定义的完整性:就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

其中,1,2是关系模型必须满足的完整性约束,被称作关系的两个不变性,应用由关系系统自动支持。

4. 关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。

  1. 集合运算:并、交、差、笛卡尔积
  2. 关系运算:选择、投影、连接、除运算等

具体请参照书本,看例子。p50-p56

5. 习题

1 .试述关系模型的三个组成部分。 答:关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。

 

2 .试述关系数据语言的特点和分类。

答:关系数据语言可以分为三类:

关系代数语言。

关系演算语言:元组关系演算语言和域关系演算语言。

SQL:具有关系代数和关系演算双重特点的语言。

这些关系数据语言的共同特点是,语言具有完备的表达能力,是非过程化的集合操作语言,功能强,能够嵌入高级语言中使用。

5 . 述关系模型的完整性规则。在参照完整性中,为什么外部码属性的值也可以为空?什么情况下才可以为空?

答:实体完整性规则是指若属性A是基本关系R的主属性,则属性A不能取空值。

若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:或者取空值(F的每个属性值均为空值);或者等于S中某个元组的主码值。即属性F本身不是主属性,则可以取空值,否则不能取空值。

6.设有一个SPJ数据库,包括S,P,J,SPJ四个关系模式:

1)求供应工程J1零件的供应商号码SNO:

πSno(σJno=‘J1’(SPJ))

2)求供应工程J1零件P1的供应商号码SNO:

πSno(σJno=‘J1’∧Pno=‘P1‘(SPJ))

3)求供应工程J1零件为红色的供应商号码SNO:

πSno(πSno,,Pno(σJno=‘J1‘ (SPJ))∞πPno(σCOLOR=’红‘ (P)))

4)求没有使用天津供应商生产的红色零件的工程号JNO:

πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘红‘ (S∞SPJ∞P)

5)求至少用了供应商S1所供应的全部零件的工程号JNO:

πJno,Pno(SPJ)÷ πPno(σSno=‘S1‘ (SPJ))

7 . 试述等值连接与自然连接的区别和联系。

答:连接运算符是“=”的连接运算称为等值连接。它是从关系R与S的广义笛卡尔积中选取A,B属性值相等的那些元组

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。

8.关系代数的基本运算有哪些 ? 如何用这些基本运算来表示其他运算?

答:并、差、笛卡尔积、投影和选择5种运算为基本的运算。其他3种运算,即交、连接和除,均可以用这5种基本运算来表达。


第三章. SQL语言


第四章. 数据库安全性

数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。

数据库管理系统提供的技术有强制存取控制、数据加密存储和加密传输等。

存取控制

  1. 自主存取控制:用于对于不同的数据库对象有不同的存取权限,不同的用户对同一对象也有不同的权限,而且用户还可将其拥有的存取权限转授给其他用户。
  2. 强制存取控制:每一个数据库对象被标以一定的密级,每一个用户也被授予某一个级别的许可证。对于任意一个对象,只有具有合法许可证的用户才可以存取。

述实现数据库安全性控制的常用方法和技术

实现数据库安全性控制的常用方法和技术有:

  1. 用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。每次 用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
  2. 存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所 有未被授权的人员无法存取数据。例如 CZ 级中的自主存取控制( DAC ) , Bl 级中的强制存 取控制(MAC )。
  3. 视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户 隐藏起来,从而自动地对数据提供一定程度的安全保护。
  4. 审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA 可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、 时间和内容等。
  5. 数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获 知数据的内容。

第六章. 关系数据理论

数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性间值的相等与否体现出来的数据间相关联系。主要有函数依赖和多值依赖等几种。

规范化

  1. 函数依赖

    一、函数依赖(Functional Dependency)的概念        数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。

    二、定义      设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,An}的子集,r为R的任一关系,如果对于r中的任意两个元组u,v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y,或称Y函数依赖于X,记为X→Y。  例: (sno-学生ID,tno-教师ID,cno-课程ID,sname-学生姓名,tname-教师姓名,cname-课程名称,grade-成绩) 1、sno→sname, cno→cname,(sno,cno)→grade √ 2、sname→sno, tno→cno, sno→tname ×

    三、函数依赖是语义范畴  1、语义:数据所反映的现实世界事物本质联系 2、根据语义来确定函数依赖性的存在与否 3、函数依赖反映属性之间的一般规律,必须在关系模式下的任一个关系r中都满足约束条件。

    四、属性间的联系决定函数依赖关系  设X、Y均是U的子集 1、X和Y间联系是1:1,则X→Y,Y→X。(相互依赖,可记作X←→Y) 2、X和Y间联系是M:1(M), 则X→Y。 3、X和Y间联系是M:N(M,N),则X、Y间不存在函数依赖。

    五、完全函数依赖和部分函数依赖  1、函数依赖分为完全函数依赖和部分函数依赖 2、定义:    在R(U)中,如果X→Y,并且对于X的任何真子集X’都有X’Y’,则称Y完全依赖于X,记作X→Y;否则,如果X→Y,且X中存在一个真子集X’,使得X’→Y成立,则称Y部分依赖于X。 例: 学生ID,学生姓名,所修课程ID,课程名称,成绩 (学生ID,所修课程ID)→成绩 成绩既不能单独依赖于学生ID,也不能单独依赖于所修课程ID,因此成绩完全函数依赖于关键字。 (学生ID,所修课程ID)→学生姓名 学生ID→学生姓名 学生姓名可以依赖于关键字的一个主属性——学生ID,因此学生姓名部分函数依赖于(学生ID,所修课程ID)。

    六、平凡函数依赖和非平凡函数依赖      设X,Y均为某关系上的属性集,且X→Y     1)若Y包含于X,则称X→Y为:平凡函数依赖;(Sno, Cno) → Sno  (Sno, Cno) → Cno     2)若Y不包含于X,则称X→Y为:非平凡函数依赖。(Sno, Cno) → Grade      Y包含于X内,W于X相交,与Y无直接交集。       则:X→Y为平凡函数依赖      X→W, W→Y为非平凡函数依赖

    七、传递函数依赖 X→Y,Y→Z 则Z传递函数依赖于X

  2.  码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。   超码是一个或多个属性的集合,这些属性可以让我们在一个实体集中唯一地标识一个实体。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。   候选码是从超码中选出的,自然地候选码也是一个或多个属性的集合。因为超码的范围太广,很多是我们并不感兴趣即无用处的。所以候选码是最小超码,它们的任意真子集都不能成为超码。例如,如果K是超码,那么所有包含K的集合都不能是候选码;如果K,J都不是超码,那么K和J组成的集合(K,J)有可能是候选码。   是从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。虽然说主码的选择是比较随意的,但在实际开发中还是要靠一定的经验,不然开发出来的系统会出现很多问题。一般来说主码都应该选择那此从不或者极少变化的的属性。

  3. 范式

    范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。

    一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。

    引用百科的

    1 第一范式(1NF)

    在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。

    所谓第一范式(1NF)是指数据库的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。如果出现重复的属性,就可能需要定义一个新的实体,新的实体由重复的属性构成,新实体与原实体之间为一对多关系。在第一范式(1NF)中表的每一行只包含一个实例的信息。

    简而言之,第一范式就是无重复的列。

    2 第二范式(2NF)

    第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。这个唯一属性列被称为主关键字或主键、主码。

    第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性。如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。

    简而言之,第二范式就是非主属性非部分依赖于主关键字。

    3 第三范式(3NF)

    满足第三范式(3NF)必须先满足第二范式(2NF)。简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

    例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在图3-2的员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。

    简而言之,第三范式就是属性不依赖于其它非主属性。

  4. 多值依赖:

     设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。

    若X->->Y,而Z=空集,则称X->->Y为平凡的多值依赖。否则,称X->->Y为非平凡的多值依赖

##