关系模型有几个局限。最大的问题之一是表达现实世界实体的能力有限,现实实体的复杂性远远超过了用元组和关系所描述的范围。并且,在区别实体之间的不同关系时显得特别无力。你不能在传统的关系数据库中描述和操纵复杂数据--在关系模型中执行的操作不适合于许多包含非数值属性的对象的实际应用。
在建立某些现实世界实体方面,传统关系模型的局限性导致了对语义数据模型以及所谓的扩展关系数据模型的研究。这两种数据模型现在巳经成为关系模型的后继产品,即面向对象数据模型和对象-关系数据模型。基于前一个模型的数据库称为OODBMS(面向对象的管理系统),基于后一个模型的数据库称为ORDBMS(对象-关系数据库管理系统)。
对象(或面向对象)的数据库主要基于面向对象的编程语言,如C++、Java和Smalltalk. ODBMS是由数据库功能和面向对象编程语言的功能相结合来建立的。在这个意义上,可以把ODBMS看作是面向对象语言加上数据并发性和数据恢复功能的一个扩展系统。面向对象的语言可同时用于应用开发和数据存储两个方面。面向对象的语言用来创建作为ODBMS基本组成部分的对象。
在面向对象环境中有几个特殊意义的术语。
对象(object):定义为包含现实世界对象的属性及其相关联的活动的实体。
属性(property):是指一个对象的各种属性(attribute).
方法(method):是对象中的函数,它们定义该对象的行为。
对象的传递借助于消息(message)。
类(class):是一组有相同属性的对象。
实例(instance):是类中对象的实体。
类可以划分成子类(subclass),是父类的子类。
以下三个概念是理解面向对象系统的基础。
多态(polymorphism):多态是当提供不同组信息时(以基数形式),对象做岀不同反应的能力。面向对象的语营允许根据你所指定的一组参数运行不同的方法.在非面向对象的编程语言中,执行两个不同任务的唯一方法是提供两个不同名的函数。
封装(encapsulation):该术语涉及一些对象,这些对象包括对象是什么(属性)以及能做什么(方法)的信息。即程序代码和数据被包在了一起。例如,如果一个人是模型中的一个对象,且有一个计算其年薪的方法,则计算薪水的程序代码(或方法)与人这个实例对象封装在一起。
继承(inheritance):继承允许一个类扩展成另一个类一从另一个类中继承一些特征并增加履于自己的更多的特征。例如,Student对象是Person类的一个子类。




