数据库(一)— 原理

1. 数据库概论

人工管理阶段 → 文件系统阶段 → 数据库系统阶段及其发展过程 → 云数据库

数据库(一)— 原理
数据库(一)— 原理
  • 数据模型(data model):用来描述数据的一组概念和定义(数据结构 + 数据操作 + 完整性约束)
  • 数据库(database, DB):长期存储在计算机外存上有结构、可共享的数据集合(较小的冗余度、较高的数据独立性和可扩展性、用户共享)
  • 数据库管理系统DBMS):管理数据库的软件系统(定义、操纵、运行管理、建立维护)
  • 应用程序:利用DBMS和各种开发工具开发的、满足特定应用环境的数据库应用软件
  • 数据库系统相关人员DBA):数据库管理员、应用程序开发员、最终用户
  • 数据库系统DBS):
数据库(一)— 原理
数据库(一)— 原理
  • 数据库应用系统:客户机/服务器结构数据库系统(C/S)、浏览器/服务器模式数据库系统(B/S)
数据库(一)— 原理
数据库(一)— 原理
  • 数据独立性:指应用程序和数据库的数据结构之间相互独立,不受影响。分成物理数据独立性和逻辑数据独立性两个级别。

2. 关系数据库

1)关系模型基本概念
  • 关系模型(Relation model):用二维表格表示实体及实体之间的联系的数据模型
  • 关系(Relation):一张满足某些约束条件的二维表 R(D1,D2...Dn)(是笛卡尔积的有限子集)
  • 属性(Attribute):表中的一列称为属性,每个属性必须有唯一的属性名
  • (Domain):属性的取值范围 集合{ }
  • 元组(Tuple):表中的一行;在一个表中任何元组的顺序发生改变,关系不发生变化。
  • /(Degree):一个关系中属性的个数;单元关系、二元关系、三元关系… n元关系
  • 基数(Cardinality):一个关系中元组的个数
  • 笛卡尔积(Cartesian Product):D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}; 其中每一个元素(d1,d2,…,dn)称为元组(t);元素中的每一个值di叫作一个分量
  • 超键 (Super key):一个关系中能唯一标识一个元组的单个属性或属性集。
  • 候选键 (Candidate Key):一个关系中能唯一标识元组的最小属性集。(唯一性、不可缩减性)
  • 复合键 (Composite Key):组成键的属性个数多于1个的候选键
  • 主键 (Primary Key):在候选键中指定一个键作为主键。包含在其中的属性称为主属性(Prime attribute),不包含在任何侯选键中的属性称为非主属性(Non-key attribute)
  • 外键 (Foreign Key):设F为关系S的一个属性或属性集,但不是S的主键或候选键。如果F与关系R的主键KR相对应,则称F是关系S的外键。

数据模型三要素
① 数据结构:关系(二维表)(关系可以有三种类型的表:基本关系、查询表、视图表)
② 关系操作:关系代数、关系演算、关系数据库的标准语言SQL(DDL/DML/DCL)
③ 关系的完整性约束:实体完整性、参照完整性、用户自定义的完整性

关系的性质
① 列是同质的,即每一列中的分量是同一类型的数据,来自同一个域。
② 不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。
③ 列的次序可以任意交换。
④ 任意两个元组不能完全相同。
⑤ 行的次序可以任意交换。
⑥ 分量必须取原子值,即每一个分量都必须是不可分的数据项。

关系模式 关系的名称和关系的属性集 (主键要用下划线标出) R(U) / R(A1,A2,...,An)

2)关系代数

3. 数据库设计

数据库(一)— 原理

1)概念模式设计——E-R模型
  • 实体(Entity):客观存在,可以相互区别的事物称为实体。
  • 实体集(Entity Set):性质相同的同类实体的集合,称为实体集。
  • 属性(Attribute):实体有很多特性,每一个特性称为属性。每一个属性有一个值域,其类型可以是整数型、实数型、字符串型等。
  • 实体标识符(Identifier):能唯一标识实体的属性或属性集,称为实体标识符。有时也称为关键码(Key),或简称为键。
  • 联系(Relationship)是实体之间的相互关系。与一个联系有关的实体集个数,称为联系的元数。 (1:1 1:N M:N)
  • 数据模型: 能表示实体类型及实体间联系的模型称为“数据模型”

