绪论

术语

  1. 信息( Information)
    信息是现实世界中各种事物的存在方式、运动形态以及它们之间的相互联系等诸要素在人脑中的反映,通过人脑的抽象后形成概念。

  2. 数据(Data)
    数据是数据库中存储的基本对象。定义为描述事务的符号记录。数据的含义称为语义,数据与其语义是不可分的。

  3. 数据库(DataBase,DB)
    长期存储在计算机内,有组织的,可共享的大量数据的集合。
    数据库基本特征:1.永久存储 2.有组织 3.可共享 4.冗余度小 5.易扩展

  4. 数据库管理系统(DataBase Management System,DBMS)
    位于用户与操作系统之间的一层数据管理软件
    数据库管理系统和操作系统一样是计算机的基础软件。
    DBMS 的主要任务是按一定格式组织数据,将其存人数据库并进行高效处理,同时负责对数据库进行维护。
    DBMS 的主要功能包括使用户能方便地定义和操纵数据,保证数据的完整性、安全性,多用户的并发使用和故障后的系统恢复。

  5. 数据库系统管理员(DataBase Administator,DBA)
    负责数据库的建立、使用和维护的专业人员

  6. 数据库系统(DataBase System,DBS)
    数据库系统由数据库(DB),数据库管理系统(DBMS),应用程序和数据库管理员(DBA)组成的存储、管理、处理和维护数据的系统。

数据库管理技术的发展过程(三个阶段)

人工管理阶段:

在计算机出现之前,人们运用常规的手段从事记录、存储和对数据加工,也就是利用纸张来记录和利用计算工具(算盘、计算尺)来进行计算,并主要使用人的大脑来管理和利用这些数据。

特点:

  1. 计算机系统不提供对用户数据的管理功能;
  2. 数据不能共享;
  3. 不保存数据。

文件系统阶段:

在这一阶段(20世纪50年代后期至60年代中期)计算机不仅用于科学计算,还利用在信息管理方面。随着数据量的增加,数据的存储、检索和维护问题成为紧迫的需要,数据结构和数据管理技术迅速发展起来。此时,外部存储器已有磁盘、磁鼓等直接存取的存储设备。软件领域出现了操作系统和高级软件。操作系统中的文件系统是专门管理外存的数据管理软件,文件是操作系统管理的重要资源之一。

特点:
数据以“文件”形式可长期保存在外部存储器的磁盘上。由于计算机的应用转向信息管理,因此对文件要进行大量的查询、修改和插入等操作,这些操作由文件系统提供。

缺点:
数据冗余;不一致性;数据独立性差。

数据库系统阶段:

20世纪60年代后期以来 ,计算机性能得到进一步提高,更重要的是出现了大容量磁盘,存储容量大大增加且价格下降。在此基础上,才有可能克服文件 系统管理数据时的不足,而满足和解决实际应用中多个用户、多个 应用程序共享数据的要求,从而使数据能为尽可能多的 应用程序服务,这就出现了数据库这样的数据管理技术。

特点:

  1. 数据结构化。
  2. 数据共享性高、冗余少且易扩充。
  3. 数据独立性高。
  4. 数据由DBMS统一管理和控制。

数据模型(Data Model)

数据模型的分层

概念数据模型(Conceptual Data Model)

