一、基本概念
1、数据
是描述现实世界的符号,是数据库中存储的基本对象。
2、数据模型
是描述数据的一组定义,是一种数据结构。
3、数据模式
用给定的一组数据模型,对某一具体事务建模后的结果。
4、数据的抽象级别
- 物理模式:数据在磁盘上的存储形式。
- 逻辑模式:数据的表述形式。
- 外模式(视图):用户看到的样子。
三级模式,两级映射。
5、数据的独立性
是由数据两级映射保证的。
- 逻辑独立性:逻辑的改变即数据的表述形式发生改变,可以不改变视图。
- 物理独立性:物理存储结构的改变可以不影响视图。
6、数据库(DB)
长期存储在计算机中,可组织、有结构、共享的大量数据集合。
7、数据库管理系统(DBMS)
是位于用户和操作系统之间的一层数据管理软件,用来运行管理数据库及建立和维护数据库。
基本功能:
- 数据定义;
- 数据操纵;
- 完整性约束检查;
- 访问控制;
- 并发控制;
- 数据库恢复。
8、数据库系统(DBS)
由应用程序、DBMS、DB、DBA组成。
9、数据管理阶段
人工管理 -> 文件系统 -> 数据库系统
二、建立数据模型
1、第一代数据库系统
统称为格式化数据模型。
1-1、层次模型
基本类似于树形结构。用双亲子女关系(PCR)来表达现实世界中两个不同记录类型的1对多的关系。
1-2、网状模型
类似于有向图。基本结构是系(set),每个记录是其他记录的主记录,也可以是属记录,用链表存储。LINK:表示一种自连接。
2、第二代数据库系统
支持关系数据模型的数据库系统。
2-1 关系模型
基本结构是表(table),
基本概念:
- 实体(Entry):客观事物的反映。
- 属性(Attribute):定义实体的特性。
- 域(Domain):属性的取值范围。
- 实体集(Entry Set):所有属性名完全相同的实体的集合。
- 实体型(Entry Type):实体集的名称及其所有属性名的集合。
- 码(Key):区分实体之间的属性。
- 关系:就是一个表。
- 元组:关系中的一行数据。
3、关系代数
任何一个系统满足基本操作就称是关系完备的。(是过程化的)
3-1、基本操作
- 选择(σ):将表中符合条件的元组找出来。(不产生重复)
- 投影(π):将表中符合条件的属性找出来。(一般情况需要去重,但是默认不去)
- 笛卡尔积(×):把两个表拼接在一起。
- 集合差(-):把属于关系1,但不属于关系2的元素找出来。
- 并(U):把两个相同模式的元组合并。
1和2都是一元操作,3、4、5是二元操作,必须满足(1)属性个数一样。(2)对应属性类型一样。
3-2、其他操作
都可由基本操作导出。
- 交
- 连接表
- 除法
- 外连接
3-3、条件连接
R ⋈ c S = σc(R×S),R、S表按条件c做连接,相当于在笛卡尔积中选择条件c的元组。
3-4、自然连接(innerjoin)
最多最常用的一种连接,在所有的公共属性上做等值连接,并且合并重复属性。
3-5、外连接
- 左外连接(*⋈):左边所遇元组保留,不符合的补空值NULL。
- 右外连接(⋈*):右边所有元组保留,不符合的补空值NULL。
- 全外连接(*⋈*):左右全都保留,不符合的补空值NULL。
3-6、外并
所有属性合并,值若没有则为空。
3-7、除法
适合用于查找满足某条件的所有记录;
设A表有属性x,y;B表有属性y;
A/B = {<x> | ∃ <x,y> ∈ A,∀<y> ∈ B},
B中的任一y值,在A中都存在一个x,y值,结果是x。
基本操作:找在A,B中所有和y值有关的x值,就是找和任一y值无关的x值再做差。
不满足的x:πx( (πx (A) ×B) -A);
满足的x:πx(A) - 不满足的x。
4、关系演算
表达能力和关系代数等价,但非过程化,一种基于位次逻辑的表述方法。只需要表达对结果 应该满足的要求,但不用说明获得结果的过程。
—【元组关系演算(TRC)】:以元组为单位定义变量。
—【域关系演算(DRC)】:以属性为单位定义变量。
4-1、域关系演算
{<x1,x2,…,xn> | P(x1,x2,…,xn,xn+1,…,xn+m)}
原子公式:
- <x1,x2,…,xn>∈ R;
- X op Y;(X、Y是域变量)
- X op 常量;(其中op 为 >,<,=,≥,≤,≠)
公式定义:
- 所有原子公式是一个公式;
- 如果p、q是公式,﹁q、p∧q、p∨q也是公式;
4-2、安全查询
演算中会存在一些问题,满足某个查询的结果无限多则不安全。
4-3、表达能力
用安全的演算所能表达的查询用关系代数也都能表达
4-4、元组关系演算
{t[<元组>] | P(t)}
5、小结
传统的数据模型有:层次、网状、关系型。
适用于:OLTP(联机事物处理)应用,以记录为基础,基于结构化的存储。
缺点:不能很好的面向用户;不能用很自然的方法表达实体间的联系;数据类型少,有些需求很难满足。
现代数据模型:ER(实体-联系),能够非常好的描述现实世界中的事物;面向对象模型,在某种意义上突破了1NF的限制;基于逻辑模型,(演绎数据库系统)。