
1.2 关系数据库
关系型数据库有完备的理论基础、简单的模型及说明性的查询语言和使用方便等诸多优点,Visual FoxPro便是一种典型的关系数据库管理系统。
1.基本概念
学习关系数据库,首先要了解一些基本关系术语。
(1)关系
一个关系就是一个二维表,每个关系有一个关系名称。通常将一个没有重复行、重复列的二维表看成一个关系。在Visual FoxPro中关系文件的扩展名为.dbf。
(2)元组
在一个二维表中,每一行称为一个元组。一个关系可以包含若干个元组,但不允许有完全相同的元组。在Visual FoxPro中,一个元组对应表中的一条记录。
(3)属性
二维表中垂直方向的列称为属性。每个属性有一个属性名称,在同一个关系中不允许有重复的属性名。在Visual FoxPro中,一个属性对应表中的一个字段,属性名对应字段名,属性值对应各条记录的字段值。
(4)域
域是指属性的取值范围。同一属性只能在相同域中取值。例如,年龄的取值范围是日期型。
(5)关键字
关键字的值可以唯一标识一个元组。关系中不允许出现相同的记录,能唯一区分、确定不同元组的属性或属性组合,称为该关系的一个关键字。在Visual FoxPro中,主关键字和候选关键字能够唯一标识一条记录。
注意:关键字的属性值不能取空值。
(6)外部关键字
如果关系中的一个属性不是关系的主关键字,但它是另一个关系的主关键字,则该属性称为外部关键字。
2.关系运算
关系运算就是从关系中查询需要的数据,包括选择、投影与连接等。
(1)选择
从一个关系模式中找出满足给定条件的记录的操作称为选择。选择是从行的角度进行的运算,相当于对关系进行水平分解。例如,要从成绩表中找出某个学生的记录,所进行的查询操作就属于选择运算。
(2)投影
从关系模式中指定若干个属性组成新的关系称为投影。投影运算从关系中选取若干属性形成一个新的关系,其关系模式中的属性个数比原来的关系少,或排列顺序均不同,同时也减少了某些元组。例如,要从学生关系中找出姓名和成绩两个字段,所进行的查询操作就属于投影运算。
(3)连接
连接是关系的横向结合。连接运算将两个关系模式拼接成一个更宽的关系模式,生成的新关系中包含满足连接条件的元组。连接结果相当于Visual FoxPro中的内部连接。例如,从学生情况表和学生成绩表中按对应学号相同的条件给出学生的学号、姓名、性别、数学、英语成绩等,所进行的操作就是连接操作。
3.关系完整性
关系完整性指关系数据库中数据的正确性和可靠性。关系完整性一般包括实体完整性、值域完整性、参照完整性和用户自定义完整性。保证关系完整性是关系数据库管理系统的重要功能。
(1)实体完整性
实体完整性是指数据表中记录的唯一性,即同一个表中不允许出现重复的记录。设置数据表的关键字便于保证数据的实体完整性。
(2)值域完整性
值域完整性是指数据表中记录的每个字段的值应在允许范围内。例如,规定“学号”字段中的数值必须由数字组成。
(3)用户自定义完整性
用户自定义完整性是指用户根据实际需要而定义的数据完整性。例如,规定“性别”字段值为“男”或“女”。
(4)参照完整性
参照完整性是指相关数据表中的数据必须保持一致。例如,“学生信息”表中的“学号”字段和“学生成绩”表中的“学号”字段应保持一致。如果修改了“学生信息”表中的“学号”字段,则相应地同时修改“学生成绩”表中的“学号”字段,否则会导致参照完整性错误。