对象关系模型数据库解析
《数据库原理》知识点之对象联系图

考核要求:达到“识记”
层次知识点:基本概念,⼀些符号的含义
8.1.1 从关系到嵌套关系、复合对象
(1)平⾯关系模型:传统的关系模型称为“平⾯关系模型”,它要求关系模式具有第⼀范式(1NF)性质,关系具有规范化的结构。
也就是规定属性值是不可分解的,即不允许属性值具有复合结构(元组或关系)。
(2)嵌套关系模型:是从平⾯关系模型发展⽽成的。
它允许关系的属性值⼜可以是⼀个关系,⽽且可以出现多次嵌套。
嵌套关系突破了1NF的定义框架,是“⾮1NF关系”。
(3)复合对象模型:在关系定义上,集合与元组不再有严格的限制,此时的关系中,属性类型可以是基本数据类型、结构类型(元组类型)或集体类型(即关系类型)。
8.1.2 对象联系图
对象联系图:是⼀种完整地揭⽰数据之间联系的图⽰⽅法。
在类型构造图的基础上扩充得到的。
Notice:图中,椭园、⼩圆圈、单箭头(→),双箭头(→→),双线箭头(=>),双向箭头(←→)所表⽰的含义。
椭圆表⽰对象,⼩圆圈表⽰属性是基本数据类型,单箭头(→)表⽰函数值是单值,双箭头(→→)表⽰函数值是多值,双线箭头(=>)是泛化边,表⽰泛化/细化联系,双向箭头(←→)表⽰两个函数互逆。
8.1.3 数据的泛化/细化
数据的泛化/细化是对概念之间联系进⾏抽象的⼀种⽅法。
当在较低层上的抽象表达了与之联系的较⾼层上抽象的特殊情况时,就称较⾼层上抽象是较低层上抽象的“泛化”,⽽较低层上抽象是较⾼层上抽象的“细化”。
较⾼层的对象类型称为“超类型”,较低层的对象类型称为“⼦类型”。
最常见的数据库模型

最常见的数据库模型数据库模型是数据库设计的基础,它定义了数据如何组织、存储和操作。
常见的数据库模型有层次模型、网络模型、关系模型和对象模型。
1. 层次模型层次模型是最早的数据库模型之一,它将数据组织成一个树状结构,每个节点代表一个实体,每个节点下面可以有多个子节点,但每个节点只能有一个父节点。
这种模型适用于具有固定深度的数据结构,例如组织机构、文件系统等。
尽管层次模型在数据访问方面具有高效性,但它的局限性也很明显,例如节点深度固定、节点之间的关系不够灵活等。
2. 网络模型网络模型是层次模型的改进版,它允许一个节点有多个父节点,这种关系称为“多重关系”。
网络模型适用于具有复杂关系的数据结构,例如电子电路、化学分子等。
尽管网络模型比层次模型更灵活,但它的实现和维护也更加困难,因此在实际应用中并不常见。
3. 关系模型关系模型是当前最流行的数据库模型,它将数据组织成多个表格(关系),每个表格包含多个行(元组)和多个列(属性)。
表格之间可以通过主键和外键建立关联,从而实现数据的查询和更新。
关系模型具有如下优点:数据结构灵活、适用于大规模数据、易于维护和扩展、具备高效的查询能力等。
因此,关系模型是大多数企业和组织采用的数据库模型。
4. 对象模型对象模型是面向对象编程中的数据库模型,它将数据组织成多个对象,每个对象包含多个属性和方法。
对象之间可以通过继承、聚合等方式建立关联,从而实现数据的封装和复用。
对象模型具有如下优点:支持面向对象编程、适用于复杂的数据结构、易于维护和扩展、具备高效的查询能力等。
因此,对象模型逐渐被广泛应用于企业和组织的信息系统中。
总结不同的数据库模型具有不同的优缺点,选择合适的数据库模型需要根据实际应用场景和需求来进行评估和选择。
在实际应用中,关系模型和对象模型是最常用的数据库模型,它们具有灵活性、可扩展性和高效性等优点,可以满足大多数企业和组织的需求。
关系数据库与面向对象数据库的数据模型比较

