数据库应用系统中三种不同的数据模型
概念模型(E-R模型):为了实现用户的需求定义的模型,主要是初步表达用户需求
逻辑模型:按照用户观点对数据进行建模,主要用于数据库设计。
逻辑模型具体包括:层次模型、网状模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化模型等。
物理模型:表示数据在系统内部的表示方法和存取方法,实现数据的物理存储。包括数据的存储位置,索引存放位置,存储文件位置和存储策略等存储细节问题。
数据模型的组成要素:数据结构、数据操作、数据完整性约束条件
- 数据结构
数据结构指数据对象和对象之间联系的表达,是系统静态特征的描述,包括两个方面:
(1)数据本身:类型、内容、性质。例如关系模型中的域、属性、关系等。
(2)数据之间的联系:数据之间是如何相互联系的,例如关系模型中的主码、外码等联系。
- 数据操作
对数据库中对象(型)的实例(值)允许执行的操作集合,主要指检索和更新(插入、删除、修改)两类操作。数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言。数据操作是对系统动态特征的描述。
- 完整性约束条件
数据完整性约束是一组完整性规则的集合,规定数据库状态及状态变化所应满足的条件,以保证数据的正确性、有效性和相容性。
数据库中主要的逻辑数据模型
- 层次模型(格式化模型)
定义和限制条件:
- 有且仅有一个节点,无父节点,此节点为树的根;
- 其他节点有且仅有一个父节点;
优点:
- 数据结构简单清晰;
- 利用指针记录边向联系,查询效率高;
- 良好的完整新支持;
缺点:
- 只能表示1:N的联系。尽管有许多辅助手段实现M:N的联系,但比较复杂,不易掌握。
- 层次模型的树是有序树(层次顺序)。对任一结点的所有子树都规定了先后次序,这一限制隐含了对数据库存取路径的控制。
- 树中父子结点之间只存在一种联系,因此,对树中的任一结点,只有一条自根结点到达它的路径。
- 网状模型(格式化模型)
网状模型的数据结构主要有以下两个特征:
- 允许一个以上的节点无双亲;
- 一个节点可以有多于一个的双亲;
优点:
- 可以更加清晰表达现实,符合现实中的数据关系;
- 可以很快存取操作;
缺点:
- 结构复杂;
- 不易掌握,网状模型的DDL,DDM复杂,并且并且要嵌入某一种高级语言(COBOL,c),用户不易掌握;
- 应用程序复杂,记录之间的联系通过存取路径实现的,应用程序在访问数据时必须选择合适的存取路径,因此用户必须了解系统结构的细节,加重编写应用程序的负担;
- 关系模型
单一的数据结构——关系
现实世界的实体以及实体间的各种联系均用关系来表示,从用户角度看,关系模型中数据的逻辑结构是一张二维表。
优点:
- 数据结构单一,关系模型中,不管是实体还是实体之间的联系,都用关系来表示,而关系都对应一张二维数据表,数据结构简单、清晰。
- 关系规范化,并建立在严格的理论基础上,构成关系的基本规范要求关系中每个属性不可再分割,同时关系建立在具有坚实的理论基础的严格数学概念基础上。
- 概念简单,操作方便,关系模型最大的优点就是简单,用户容易理解和掌握,一个关系就是一张二维表格,用户只需用简单的查询语言就能对数据库进行操作。
缺点:
- 查询效率不如格式化数据模型;
- 为了提高性能,数据库管理系统需要优化用户查询,增加了数据库管理系统的开发难度;
- 面向对象数据模型
面向对象数据模型把实体表示为类,一个类描述了对象属性和实体行为。
面向对象数据模型四种核心技术:
- 分类
是把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。如城镇建筑可分为行政区、商业区、住宅区、文化区等若干个类。
- 概括(继承)
将相同特征和操作的类再抽象为一个更高层次、更具一般性的超类的过程。子类是超类的一个特例。一个类可能是超类的子类,也可是几个子类的超类。所以,概括可能有任意多层次。概括技术避免了说明和存储上的大量冗余。这需要一种能自动地从超类的属性和操作中获取子类对象的属性和操作的机制,即继承机制。
- 聚集(聚合)
聚集是把几个不同性质类的对象组合成一个更高级的复合对象的过程。
- 联合(组合)
相似对象抽象组合为集合对象。其操作是成员对象的操作集合。
优点:
- 适合处理各种各样的数据类型:与传统的数据库(如层次、网状或关系)不同,面向对象数据库适合存储不同类型的数据,例如,图片、声音、视频,包括文本、数字等。
- 面向对象程序设计与数据库技术相结合:面向对象数据模型结合了面向对象程序设计与数据库技术,因而提供了一个集成应用开发系统。
- 提高开发效率:面向对象数据模型提供强大的特性,例如继承、多态和动态绑定,这样允许用户不用编写特定对象的代码就可以构成对象并提供解决方案。这些特性能有效地提高数据库应用程序开发人员的开发效率。
- 改善数据访问:面向对象数据模型明确地表示联系,支持导航式和关联式两种方式的信息访问。它比基于关系值的联系更能提高数据访问性能。
缺点:
- 没有准确的定义:不同产品和原型的对象是不一样的,所以不能对对象做出准确定义;
- 维护困难:随着组织信息需求的改变,对象的定义也要求改变并且需移植现有数据库,以完成新对象的定义。当改变对象的定义和移植数据库时,它可能面临真正的挑战。
- 不适合所有的应用:面向对象数据模型用于需要管理数据对象之间存在的复杂关系的应用,它们特别适合于特定的应用,例如工程、电子商务、医疗等,但并不适合所有应用。当用于普通应用时,其性能会降低并要求很高的处理能力。
- 对象关系数据模型
那叫对象关系数据库映射。Hibernate的原理.核心部分.对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。ORM方法论基于三个核心原则:简单:以最基本的形式建模数据。传达性:数据库结构被任何人都能理解的语言文档化。 精确性:基于数据模型创建正确标准化了的结构。 典型地,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发信息模型。建模者必须能够用非技术企业专家可以理解的术语在概念层次上与数据结构进行通讯。建模者也必须能以简单的单元分析信息,对样本数据进行处理。ORM专门被设计为改进这种联系。对象-关系数据库映射规则表达式,ORM把应用程序世界表示为具有角色(关系中的部分)的一组对象(实体或值)。优点:
- ORM还提供了灵活性。使用ORM创建的模型比使用其它方法创建的模型更有能力适应系统的变化。
- ORM允许非技术企业专家按样本数据谈论模型,因此他们可以使用真实世界的数据验证模型。因为ORM允许重用对象,数据模型能自动映射到正确标准化的数据库结构。
- ORM模型的简单性简化了数据库查询过程。使用ORM查询工具,用户可以访问期望数据,而不必理解数据库的底层结构。
- 半结构化模型
数据有些是完全无结构的数据,比如声音文件、图像文件等; 有些则具有严谨的结构,比如关系型数据库中的数据;还有一类是结构状态介于以上两种数据之间的数据,这种数据具 有一定的结构,但结构不规则、不完整,或者结构是隐含的, 比如HTML文档,我们把这类数据称为半结构化数据。 有关半结构化数据还没有一个统一的定义。
半结构化模型分为基于树的模型、基于图的模型、基于逻辑的模型、基于关系的模型、基于对象的模型;
半结构化模型的特征
- 半结构化数据模型是一种数据库模型,但与传统的关系模型或面向对象数据模型有所不同,在这个模型中,模式包含于数据中,而不像关系模型那样,模式与数据严格区分,并且在这种模型巾,模式来源于数据,是先有数据,后有模式,这与传统数据库模型正好相反。
- 半结构化数据模型的结构并非一成不变,其复杂程度取决于实际的应用,可以根据需要进行定制,其模式是非精确的,不对数据结构进行强制约束,只描述数据的结构信息,可能只描述数据的一部分结构,也可能根据数据处理不同阶段的视角不同而不同。
- 由于半结构化数据模型结构的动态可变性,基于它可以在不同结构的数据库问的数据交互提供灵活的数据格式。
- 半结构化数据模型可以帮助用户出于浏览的目的把半结构数据当做结构数据来看
- 不同结构的数据库问数据的传输格式可相互移植
- 由于半结构化数据模型结构的可变性,加大了数据处理的难度