
1.3 关系数据库
关系数据库以关系数据模型为基础,用关系表示模型,用运算表示数据操作。本书讨论的VFP 9.0就是采用关系模型的数据库管理系统。
1.3.1 关系模型的数据结构
1.3.1.1 关系模型的基本概念
1.关系
一个关系是一个二维表,即一个表文件,每个关系都有一个关系名。
2.元组
元组指二维表中每一行的数据,一个元组对应表中的一条记录。
3.属性
属性指二维表中的每一列,每个属性都有属性名。一个属性对应表中一个字段,属性名对应字段名,属性值对应于各个记录的字段值。
4.主键
主键指区别其他元组的唯一标识,可以是单个或多个属性的组合,其值不能为空。
5.外键
外键可以是单个或多个属性的组合,它不一定是自己关系的主码,但一定是另一关系的主码,与另一关系的联系通过外键来实现。
6.关系模式
关系模式是对关系的描述,其格式为:
关系名(属性名1,属性名2,属性名3, …,属性名n)
1.3.1.2 关系的基本特点
关系的基本特点如下。
(1)关系是一种规范化了的二维表格,属性值不可分解。
(2)同一关系中没有重复的元组。
(3)同一关系中同一属性列必须是相同类型的数据,同列具有相同的取值范围。
(4)同一关系中元组和属性的顺序无关紧要,可以任意交换。
1.3.1.3 关系模型的主要优点
关系模型的主要优点如下。
(1)关系模型是创建在严格数学概念基础上的。
(2)关系模型概念简单,不论实体还是实体之间的联系都用关系表示。对数据各种操作的结果仍是关系,操作简便。
(3)关系模型的存取路径对用户透明,具有较高的数据独立性和安全保密性,提高了开发效率。
1.3.2 关系运算
关系运算的运算对象是关系,运算结果也是关系。
传统的集合运算有并、交、差、迪卡尔积,在关系数据模型中关系运算主要包括选择、投影、连接和除法运算,而前3种为常用关系运算。
1.选择
选择又称为“限制”,它是在关系R中选择满足给定条件的元组,记为:
σF(R)={t|t∈R∧F(t)=“真”}
其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。
逻辑表达式F由逻辑运算符∧、∨、- 连接各算术表达式组成,算术表达式的基本形式为:
XθY
其中θ为比较运算符,可以是>、≥、<、≤、=或≠; X、Y可以是属性名或为常量或为简单函数等。
选择运算实际上是从关系R中选择使逻辑表达式为真的元组,是从行的角度进行的运算。
2.投影
关系R上的投影是从R中选择出若干属性列组成新的关系,记作:
∏A(R)={t[A]|t∈R}
其中A为R中属性列的集合。
投影运算是从列的角度进行的运算。
3.连接
一般来说,执行连接运算的两个关系必须具有相同的属性列,并且根据相同的属性列的取值是否相等来选择构成结果关系的元组,在结果中把重复的属性列去掉。设R和S具有相同的属性B,则连接运算可记作:
R S={trts|tr∈R∧ts∈S∧tr[B]= ts[B]}
连接操作不仅从行的角度进行运算,而且还要取消重复列,即同时从行和列的角度进行运算。
1.3.3 关系的完整性约束
1.实体完整性约束
若属性A(指单个属性或多个属性组合)是基本关系R的主键,则A不能为空。例如,在关系人事表RSB(编号、姓名、性别、出生年月、基本工资)中编号属性为主键,则编号不能取空值。
2.参照完整性约束
关系的外键必须是另一个关系主键的有效值或者是空值。例如,在关系人事表RSB(编号、姓名、性别、出生年月、基本工资)中主键是编号;另一关系增加工资表ZZ(编号、增资日期、增加工资)中的主键是属性编号与增资日期的组合,外键是编号,增加工资表ZZ中的编号必须是人事表RSB中主键编号已经存在的值。
3.用户定义完整性约束
指的是针对用户的具体应用环境给出的具体数据的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。例如,在关系人事表RSB(编号、姓名、性别、出生年月、基本工资)中性别只能取“男”或者“女”。