关系数据库与面向对象数据库的数据模型比较随着信息技术的快速发展,数据库成为了现代社会中不可或缺的一部分。
而在数据库领域中,关系数据库和面向对象数据库是两种常见的数据模型。
本文将对这两种数据模型进行比较,探讨它们的优势和劣势。
一、关系数据库关系数据库是一种基于关系模型的数据库,它将数据组织成表格形式,通过行和列的方式来存储和管理数据。
关系数据库使用结构化查询语言(SQL)来操作数据,具有良好的数据一致性和完整性。
1. 优点:a. 数据一致性:关系数据库通过约束和规范来确保数据的一致性,可以避免数据冗余和不一致的问题。
b. 容易理解和使用:关系数据库使用表格形式来存储数据,具有直观的结构,易于理解和使用。
c. 数据共享和安全性:关系数据库支持多用户访问,可以实现数据共享,并通过访问控制机制保证数据的安全性。
2. 缺点:a. 性能问题:关系数据库在大规模数据处理和复杂查询时性能较差,需要使用索引和优化技术来提高查询效率。
b. 对象映射困难:关系数据库与面向对象编程语言之间存在差异,需要进行对象-关系映射(ORM)来实现对象和表格之间的转换。
二、面向对象数据库面向对象数据库是一种基于面向对象模型的数据库,它将数据组织成对象的形式,具有继承、封装和多态等面向对象的特性。
面向对象数据库使用面向对象查询语言(OQL)来操作数据,可以直接存储和检索对象。
1. 优点:a. 数据模型一致性:面向对象数据库直接存储和检索对象,避免了对象-关系映射的问题,数据模型更加一致。
b. 查询效率高:面向对象数据库通过对象引用和索引等技术,可以实现高效的数据检索,适用于复杂查询和大规模数据处理。
c. 对象关系一致性:面向对象数据库可以实现对象之间的关系,比如继承、关联和多态等,更加符合现实世界的模型。
2. 缺点:a. 学习成本高:面向对象数据库需要理解面向对象模型和面向对象查询语言,学习成本相对较高。
b. 兼容性问题:面向对象数据库与传统的关系数据库存在兼容性问题,不容易与其他系统进行集成。
第十章 对象关系数据库

聚集类型的差异
类型 元 素
有 序
元素的重复性
允许一个元素出 现多次
元素 个数
预置
例子
[1,2,1]和[2,1,1]是 不同的数组
数组
列表
包(多集)
有 序
无 序
允许一个元素出 现多次
允许一个元素出 现多次
未预 置
未预 置
{1,2,1}和{2,1,1}是 不同的列表
{1,2,1}和{2,1,1}是 相同的包
persistent
也可以不定义关系类型,直接使用集合set形式: type UniversityTup = tuple (uno: integer, uname: string,
staff : set(FacultTup));
type
FacultTup = tuple(fno:integer,
fname:string, age:integer);
… …
FacultyTup
采用“引用” 技术解决类型定义中的递归问题。
在属性的类型中,除了基本数据类型、元组类型、关系类型外,
还可以出现“引用类型”。引用类型相当于程序设计中指针的概 念, 在面向对象技术中称为“对象标识”。 引入“引用”概念的类型构造: UniversityRel UniversityTup
数据库实用教程(第三版)第十章ຫໍສະໝຸດ 对象关系数据库第十三章
本章概念:
对象关系数据库
新一代DBS的两条途径:ORDBS和OODBS; 平面关系模型,嵌套关系模型,复合对象模型,引用类型; 对象联系图的成分及表示方法,数据的泛化/细化; ORDB的定义语言:数据类型、继承性、引用类型的定义, ORDB的查询语言:路径表达式、嵌套与解除嵌套。
关系模型及对象关系数据库

