层次、网状数据库是面向专业人员的,使用很不方便,程序员必须经过良好的培训,多所使用的系统有深入的了解才能用好系统。
关系数据库就是要解决这一问题,使它成为面向用户的系统。
关系数据库是应用数学方法来解决数据的,它具有结构简单、理论基础坚实、数据独立性高以及提供非过程性语言等优点。
1. 域(Domain):值的集合,它们具有相同的数据类型,语义上通常指某一对象的取值范围。
例如:全体整数
0到100之间的整数
长度不超过10的字符串集合
2. 笛卡尔积(CartesianProduct):设D1、D2、… 、Dn是n个域,则它们的笛卡尔积为:
D1x D2 x … x Dn = {(d1, d2, …, dn)| di∈Di, i = 1,2,…,n}
其中每一个元素称为一个n元组(n-tuple),简称元组;元组中的每个值di称为一个分量(component)。
笛卡尔积可以写成一个二维表
例如:
设D1 = {张三,李四}
D2 = {数学,语文}
D3 = {优,良}
则D1 x D2 x D3 可用二维表表示为:
张三 |
数学 |
优 |
张三 |
数学 |
良 |
张三 |
语文 |
优 |
张三 |
语文 |
良 |
李四 |
数学 |
优 |
李四 |
数学 |
良 |
李四 |
语文 |
优 |
李四 |
语文 |
良 |
3. 关系(Relation)
笛卡尔积D1 x D2 x … Dn的子集合,记作R(D1, D2, … , Dn)
R称为关系名,n为关系的目或度
4. 说明
a) 关系是一个二维表
b) 每行对应一个元组
c) 每列可起一个名字,称为属性。属性的取值范围为一个域,元组中的一个属性值是一个分量。
5. 关系的性质
a) 列是同质的,即每列中的数据必须来自同一个域
b) 每一列必须是不可再分的数据项(不允许表中套表,即满足第一范式)
c) 不能有相同的行
d) 行、列次序无关
三部分:关系数据结构、关系操作集合、关系的完整性
不论是实体还是实体间的联系都用关系表示。
实体值 -> 关系的元组,在关系数据库中通常称为记录
属性值 -> 元组的分量,在关系数据库中通常称为字段
关键字(码):唯一标识一个元组的属性组
关键字可以有多个,统称为候选关键字,在使用时,通常选定一个作为主关键字。主关键字的诸属性称为主属性,其它为非主属性。
包括关系名、诸属性名、属性向域的映像、属性间的依赖。
注:一个元祖为关系的一个值。
表示:R(U, D, dom , F)
关系数据库模式(型):对关系数据库的描述,包括域的定义及在域上定义的所有关系模式。
关系数据库(值):所有实体及实体间联系的关系的集合。是某时刻所有关系模式对应的关系的集合。
基本关系:客观存在的基本表
查询表:由基本表按一定条件检索得到的结果
视图:从一个或多个基本关系上导出的关系。它不对应实际的存储数据,是一个虚关系,然而可永久存在。相当于关系模型的外模式。
注:由于二维表的存储策略非常简单,关于数据库的物理存储完全由DBMS自动完成。因此,在关系模型中不需要与内模式相应的概念。
选择、投影、连接、除、并、交、差 -----查询操作
增加、删除、修改 -----维护操作
集合操作,一次操作可存取多个元组
非过程化语言:用户只需告诉做什么,而不需要告诉怎么做
数据定义(DDL)、数据操纵(DML)、数据控制语言(DCL)集成在一起
基本关系的所有主属性不能取空值
原因:基本关系(主关键字是唯一性标识,故不能为空)
<-> 实体集(实体必可区分:标识符)
也叫引用完整性。若基本关系R含有与另一个基本关系S的主关键字相对应的属性组F(F称为R的外键或外部码),则R中的每个元组在F上的值或为空值,或等于S中某个元组的主关键字值
例:职工关系 EMP(ENO, ENAME, DNO)
部门关系 DEPT(DNO,DNAME)
用户定义的某一属性值必须满足的语义要求。一经定义,DBMS会自动检查,从而不必在应用程序中作检查。