1.6.3 关系的性质和完整性规则
1.关系的性质
关系是用集合代数的笛卡儿积定义的,关系是元组的集合,因此,关系具有如下性质:
● 列是同质的。
● 不同的列可出自同一个域,每一列称为属性,要给予不同的属性名。
● 关系中没有重复元组。
● 元组顺序无关紧要。
● 属性的顺序是非排序的。
● 属性必须有不同的属性名。
● 所有的属性值都是原子,不允许属性又是一个二维关系。
2.关系的完整性规则
数据库系统在运行的过程中,由于数据输入错误、程序错误、使用者的误操作、非法访问等各方面原因,容易产生数据错误和混乱。为了保证关系中数据的正确、有效使用,需建立数据完整性的约束机制来加以控制。
关系的完整性是指关系中的数据及具有关联关系的数据间必须遵循的制约和依存关系,以保证数据的正确性、有效性和相容性。关系的完整性主要包括实体完整性、域完整性和参照完整性。
1)实体完整性
实体是关系描述的对象,一行记录是一个实体属性的集合。在关系中用关键字来唯一地标识实体,关键字也就是关系模式中的主属性。实体完整性是指关系中的主属性值不能取空值(Null)且不能有相同值。若主属性取空值,则不可区分现实世界存在的实体。例如,学生的学号、职工的职工号一定都是唯一的,这些属性都不能取空值。
2)域完整性
域完整性约束也称为用户自定义完整性。域完整性约束是针对某一应用环境的完整性约束条件,它反映了某一具体应用所涉及的数据应满足的要求。
域是关系中属性值的定义范围。域完整性是对数据表中字段属性的约束,它包括字段的值域、字段的类型及字段的有效规则等约束它是由确定关系结构时所定义的字段的属性所决定。在设计关系模式时,定义属性的类型、宽度是基本的完整性控制。进一步的控制可保证输入数据的合理有效,如性别属性只允许输入“男”或“女”,其他字符的输入则认为是无效输入,拒绝接受。Visual FoxPro命令中的VALID语句可进行这方面的控制。
3)参照完整性
在实际的应用系统中,为减少数据的冗余度,常设计几个关系来描述相同的实体,这就存在关系之间的引用参照,也就是说,一个关系属性的取值要参照其他关系。