关系模型及对象关系数据库关系模型简介关系模型是一种用于表示和操作数据的方法,它基于关系代数和谓词逻辑。
关系模型将数据组织为表格形式的关系,其中每个表格称为关系。
关系模型使用属性和实体之间的关系来描述数据。
关系模型的基本概念包括实体、关系、属性和约束。
实体是现实世界中的一个对象,可以是一个人、一本书或者一辆汽车等。
关系是由实体之间的关系组成的二维表格。
属性是关系中的列,表示实体的某个特征。
约束是对关系的限制条件,例如主键、外键和唯一约束等。
关系模型的优势包括数据的易于理解、数据的一致性和数据的独立性。
通过关系模型,可以方便地对数据进行查询、修改和删除操作。
此外,关系模型还支持数据的完整性约束和安全性控制。
对象关系数据库(ORDB)对象关系数据库(Object-Relational Database,ORDB)是关系数据库的一种扩展,它将面向对象的特性引入关系模型中。
ORDB允许在关系数据库中存储和查询复杂的对象,包括类、继承、多态和封装等概念。
ORDB的核心思想是将实体映射为数据库中的对象,每个对象包含属性和方法。
通过对象的继承和多态性,可以实现更灵活的数据建模和查询。
ORDB还支持编程语言中的类与关系数据库中的关系之间的映射,使得对象的操作更加方便和灵活。
ORDB的优势包括更好的数据建模能力、更高的查询灵活性和更好的数据封装性。
通过ORDB,可以将面向对象的程序和关系数据库无缝集成,提高了系统的开发效率和易用性。
关系模型 vs. 对象关系数据库关系模型和对象关系数据库在数据建模和查询方面有一些不同之处。
数据建模关系模型采用二维表格的形式展示数据,每个实体对应一个关系,每个属性对应一个字段。
关系模型适用于简单的数据结构,数据之间的关系通过外键来表示。
对象关系数据库在关系模型的基础上引入了面向对象的概念,可以更灵活地表示和查询数据。
对象关系数据库支持继承、多态和封装等特性,可以更好地建模复杂的数据结构。
对象关系模型的简称

对象关系模型(Object-Relational Model)1. 简介对象关系模型(Object-Relational Model,简称ORM)是一种用于描述和操作对象与关系数据库之间的映射关系的数据模型。
ORM将面向对象的思想与关系数据库的优势相结合,提供了一种便捷、高效的方式来处理数据持久化和查询。
2. ORM的特点2.1 面向对象思想ORM基于面向对象的思想,将现实世界中的概念抽象为对象,并通过类和继承等机制来组织和管理这些对象。
通过ORM,开发人员可以直接使用面向对象编程语言(如Java、Python)对数据库进行操作,无需编写复杂的SQL语句。
2.2 数据库无关性ORM提供了一种与具体数据库系统无关的抽象层,使开发人员能够在不同的数据库系统之间切换而无需修改代码。
ORM框架会根据配置文件或注解自动生成SQL语句,并将其转换为特定数据库系统所支持的语法。
2.3 映射关系管理ORM通过建立对象和表之间的映射关系,实现了对象到表、属性到列之间的映射。
开发人员只需定义好对象和表之间的映射规则,ORM框架便能自动处理对象和表之间的转换,无需手动编写转换代码。
2.4 数据一致性维护ORM框架提供了事务管理机制,保证对数据库的操作具有原子性、一致性、隔离性和持久性。
开发人员可以通过简单的API调用来管理事务,确保数据的完整性和一致性。
3. ORM框架目前市场上有许多成熟的ORM框架可供选择,如Hibernate、Django ORM、SQLAlchemy等。
这些框架提供了丰富的功能和灵活的配置选项,使开发人员能够更加高效地进行数据库操作。
3.1 HibernateHibernate是Java平台上广泛使用的ORM框架,它提供了强大的对象关系映射功能和事务管理机制。
开发人员可以通过注解或XML配置文件来定义对象与表之间的映射关系,并使用Hibernate提供的API进行数据持久化操作。
3.2 Django ORMDjango ORM是Python Web框架Django中集成的ORM工具。
数据库模型的基本概念

