140 likes | 310 Views
2.2 关系模型. 2.2.1 关系数据结构 2.2.2 关系操作 2.2.3 关系完整性规则. 2.2 关系模型. 关系模型有三个重要组成部分:关系数据结构、关系操作集合和关系完整性规则。 (1) 关系数据结构: 数据库中全部数据及其相互联系都被组织成“关系”(二维表)的形式。关系模型基本的数据结构是关系。 (2) 关系操作集合: 关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。 (3) 关系完整性规则: 数据库中数据必须满足实体完整性、参照完整性和用户定义完整性三类完整性规则。. 关系模型术语. 一般术语. 字段、数据项. 属性.
E N D
2.2 关系模型 • 2.2.1 关系数据结构 • 2.2.2 关系操作 • 2.2.3 关系完整性规则
2.2 关系模型 • 关系模型有三个重要组成部分:关系数据结构、关系操作集合和关系完整性规则。 • (1) 关系数据结构:数据库中全部数据及其相互联系都被组织成“关系”(二维表)的形式。关系模型基本的数据结构是关系。 • (2) 关系操作集合:关系模型提供一组完备的高级关系运算,以支持对数据库的各种操作。 • (3) 关系完整性规则:数据库中数据必须满足实体完整性、参照完整性和用户定义完整性三类完整性规则。
关系模型术语 一般术语 字段、数据项 属性 A B a1 b1 a2 b2 a3 b3 a4 b4 记录类型 关系模式 记录1 元组1 关系 (实例) 记录2 元组2 文件 元组3 记录3 记录4 元组4 属性值 字段值 图2.1 关系模型术语 2.2.1 关系数据结构 • 1. 二维表 • 在用户观点下,关系模型中数据的逻辑结构是一张二维表。表2.1给出了二维表的一个实例。 • 为简单起见,对表格数学化,用字母表示表格的内容。表2.1可以用图2.1所示的表格形式表示。
2.2.1 关系数据结构 • 以二维表为基本结构所建立的模型称为关系模型(relational model)。在关系模型中,字段称为属性(attribute),字段值称为属性值。每个属性有一个取值范围,称为值域(domain)。每一个属性对应一个值域,不同的属性可对应于同一值域。 • 记录类型称为关系模式。记录称为元组(tuple),元组的集合称为关系(relation)或实例(instance)。有时,也习惯称关系为表或表格,元组为行,属性为列。虽然这些术语所用的名词不同,但指同一个事物,故有时可混合使用。 • 关系中属性的个数为元数(arity),元组个数为基数(cardinality)。上页图2.1的关系元数为2,基数为4。
2.2.1 关系数据结构 • 二维表一般满足下面7个性质: • (1)二维表中元组个数是有限的——元组个数有限性。 • (2)二维表中元组均不相同——元组的唯一性。 • (3)二维表中元组的次序可以任意交换——元组的次序无关性。 • (4)二维表中元组的分量是不可分割的基本数据项——元组分量的原子性。 • (5)二维表中属性名各不相同——属性名唯一性。 • (6)二维表中属性与次序无关,可任意交换——属性的次序无关性。 • (7)二维表属性列中分量具有与该属性相同的值域——分量值域的同一性。
2.2.1 关系数据结构 • 2. 码 • 码是关系模型中的一个重要概念,它具有标识元组、建立元组间联系等重要作用。 • (1)码(key):在二维表中凡能最小唯一标识元组的属性集称为该表的码或关键字。 • (2)候选码(candidate key):二维表中可能有若干个码,它们称为该表的候选码或候选关键字。 • (3)主码(primary key):用户选作元组标识的候选码称为主码或主关键字。一般主码也简称码。 • (4)外码(foreign key):如果表A中的某属性集是表B的码,则称该属性集为A的外码或外关键字。 • 有如下两个关系Xsdjb(学生登记表)和Xyqkb(学院情况表): • Xsdjb(学号Xh,姓名Xm,性别Xb,年龄Nl,学院编号Xybh) • Xyqkb(学院编号Xybh,学院名称Xymc,院长姓名Yzxm,联系电话Lxdh) • 其中学院编号Xybh是关系Xyqkb的主码,是关系Xsdjb的外码。
2.2.1 关系数据结构 • 3. 关系 • (1)关系的定义关系是二维表的一种抽象,是一组属性数目相同的元组的集合。 • 这个定义把关系看成了一个集合。集合中的元素是元组,每个元组的属性数目应该是相同的。 • (2)关系的分类按照不同的标准,关系有不同的分类。 • ① 按属性分。具有n个属性的关系称为n元关系。n=0时称空关系。 • ② 按元组数目分。如果一个关系的元组数目是无限的,则称为无限关系,否则称为有限关系。由于计算机存储系统的限制,通常我们只研究有限关系。
2.2.1 关系数据结构 • ③按关系的存储状况分。 • 基本表:基本表是实际存在的表,它是实际存储的数据的逻辑表示。 • 查询表:查询表是查询结果表或查询中生成的临时表。 • 视图表:视图表是由基本表或其他视图表导出的表,它是为了数据查询方便、数据处理简便以及数据安全要求而设计的数据虚表,不对应实际存储的数据。
2.2.2 关系操作 • 关系模型的数据操作采用集合操作方式,即操作对象和结果都是集合。这种操作方式也称为一次一集合(set-at-a-time)的方式。关系模型常用的操作有查询、删除、插入、修改等操作。 • 1. 数据查询 用户可以查询关系数据库中的数据,它包括一个关系内的查询以及多个关系间的查询。 • 对关系数据库的查询可以分解成三个基本定位操作与一个查询操作:一个关系内的属性指定,一个关系内的元组选择,两个关系的合并,查询操作。 • 2. 数据删除 数据删除的基本单位是元组。它的功能是将指定关系内的指定元组删除。它可以分解为两个基本操作:一个关系内的元组选择,关系中元组删除操作。
2.2.2 关系操作 • 3. 数据插入 数据插入仅对一个关系而言,在指定关系中插入一个或多个元组。它只有一个基本操作:关系中元组插入操作。 • 4. 数据修改 数据修改是在一个关系中修改指定的元组与属性值。它可以分解为两个更基本的操作:先删除需修改的元组,再插入修改后的元组。
2.2.3 关系完整性规则 • 为了维护数据库中数据与现实的一致性,关系数据库的数据与更新操作必须遵循下列三类完整性规则。事实上,它是对主码、主码与外码的关系以及用户对数据的约束要求。 • 1. 实体完整性规则(entity integrity rule) • 规则2.1若属性A是基本关系R的主属性,则属性A不能取空值。 • 例2-1在关系单位编码表Dwbmb(单位编码Dwbm, 单位名称Dwmc)中,单位编码为主码,则单位编码不能取空值。 • 实体完整性规则规定基本关系的所有主属性不能取空值。如例2-2。 • 例2-2每月物资库存表Months_wzkcb(日期Rq, 物资编码Wzbm, 价格Price)中,(Rq, Wzbm)为主码,则Rq, Wzbm都不能为空。 • 现实世界中的实体是可区分的,它们具有某种唯一性标识。相应地,关系模型中以主码作为元组的唯一性标识。这条规则要求关系中主码不能为空,即保证了关系模型元组的唯一性。
2.2.3 关系完整性规则 • 2. 参照完整性规则(reference integrity rule) • 规则2.2若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的取值只允许两种可能,或者为空值(F的每个属性值均为空值),或者等于S中某个元组的主码值。 • 例2-3物资编码表和物资入库表之间的联系可以用下面2个关系表示: • Wzbmb(物资编码Wzbm, 物资名称Wzmc, 型号规格Xhgg, 计量单位Jldw, 价格Price) • Wzrkb(日期Rq, 物资编码Wzbm, 购买量Gms, 实际入库量Srs, 价格Price, 入库人Rkr) • 这两个关系之间存在着属性的引用,物资入库表引用了物资编码表的主码“Wzbm”。显然,物资入库表中的“Wzbm”必须是物资编码表中存在的物资编码。但由于物资入库表中的“Wzbm”和“Rq”为主码,物资入库表中的“Wzbm”不可以取空值。
2.2.3 关系完整性规则 • 现实世界中的实体之间往往存在某种联系,在关系模型中,实体及实体间的联系都是用关系来描述的。这样自然存在着关系与关系间的引用关系。参照完整性规则就是定义外码与主码之间的引用规则。这条规则的实质是“不允许引用不存在的实体”。 • 在上述形式定义中,关系模式Wzbmb的关系称为“参照关系”,关系模式Wzrkb的关系称为“依赖关系”。在PowerBuilder系统中称为“主表”和“副表”,在Visual FoxPro系统中称为“父表”和“子表”。
2.2.3 关系完整性规则 • 3. 用户定义的完整性规则(user-defined integrity rule) • 实体完整性规则和参照完整性规则适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件。用户定义的完整性规则就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。比如,某一种物资的价格定义为4位整数,若范围还太大,我们则可以用如下规则把价格限制在3000—7000之间: • CHECK(PRICE BETWEEN 3000 AND 7000)。