</p> ①代数方式,即关系代数4 N5 K+ d4 G0 y K* p
②逻辑方式,即关系演算而关系演算又进一步分为元组关系演算和域关系演算。已经证明,这些表示方式在功能上是相互等价的。一般选其一即可。
6 j( {5 G9 d& H1 l$ x, W% B (3)关系模型的三类完整性 关系模型的三类完整性是:6 w6 f: g# ^8 ?) _7 e3 }! V+ K
①实体完整性(Entity Integrity)* `8 f- p/ [# q& }/ `4 _' O
②参照完整性(Referential Integrity)( [0 }* J( o1 ]$ `) O0 `: m
③用户定义的完整性(User Defined Integrity)其中,实体完整性和参照完整性是任何关系模型都必须满足的完整性约束条件,应该由关系数据库DBMS自动支持。而用户定义的完整性的支持是由DBMS提供完整性定义设施(或机制),可以随DBMS商品软件不同而有所变化。实体完整性是指:若属性A是基本关系R的主关键字的属性(即主属性),则属性A不能取空值(NULL)。在关系数据库中有各种关系,如基本关系(常称为基本表)、查询表、视图表等等。基本表是指实际存在的表,它是实际存储数据的逻辑表示。查询表是指和查询结果相对应的表。而视图表是由基本表或视图表导出的表,是虚表,不对应实际存储的数据。实体完整性是针对基本关系的。空值是指“不知道”或者“无意义的”或“不属于定义域”值。空值以“NULL”表示。对于实体完整性作如下说明:' E1 n; w* `+ \. u4 @" K/ Z2 c
(1)一个基本关系通常对应于现实世界中的一个实体集。例如学生关系对应于学生实体集。基本关系不是由其它关系生成的关系。基本关系是本原(Primitive),是定义复杂关系的出发点。2 u1 ?2 g' ]& @
(2)现实世界中的实体是可区分的,即实体具有某种唯一性的标识。
4 s3 _& `" f, _( n* `5 l (3)在关系模型中由主关键字作为满足唯一性的标识。
/ L0 H& R3 S' }# L (4)主关键字中属性不能取空值。因为若主关键字中某属性取空值,则意味着某个实体不可标识;而这和(2)相矛盾。参照完整性是指:若基本关系R中含有另一个基本关系S的主关键字K S 所对应的属性组F(F称为R的外部关键字(external keys)),则在关系R中的每个元组中的F上的值必须满足:
1 ]4 |/ a7 K+ p: W5 b; q" n' U ①或者取空值(即F中的每个属性的值均为空值); f% b1 l: J5 a" W( h/ [# u
②或等于S中某个元组的主关键字的值。基本关系R和S不一定是不同的关系。外部关键字也称为外来关键字。例如,某数据库中有职工关系EMP(职工号,姓名,部门号)和部门关系DEPT(部门号,部门名称)为两个基本关系。关系EMP的主关键字为“职工号”,DEPT的主关键字为“部门号”在EMP中,“部门号”是EMP的外部关键字。故此,在EMP中的每个元组中“部门号”的值只有两种可能性:8 M0 i2 x7 ?8 W1 W4 a, y6 ]
①取空值。这说明这个职工尚未分到某个部门;! ?! z' _+ W3 [) B
②或取非空值。这时“部门号”的值必须是DEPT中某个元组中的“部门号”的值。这说明一个职工不可能被分配到一个不存在的部门。也就是说,被参照的关系DEPT中一定存在一个元组,该元组的关键字的值等于EMP中某元组的外部关键字的值。实体完整性和参照完整性是针对任何关系数据库系统的所有数据库的一般性原则。用户定义的完整性针对某一具体的数据库的约束条件。条件是由现实世界中的应用环境决定的。它涉及到某一具体的应用中的数据所必须满足的语义要求。关型模型的DBMS应提供定义和检验这类完整性条件的机制,以使用统一的方法来自动地处理它们而不要求应用程序员来承担这一功能。* w- x9 M% s! v. W# M+ B
5.关系数据库语言概述
0 H, ^+ n9 y( \4 s9 h' M 关系数据库语言分三类:数据描述语言DDL,数据操纵语言DML和数据控制语言DCL。其中,DDL负责数据库的描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构。DML负责数据库的操作,提供一种处理数据库操作的机制。DCL负责控制数据库的完整性和安全性,提供一种检验完整性和保证安全的机制。DML是用户经常使用的语言,包括了DBMS的主要功能。DML包括数据查询和数据的增、删、改等功能。其中查询的表达方式是DML的主要部分。关系数据库的DML按照查询方式可以分为两大类:7 \& Q/ w9 C9 D( ]. x" M- I
(1)用对关系的集合代数运算来表示查询的方式,称为关系代数(Relational Algebra)。( }! X& M) p" i1 F4 p7 d' J# K
(2)用谓词演算来表达查询的方式,称为关系演算(Relational Calculus)。关系演算又可按谓词变元的基本对象是元组变量(tuple variable)还是域变量(domain variable)分为元组关系演算和域关系演算两种。关系代数和两种关系演算均是抽象的查询语言,这些抽象的查询语言和实际的DBMS软件产品中实现的具体的查询语言并不完全一样。但它们是DBMS中查询语言的理论基础。关系代数、元组关系演算和域关系演算这三种语言在表达能力上是彼此相互等价的,它们均可以作为评价实际DBMS软件产品中查询语言能力的标准。实际DBMS软件产品的查询语言,除了提供关系代数(或一种关系演算)之外,还提供了许多附加的功能,如库函数、算术运算等功能。SQL是介于关系代数,和关系演算之间的一种语言。SQL不仅具有丰富的查询功能,而且还具有数据库定义和数据库控制功能。SQL是集DDL、DML、DCL为一体的标准的关系数据库语言。SQL充分体现了关系数据库语言的优点。
' y6 V* f7 v! h' t1 @; h 6.关系代数+ }2 } ^0 R& D0 j# F, n& W
关系代数中的运算可以分为两类:& Q3 N- f8 c+ f& n5 ^% p j
7 T; |% {# w$ h$ v (1)传统的集合运算,如并、交、差、笛卡尔乘积等。这类运算是从关系的“水平方向(即按行)”来进行的。 |