数据库模型的基本概念数据库模型是数据库设计的基础,它是用于表示数据之间逻辑联系的数学模型。
在数据库领域,常用的模型有关系模型、层次模型、网状模型和对象模型等。
关系模型是最为常用的数据库模型,它把数据表示为一张表,其中每一行为一个记录,每一列为一个字段。
关系模型强调数据之间的关系,它通过主键和外键来建立表与表之间的关系。
关系模型具有表达能力强、易于理解和使用的特点,被广泛应用于各行各业的信息管理中。
层次模型是一种数据库结构组织方式,它将数据组织成一个树形结构,该模型中每个节点都只有一个父节点,但可以有多个子节点。
层次模型适合处理那些具有已知属性层次结构的数据,例如组织机构管理等。
网状模型与层次模型类似,也是一种树形结构,但不同之处在于,在网状模型中,每个节点可以有多个父节点。
网状模型适合处理那些具有交叉引用关系的数据,例如图书管理系统等。
对象模型是一种新兴的数据库模型,与传统的关系模型不同,对象模型是基于面向对象编程思想而设计的。
对象模型中的数据以对象为基本单位进行存储和管理,它不仅能够方便地描述数据之间的关系,还可以支持继承、多态等面向对象特性,具有表示能力强、易于扩展等优点。
除此之外,数据库模型还包括概念模型、逻辑模型和物理模型三个层次,每个层次都对数据的描述和处理提供了不同的视角和方法。
概念模型是从用户的角度出发,描述数据之间的概念联系和规则。
概念模型可以用来描述用户的信息需求,是数据库设计的重要前置工作。
逻辑模型是在概念模型的基础上,把数据抽象为表和关系,描述数据之间的逻辑关系和约束条件。
逻辑模型是数据库实现的依据,可以根据逻辑模型进行数据库逻辑设计和实现。
物理模型是在逻辑模型的基础上,描述数据库在计算机存储器中的实际存储结构和存储方式。
物理模型将逻辑结构转换为物理结构,包括数据存储、索引方式、空间管理、数据安全等方面。
在数据库设计过程中,合理的数据库模型选择对于系统的性能、数据的存储、安全性等方面都具有十分重要的影响。
面向对象的数据模型和对象关系数据模型(精品)