E-R图的四个主要部分
①实体集,用矩形表示。
②属性,用椭圆形表示。
③联系,用菱形或三角形表示。
④直线,表示联系的类型及实体与实体之间的联系;多端用无箭头的直线,一端用有箭头的直线

2)逻辑模式设计——关系模式

实体到关系模式的转换:将实体的名称作为关系的名称,将实体的属性作为关系的属性,并用下划线标识出主属性。

①若实体间联系是1:1,可以在两个实体转换成的两个关系模式后,在其中任意一个关系模式的属性集中加入另一个关系模式的主键和联系自身的属性。也就是说1:1联系不单独转换为一个独立的关系。
②若实体间联系是1:N,则在N端实体转换成的关系模式中加入1端实体的主键和联系的属性。同样1:N联系也不独立构成一个关系。
③若实体间联系是M:N,则将联系转换成一个关系模式,其属性为两端实体的主键加上联系自身的属性,而联系关系的主键为一复合键,通常包含两端实体主键。

子类与超类——E/R图中“属于”联系到关系的转换

假若A类实体和B类实体之间是“属于”关系,这里假定为B属于A,为了表示出A和B之间的关系,用一种称为“属于”(“isa”)的特殊联系将实体集A和B相连。 “isa“联系用三角形表示,尖端指向A类实体集,底边指向B类实体集,三角形中还要写上”isa”的字样。A类实体和B类实体也称为超类和子类。
子类与超类有两个性质:
① 子类与超类之间具有继承性特点,即子类实体继承超类实体的所有属性。但子类实体本身还可以包含比超类实体更多的属性。
② 这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。

例:

数据库(一)— 原理
数据库(一)— 原理
数据库(一)— 原理
数据库(一)— 原理
3)关系模式的规范化处理
  • 数据库设计中可能存在的问题
    数据冗余、修改异常、删除异常、插入异常

  • 部分函数依赖和传递依赖是产生数据冗余和更新异常的主要根源
    函数依赖:数据表中各个属性的依赖关系

    设有关系模式R(U),X和Y是属性集U的子集,函数依赖(Functional Dependency,简记为FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],那么称FD X→Y在关系模式R(U)中成立

    完全函数依赖部分函数依赖:主要强调的是主键与非主属性之间的关系

    对于函数依赖W→A,如果存在V包含于W(V是W的真子集)而函数依赖V包含于A成立,则称A部分依赖(Partial Dependency)于W;否则,若不存在这种V,则称A完全函数依赖(Full Dependency)于W

    传递函数依赖

    对于函数依赖X→Y,如果Y ←\ X(X不函数依赖于Y),而函数依赖Y→Z成立,则称Z传递函数依赖于X(Transitive Dependency)

  • 范式(Normal Form,NF):符合某一规范级别的关系模式的集合。共有7种范式:1NF - 2NF - 3NF - BCNF - 4NF - 5NF - 6NF

范式 定义 备注
第一范式 一个关系模式R的所有属性都是不可再分的基本数据项 基本要求
第二范式 R属于1NF,且每个非主属性都完全函数依赖于主键 单个属性作为主键的一定是2NF
第三范式 R属于1NF,且每个非主属性都不传递依赖于主键
BC范式 R属于1NF,且每个属性都不传递依赖于主键 决定因素必须包含键码
  • 模式的分解:无损连接性、保持函数依赖性
  • 规范化:通过分解把属于低级范式的关系模式转换为几个属于高级范式的关系模式的集合

例:

1NF: student(snum,sname,sdept,mname,cname,grade)
2NF: R1(snum,sname,sdept,mname) - R2 (snum,cname,grade)
3NF: R2 (snum,cname,grade) - R11(snum,sname,sdept)- R12(sdept,mname)
BCNF: R2 (snum,cname,grade) - R11(snum,sname,sdept)- R12(sdept,mname)

数据库(一)— 原理
数据库(一)— 原理