它是独立于计算机系统的模型,只是用来描述某个特定组织所关心的信息结构,按用户的观点对数据和信息建模,是对数据对象的基本表达和概括性描述。
它是面向数据库用户的实现世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及 DBMS 的具体技术问题,集中精力分析数据以及数据之间的联系等。
概念模型与具体的数据库管理系统(Dalabase Management Sysem,简称DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在 DBMS 中实现,主要用于数据库设计初期。它是数据库设计人员与用户交流的工具。
概念模型用于信息世界的建模,一方面应该具有较强的语义表达能力,能够方便直接表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
在概念数据模型中最常用的是 E-R 模型、扩充的 E-R 模型、面向对象模型及谓词模型。

逻辑数据模型(Logical Data Model)

逻辑数据模型是用户从数据库所看到的数据模型,是具体的 DBMS 所支持的数据模型。
它是直接面向数据库的逻辑结构,通常有一组严格定义的、无二义性的语法和语义的数据库语言。人们可以用这种语言来定义、操纵数据库中的数据。
此模型既要面向用户,又要面向系统,主要用于数据库管理系统(DBMS)的实现,与具体的 DBMS有关(DBMS 按所支持的逻辑数据模型分类,如: 层次模型、网状模型和关系模型)
概念模型表示的数据必须转化为逻辑模型表示的数据,才能在 DBMS 中实现。

物理数据模型(Physical Data Model)

它是对数据最低层的抽象,描述数据在储存介质上的组织结构、存储方式和存取方法
它是面向计算机物理表示的模型,不但与具体的 DBMS 有关,而且还与操作系统和硬件有关。
每一种逻辑数据模型在实现时都有与其对应的物理数据模型。
DBMS 为了保证其独立性与可移植性,大部分物理数据模型的实现工作由 DBMS 系统自动完成,设计者只设计索引、聚集等特殊结构。

数据模型的组成要素

数据模型通常由数据结构、数据操作和完整性约束三个部分组成。

  1. 数据结构描述数据库的组成对象以及对象之间的联系,通常按其数据结构的类型来命名数据模型,例如层次结构、网状结构和关系结构的数据模型分别命名为层次模型、网状模型、关系模型。

  2. 数据操作是指对数据库中各种对象的实例允许执行的操作的集合,包括操作及其有关的规则,主要分为查询和更新(插入、删除、修改)两大类操作。

  3. 整性约束条件是给定的数据模型中数据及其联系所具有的制约和依存规则,在关系模型中体现为实体完整性和参照完整性。例如,某大学的数据库中规定学生成绩如果有6门以上不及格则不能授予学士学位,教授的退休年龄是65周岁等。

数据库系统结构

数据库系统的三级模式结构:模式(Schema)、外模式(External Schema)、内模式(Internal Schema)

模式(也称逻辑模式)
①数据库中全体数据的逻辑结构和特征的描述
②所有用户的公共数据视图,综合了所有用户的需求

模式的地位:是数据库系统模式结构的中间层
①与数据的物理存储细节和硬件环境无关
②与具体的应用程序、开发工具及高级程序设计语言无关

外模式(也称子模式或用户模式)
①数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述
②数据库用户的数据视图,是与某一应用有关的数据的逻辑表示

外模式的用途:①保证数据库安全性的一个有力措施 ②每个用户只能看见和访问所对应的外模式中的数据
内模式(也称存储模式):
①是数据物理结构和存储方式的描述
②是数据在数据库内部的表示方式:

a. 记录的存储方式(顺序存储,按照B树结构存储,按hash方法存储)
b. 索引的组织方式
c. 数据是否压缩存储
d. 数据是否加密
e. 数据存储记录结构的规定

E-R模型

实体-联系方法(Entity-Relationship Approach)是概念模型的一种表示方法,其提供了表示实体型、属性和联系的方法。

  1. 实体型:用矩形表示,矩形框内写明实体名

  2. 属性:用椭圆表示,并用无向边将其与相应的实体型连接起来

  3. 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时标明联系的类型(1:1, 1:n, m:n)
    比如有两个简单实体,分别是单位和职员,它们的关系就是1:m,一个单位可以有多个职员;
    再比如有两个实体,分别是学生和图书,它们的关系就是m:n,从而形成中间表学生借阅的图书,结果是1本图书可以被多人借阅,1个人也可以借多本图书。

关系数据模型与关系运算

关系模型的基本概念

关系模型是建立在集合代数的基础上的,因此从集合论角度给出关系数据结构的形式化定义。

  1. 域(Domain):域是一组具有相同数据类型的值的集合,例如整数、自然数都是域

  2. 笛卡尔积(Cartesian Product):笛卡尔积是域上面的一种集合运算。
    笛卡尔积中每个元素(d1,d2,…dn)称为一个n元组或简称元组
    笛卡尔积可表示为一个二维表,表中每行对应一个元组,表中每一列的值来自一个域

  3. 关系(Relation)

    • D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为R(D1,D2,…,Dn)
    • R:关系名; n:关系的目或度(Degree)
    • 关系也是一个二维表,每行对应一个元组,每列对应一个域,每列称为属性
    • 关系的性质:
      (1)唯一性
      (2)无序性
    • 关系模型
      关系数据结构、关系操作集合和关系完整性约束三部分是关系模型的三要素

关系的键与关系的完整性

  1. 候选键:若关系中某一属性或最小属性组的值能够唯一标识一个元组,则称该属性或属性组为关系的候选键( Candidate Key)。一个关系中至少含有一个候选键。
  2. 主键:若一个关系有多个候选键时,我们从候选关系键中选择一个作为主键(Primary Key,也称主码、主关键字)。
  3. 外键:在一个表中存在的另一个表的主键称此表的外键。

关系的完整性约束

  1. 实体完整性
  2. 参数完整性
  3. 用户定义完整性

关系代数

关系代数的运算对象是关系,运算结果也是关系。关系代数中的运算符包括四类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。其中,比较运算符和逻辑运算符使用来辅助专门的关系运算符进行操作的

  • 集合运算符:∪(并),-(差),∩(交),X(广义笛卡尔积);
  • 专门的关系运算符:σ(选择),∏(投影),∞(连接),*(自然连接),÷(除);
  • 算术比较运算符:>(大于),≥(大于等于),<(小于),≤(小于等于),=(等于),≠(不等于);
  • 逻辑运算符:∧(与),∨(或),┒(非)

传统的集合运算

  1. 并(Union)
  • 关系R和关系S的并,是由属于R或属于S的元组组成,即R和S的所有元组合并,删去重复元组,组成一个新关系,其结果仍为n目关系。记作:R∪S={t|t∈R∨t∈S}
  • 对于关系数据库,记录的插入和添加可通过并运算实现
  • 一个元素在并集中只出现一次
    R和S必须同类型(属性集相同、次序相同,但属性名可以不同)
  1. 差(Difference)
    关系R与关系S的差由属于R而不属于S的所有元组组成,即R中删去与S中相同的元组,组成一个新关系,其结果仍为n目关系。记作:R-S={t|t∈R ∧ ┒t∈S}
    通过差运算,可以实现关系数据库记录的删除。
  2. 交(Intersection)
    关系R与关系S的交由既属于R又属于S的元组组成,即R与S中相同的元组,组成一个新关系,其结果仍为n目关系。记作:R∩S={t|t∈R t∈S}
    如果两个关系没有相同的元组,那么它们的交为空
    两个关系的并和差运算为基本运算(即不能用其它运算表达的运算),而交运算为非基本运算,交运算可以用差运算来表示 R∩S=R-(R-S)
  3. 广义笛卡尔积(Extended Cartesian Product)
    两个分别为n目和m目关系R和S的广义笛卡尔积是一个 (n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组。记作:R×S={tr⌒ts| tr∈R ts∈S}
    关系的广义笛卡尔积可用于两关系的连接操作
    例如,下图关系R(a)和S(b)为相容关系,©为R与S的并,(d)为R与S的交,(e)为R与S的差,(f)为R与S的广义笛卡尔积

专门的关系运算

由于传统的集合运算,只是从行的角度进行,而要灵活地实现关系数据库多样的查询操作,必须引入专门的关系运算
为叙述上的方便先引入几个概念:
(1)设关系模式为R(A1,A2,…,An),它的一个关系为R,t∈R表示t是R的一个元组,t[Ai]则表示元组t中相应于属性Ai的一个分量👇


(2)若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或域列,Ã则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合👇

(3)元组的连接tr⌒ts:R为n目关系,S为m目关系,tr∈R,ts∈S,tr⌒ts称为元组的连接(concatenation),它是一个n+m列的元组,前n个分量为R的一个n元组,后m个分量为S中的一个m元组,例如👇

(4)给定一个关系R(X,Z),X和Z为属性组,定义当t[X]=x时,x在R中的象集(Image Set)为Zx={t[Z] | t∈R,t[X]=x},它表示R中的属性组X上值为x的诸元组在Z上分量的集合👇

  1. 选择(Selection)

    • 选择又称限制(Restriction)
    • 选择运算是单目运算,是根据一定的条件在给定的关系R中选取若干个元组,组成一个新关系,记作:σF(R )={t|t∈R∧F(t)为真}
      🔹 σ为选取运算符;
      🔹 F表示选取的条件,是一个由运算对象(属性名、常数、简单函数)、算术比较运算符(> ,≥,<,≤,=,≠)和逻辑运算符(∨ ,∧, ┐)连接起来的 逻辑 - 表达式,结果为逻辑值“真”或“假”;
    • 选择运算实际上是从关系R中选取使逻辑表达式为真的元组,是从行的角度进行的运算
  2. 投影(Projection)

    • 投影运算也是单目运算,关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,应删去重复元组。记作:ΠA(R )={t[A] | t∈R}
      🔹 A为R中的属性列,Π为投影运算符
    • 从其定义可看出,投影运算是从列的角度进行的运算,这正是选取运算与投影运算的区别所在。选取运算是从关系的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的
    • 投影之后,新关系与原关系可能不相容
    • 投影运算可以改变关系的属性次序
  3. 连接(Join)

    • 连接运算是二目运算,是从两个关系的笛卡尔积中选取满足连接条件的元组,组成新的关系

    • 设关系R(A1,A2,…,An)及S(B1,B2,…,Bm),连接属性集X包含于{A1,A2,…,An},及Y包含于{B1,B2,…,Bm},X与Y中属性列数目相同,且相对应属性有共同的域。【若Z={A1,A2,…,An}/X(/X:去掉X之外的属性)及W={B1,B2,…,Bm}/Y,则R及S可表示为R(Z,X),S(W,Y)】关系R和S在连接属性X和Y上的连接,就是在R×S笛卡尔积中,选取X属性列上的分量与Y属性列上的分量满足给定θ比较条件的那些元组,也就是在R×S上选取在连接属性X,Y上满足θ条件的子集,组成新的关系,新关系的度为n+m。记作:(R∞S)XθY={tr⌒ts |tr∈R∧ts∈S∧tr[X] θ ts[Y]为真}
      🔹 ∞是连接运算符
      🔹 θ为算术比较运算符,也称θ连接
      🔹 XθY为连接条件
      θ为“=”时,称为等值连接;
      θ为“<”时,称为小于连接;
      θ为“>”时,称为大于连接

    • 连接运算为非基本运算,可以用选取运算和广义笛卡尔积运算来表示:R∞S=σxθy(R×S)

    • 在连接运算中,一种最常用的连接是自然连接,所谓自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在连接结果中把重复的属性列去掉。即如果R与S具有相同的属性组Y,则自然连接可记作:R∞S={tr⌒ts |tr∈R∧ts∈S∧tr[Y]=ts[Y]}

    • 自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件的元组,再进行投影,去掉重复的同名属性,组成新的关系

  4. 除法(Division)

    • 除法运算是二目运算
    • 前提:设有关系R(X,Y)与关系S(Y,Z),其中X,Y,Z为属性集合,R中的Y与S中的Y可以有不同的属性名,但对应属性必须出自相同的域
    • 关系R除以关系S所得的商是一个新关系P(X),P是R中满足下列条件的元组在X上的投影:元组在X上分量值x的象级Yx包含S在Y上投影的集合。记作:R÷S={tr[X]|tr∈R∧Πy(S)⊆Yx}
      🔹 Yx为x在R中的象集,x= tr[X]
    • 除法是既从列的角度又从行的角度对关系R进行运算。首先,新关系P中只保留属性列X;其次,新关系P中只保留这样的X值x:S在Y上投影的集合是x的象集Yx的子集
    • 除法运算为非基本运算,可以表示为:R÷S=Πx(R )-Πx(Πx(R )× ΠY(S)-R)
  5. 左连接(Left Outer Join)
    在自然连接的基础上加上左边表上不包含自然连接中所含元组(行)的元组。

  6. 右连接(Right Outer Join)
    在自然连接的基础上加上右边表上不包含自然连接中所含元组(行)的元组。

  7. 全外连接(Full Outer Join)
    左连接+右连接