本讲(第5章)简要说明授课目的与要求:了解对象数据库管理系统的特点、优缺点以及与传统DBMS的区别;了解对象关系数据库系统相对关系数据库的扩充。
5.1 引言1. 高级的数据库应用计算机辅助设计(CAD);计算机辅助软件工程(CASE); 多媒体系统;地理信息系统(GIS);交互的和动态的Web站点。
2. 新的应用需求:1) 处理二进制大对象,文字、图象、声音、视频等多媒体数据。
2) 数据模拟:实体的任意组合、任意联系,例聚合、继承。
3) 行为模拟:对不同数据的多种操作。
3.关系数据库的弱点有限的数据类型缺少全系统唯一、不依赖于属性的OID (Object ID)不支持用户自定义或系统可扩展的运算 不能清晰表示和有效处理复杂对象及联系 阻抗失配4. 面向对象技术1)对象由属性和操作两部分构成。
一个对象包含若干属性,用以描述对象的状态、组成、特性。
一个对象包含若干操作,用以描述对象的行为方式。
2)操作(消息/方法)的接口与实现。
接口说明------给出操作的名称、参数表、操作结果、对象类型等。
实现部分------为实现该操作的一段程序代码。
附加优点:有利于提高数据独立性,有利于数据完整、安全保护。
3)类与实例具有相同属性和方法的一类对象抽象(概化)为类,其中的每一对象称为该类的一个实例。
4)继承与类结构①一个类中所有对象的集合的子集可以定义成一个新的类,它成为原类的子类,原来的类称为子类的超类。
②子类的每个成员继承超类的所有属性和方法。
子类和父类(直接超类)用线连接,构成一个类层次结构。
③子类还可以定义自己特有的属性和方法,也可以重新定义所继承的超类原有的属性和方法。
5. OODBS1.2.3二、模式及其映射1.每个对象在其生命周期中,都有一个系统给定的唯一不变的对象标识OID只要OID 相同,就是同一对象(无论对象的属性、操作如何修改);只要OID 不同,就是不同对象(尽管其属性、操作都一样) 高效快速定位、用户不可修改、独立于内容 系统产生OID 的方法有两种:逻辑OID 物理OID对象标识(OID )6.OO技术与数据库技术结合的途径①在面向对象的程序设计语言(例如Smalltalk,C++,Java)环境中扩展传统的数据库的功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象数据库系统(Object Oriented Data Base System,简称OODBS)是数据库技术与面向对象程序设计方法相结合的产物。
对于OO数据模型和面向对象数据库系统的研究主要体现在:研究以关系数据库和SQL为基础的扩展关系模型;以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型;建立新的面向对象数据库系统,支持OO数据模型。
面向对象程序设计方法是一种支持模块化设计和软件重用的实际可行的编程方法。
它把程序设计的主要活动集中在建立对象和对象之间的联系(或通信)上,从而完成所需要的计算。
一个面向对象的程序就是相互联系(或通信)的对象集合。
面向对象程序设计的基本思想是封装和可扩展性。
面向对象数据库系统支持面向对象数据模型(以下简称OO模型)。
即面向对象数据库系统是一个持久的、可共享的对象库的存储和管理者;而一个对象库是由一个OO模型所定义的对象的集合体。
一个OO模型是用面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型。
一系列面向对象核心概念构成了OO模型的基础。
概括起来,OO模型的核心概念有如下一些:(1)对象(Object)与对象标识OID(Object IDentifier)现实世界的任一实体都被统一地模型化为一个对象,每个对象有一个唯一的标识,称为对象标识(OID)。
(2)封装(Encapsulation)每一个对象是其状态与行为的封装,其中状态是该对象一系列属性(Attribute)值的集合,而行为是在对象状态上操作的集合,操作也称为方法(Method)。
(3)类(C1ass)共享同样属性和方法集的所有对象构成了一个对象类(简称类),一个对象是某一类的一个实例(instance)。
(4)类层次(结构)在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类Cl 称为类C2的超类(或父类)。
子类(如C2)还可以再定义子类(如C3)。
这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。
(5)消息(Message)由于对象是封装的,对象与外部的通信一般只能通过显式的消息传递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内部执行所要求的操作,操作的结果仍以消息的形式返回。
OODB语言用于描述面向对象数据库模式,说明并操纵类定义与对象实例。
OODB语言主要包括对象定义语言(ODL)和对象操纵语言(OML),对象操纵语言中一个重要子集是对象查询语言(OQL)。
OODB语言一般应具备下述功能:(1)类的定义与操纵面向对象数据库语言可以操纵类,包括定义、生成、存取、修改与撤销类。
其中类的定义包括定义类的属性、操作特征、继承性与约束等。
(2)操作/方法的定义面向对象数据库语言可用于对象操作/方法的定义与实现。
在操作实现中,语言的命令可用于操作对象的局部数据结构。
对象模型中的封装性允许操作/方法由不同程序设计语言来实现,并且隐藏不同程序设计语言实现的事实。
(3)对象的操纵面向对象数据库语言可以用于操纵(即生成、存取。
修改与删除)实例对象。
目前,还没有像SQL那样的关于面向对象数据库语言的标准,因此不同的OODBMS 其具体的数据库语言各不相同。
对象-关系数据库系统就是将关系数据库系统与面向对象数据库系统两方面的特征相结合。
对象-关系数据库系统除了具有原来关系数据库的各种特点外,还应该提供以下特点:(1)扩充数据类型,例如可以定义数组、向量、矩阵、集合等数据类型以及这些数据类型上的操作。
(2)支持复杂对象,即由多种基本数据类型或用户自定义的数据类型构成的对象。
(3)支持继承的概念(4)提供通用的规则系统,大大增强对象-关系数据库的功能,使之具有主动数据库和知识库的特性。
对象数据库VS 关系数据库我们将对象数据库管理系统(ODBMS)定义为一个集成了数据库能力与面向对象编程语言能力的数据库管理系统(DBMS),ODBMS使数据库对象看起来像是已有的一个或多个程序设计语言中的程序设计语言以象。
——Rick Cattell,OMG-93委员会主席。
ODBMS在多用户客户机/服务器环境中提供了持久性存储器。
ODBMS可以处理对象的并行访问,提供锁定和事务保护,保护对象存储器免遭各种类型的威胁,照管像备份和恢复之类传统任务。
ODBMS这所以与关系数据库不同,是因为ODBMS存储的是对象,而不是表格。
对象的引用通过持久性标识(PID)进行,PID可以独一无二地识别各个对象,可以用来在对象之间建立标记和容器关系。
ODBMS还加强了封装,支持继承。
ODBMS结合了对象属性和传统的DBMS功能,如锁定、保护、事务处理、查询、版式本、并发和持久性。
ODBMS不是利用分离的语言(如SQL)定义、检索和处理数据,而是利用类定义和传统的面向对象的程序语言(通常是C++、SmallTalk和Java语言)构造来定义和访问数据。
ODBMS只来过是存储器内语言数据结构的多用户、持久性扩展。
换句话说,客户就是C++或是Java程序,服务器就是ODBMS-——没有像SQL和RPC这样的可视中间对象。
ODBMS将数据库能力直接集成进语言。
ODBMS的价值。
很显然,最好是以自然的形式存储那些对象,而不是将数据修饰得光光滑滑或撕得七零八落之后放进关系表格中。
对于那些数据复杂难以在表格里简单排列的用户来说,ODBMS特别适合。
ODBMS 曾经长期是学者和OO研究人员极为感兴趣的领域。
最早的商品化ODBMS出现在1986年,是Servio公司(现在的GemStone公司)和Ontos公司推出的。
后来(九十年代)Object Design(ODI)、Versant、Objectivity、O2 Technology、Poet、Ibex、UniSQL 和ADB MATISSE等公司也加入了这个开拓行列。
这些ODBMS厂商首先瞄准了那些复杂数据结构和长命期事务处理的应用程序——包括计算机辅助设计、CASE和智能办公室等。
随着多媒体、群件、公布式对象和万维网技术的出现,ODBMS与那些深奥难懂的特性现在变成了客户机/服务器系统的主流要求。
ODBMS技术填补关系数据库最弱的那些空隙——复杂数据、版式本和长生命期事务、持久性对象存储、继承和用户定义的数据类型等等。
以下是ODBMS厂商开拓的各个特性:n 自由创建新的信息类型n 快速存取n 组合结构的灵活视图n 与面向对象的程序语言紧密集成n 利用多继承支持可定制的信息结构n 支持版本事务、嵌套事务和长生命期事务n 分布式对象储库n 支持复合对象的生命期管理对象狂已经掌握了整个行业。
面向对象技术支持者正在宣告,对象关系数据库和ODBMS将成为医治关系技术的所谓弱点的良药。
这纯属胡说……在数据库上直接地和不加区分地就应用面向对象技术,将再次引入关系数据库花了二十年才克服的那些问题。
在用户中间,很少有人会怀疑ODBMS最终将成为RDBMS的后继技术。
在诗人William Blake的比喻中,年轻的革命上帝Orc已经开始衰老,变成冷冰冰的暴君Urizen——戒律和标准的守护人。
我们可以两者兼得。
要点是将这两项技术结合起来,而不是相互扔泥块。
对二十多处踏踏实实的关系数据库研究的开发熟视无睹,不加以利用,就不太应该了。
Date和Pascal都承认目前的SQL数据库实现有缺点;但他们两人都有觉得关系模型本身能够处理ODBMS将解决的那些问题,ODBMS有能力,可以利用嵌套关系、域(或用户定义的数据封装类型)以及一种比SQL更强大的面向集合语言在关系技术世界里近似。
这些特性完成这项工作,无需追逐对象指针或操纵低级的专用语言记录结构。
没有必要减轻关系理论的联合能力。
开发者没有必要退回到用手工方法去最佳化或重新优化应用程序的性能——将时钟倒拔回去了。
Date认为域和对象是同一回事,解决办法是由关系技术厂商扩展其系统,以包括“适当的域支持”。
StoneBraker注意到纯粹的ODBMS还缺乏复杂搜索、查询优化器和服务器可扩展性等领域的功能。
而且,许多ODBMS在用户编程的同一个地址空间里运行其产品。
这意味着在客户应用程序和ODBMS之间没有任何屏蔽。
此外,与关系DBMS相比,ODBMS 的市场突破还极小。
最后,对象/关系和SQL数据类型扩展器正在RDBMS语言政治协商环境内满足某些对象要求。
支持ODBMS的人们觉得,除了仅仅扩展关系模型之外,还有更多的方法。
事实上,他们已经拒绝了SQL3,理由是不足(正在达成休战协定)。
ODBMS顽固分子认为他们正在为一个新创世界创造更好的管道系统,在这个世界里信息系统完全建产在对象基础之上。
在一个由ORB、对象服务、面向对象的程序设计语言和Object Web组成的管道里,关系数据库成了阻碍。
所需要的正是一个纯粹的ODBMS。
为什么要坚持用BLOB、存储过程和用户定义类型来扩展一个像SQL这样的旧基础呢?他们宁愿自始至终坚持用对象技术,有时从SQL借来某些东西(比如查询)。
他们还在创建一个多用户、坚实的基础、包括锁定、事物处理、恢复和各种工具。
当然我们这里谈论的是David和Goliath。
SQL数据库是目前的山中之王,它们拥有巨额的开发经费,在从MIS商店到客户机/服务器低端市场里有着极好的市场接受度。
是不是因为ODBMS能与更好地处理对象,这个山中之王就会被黜?这还有待进一步地观察。
不过,正如Esther Dyson表达的,“利用表格存储对象,就象是将汽车开回家,然后拆成零碎件放进车库里,早晨可以再把汽车装配起来。
但是人们不禁要问:这是不是泊车的最有效的方法呢对象--关系数据库模型对象关系数据库模型,一个很有意思的领域。
今天了解一下。
呵呵。
重要的是一种思想,个人认为。
嵌套关系模型---是其中的一种,它的意思是我们的属性可以不是原子的。
也就是说这个数据库还不能满足我们的第一范式。
它是关系模型的一个扩展,它的域可以为原子的也可以赋值为关系。
这样元组在一个属性上的取值可以是关系,于是这样关系可以存在于关系中。
这样一个复杂的对象就可以用嵌套关系的一个元组来表示。
下面来一个例子说明一下嵌套关系的存在的可能性。
假设每一本书存储下面这些信息:书名,作者,出版商,关键字集合。
对于上面的关系,可以存在非元子的有:作者(一本书可能有多个作者,我们通常只是对域元素“作者”的一部分感兴趣),关键字(一本书存储了多个关键字,我们希望能找到在关键字集合中包含某个关键字的所有的书。
)。
当然我们可以用1NF对它进行表达,但可能会有很大程度上的重复。
当然可以通过分解来达到消除这些弊端。
主要是其中存在的多值依赖。
这时我们可以设计一个无嵌套的复杂的关系视图来免除用户在它们的查询中编写麻烦的连接操作的需要。