3.关系模型与二维表结构
关系是一组域的笛卡儿积的子集。给定一组域D1,D2,…,Dn(可包含相同的域),其笛卡儿积为:
D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}
其中每一个元素(d1,d2,…,dn)叫做一个n元组,或简称为元组。
关系R(D1,D2,…,Dn)是元组的集合,且
关系的具体实现是一个二维表结构,表结构中的行对应于元组,列对应于域,列的名字称为属性。n元关系必有n个属性。满足一定条件(如第一范式1NF)的规范化关系的集合,就构成了关系模型。
关系模型可以简单、灵活地表示各种实体及其关系,数据操作是通过关系代数实现的,具有严格的数学基础。
关系模型能够以简单、灵活的方式表达现实世界中各种实体及其相互间关系,并支持数据的重构,其数据描述具有较强的一致性和独立性。关系操作和关系演算具有非过程式特点,关系模型具有严密的数学基础和操作代数基础,并且与一阶逻辑理论密切相关,具有一定的演绎功能。目前,绝大多数数据库系统采用关系模型。但它的应用也存在着如下问题:
(1)实现效率不够高。由于概念模式和存贮模式的相互独立性,按照给定的关系模式重新构造数据的操作相当费时。另外,实现关系之间联系需要执行系统开销较大的联接操作。
(2)描述对象语义的能力较弱。现实世界中包含的数据种类和数量繁多,许多对象本身具有复杂的结构和涵义,为了用规范化的关系描述这些对象,则需对对象进行不自然的分解,从而在存贮模式、查询途径及其操作等方面均显得语义不甚合理。
(3)不直接支持层次结构,因此不直接支持对于概括、分类和聚合的模拟,即不适合于管理复杂对象的要求。关系理论是基于第一范式(1NF)的,它不允许嵌套元组和嵌套关系存在。为了表示和模拟现实世界中的层次嵌套结构,人们扩展了现有的1NF关系模型,如嵌套关系模型,RM/T和Non-1NF关系模型。
(4)模型的可扩充性较差。新关系模式的定义与原有的关系模式相互独立,并未借助已有的模式支持系统的扩充。关系模型只支持元组的集合这一种数据结构,并要求元组的属性值为不可再分的简单数据(如整数、实数和字符串等),它不支持抽象数据类型,因而不具备管理多种类型数据对象的能力。
(5)模拟和操纵复杂对象的能力较弱。关系模型表示复杂关系时比其它数据模型困难,因为它无法用递归和嵌套的方式来描述复杂关系的层次和网状结构,只能借助于关系的规范化分解来实现。过多的不自然分解必然导致模拟和操纵的困难和复杂化。