逻辑数据模型有哪些?

Python与开源GIS

逻辑数据模型有哪些?

2016-10-31 作者: zhangxiang 浏览: 3111 次

摘要: 1.层次模型 层次模型(Hierarchical Model)是最早出现的数据模型,它是采用层次数据结构来组织数据的数据模型。层次模型可以简单、直观地表示信息世界中实体、实体的属性以及实体之间的一对多联系。它使用记录类型来描述实体;使用字段来描述属性;使用结点...

1.层次模型

层次模型(Hierarchical Model)是最早出现的数据模型,它是采用层次数据结构来组织数据的数据模型。层次模型可以简单、直观地表示信息世界中实体、实体的属性以及实体之间的一对多联系。它使用记录类型来描述实体;使用字段来描述属性;使用结点之间的连线表示实体之间的联系。

(1)层次模型的概念

层次数据结构也称树型结构,树中的每个结点代表一种记录类型。满足以下两个条件的数据模型称为层次模型:

1)只有一个结点没有双亲结点(双亲结点也称父结点),该结点称为根结点。2)根结点以外的其他结点有且只有一个双亲结点。层次模型可以很自然地表示家族结构、行政组织结构等。(2)层次模型的三要素1)数据结构:使用记录类型表示实体,使用结点之间的连线表示一对多的联系。2)数据操作:包括结点的查询和结点的更新(如插入、删除和修改)操作。3)完整性约束:一个模型只有一个根结点;其他结点只能有一个双亲结点;结点之间是一对多的联系。(3)层次模型的优缺点层次模型的优点是结构简单、清晰,容易理解,结点之间联系简单,查询效率高。缺点主要有以下几点:1)不能表示一个结点有多个双亲的情况。2)不能直接表示多对多的联系,需要将多对多联系分解成多个一对多的联系。常用的分解方法是冗余结点法和虚拟结点法。3)插入、删除限制多。比如,删除父结点则相应的子结点也被同时删除等。具体内容可参考“数据结构”课程中树的相关操作。4)必须要经过父结点,才能查询子结点。因为在层次模型中,没有一个子结点的记录值能够脱离父结点的记录值而独立存在。

2.网状模型

网状模型(Network Model)采用网状结构,能够直接描述一个结点有多个父结点以及结点之间为多对多联系的情形。(1)网状模型的概念网状模型是满足以下两个条件的基本层次联系的集合:1)允许有一个以上的结点无双亲结点。2)一个结点可以有多于一个的双亲结点。 实际上,层次模型是网状模型的一个特例。网状模型去掉了层次模型中的限制,允许多个结点没有双亲结点,允许结点有多个双亲结点,还允许结点之间存在多对多的联系。使用网状模型可以表示多对多联系。例如,如图1-8所示,通过引入一个成绩的联结记录来表示学生和课程之间多对多的联系。网状模型中子结点与双亲结点的联系可以不唯一,但需要为每个联系进行命名,图1-8中成绩结点有两个双亲结点:课程和学生。将课程与成绩的联系命名为“课程-成绩”,将学生与成绩的联系命名为“学生-成绩”。(2)网状模型的三要素1)数据结构:使用记录类型表示实体,使用字段来描述实体的属性,每个记录类型可包含若干个字段,使用结点之间的连线表示一对多的联系。2)数据操作:包括结点的查询和结点的更新操作。3)完整性约束:支持码的概念,用于唯一标识记录的数据项的集合;保证一个联系中双亲结点与子结点之间是一对多联系;支持双亲记录和子女记录之间的某些约束条件,如只删除双亲结点等。(3)网状模型的优缺点 网状模型具有良好的性能,存取效率较高。相比层次模型,网状模型中结点之间的联系具有灵活性,能表示事物之间的复杂联系,更适合描述客观世界。网状模型虽然有效克服了层次模型不方便表达多对多联系的缺点,但因为结构复杂,实现网状数据库管理系统比较困难。并且其所提供的DDL语言复杂,不容易学习和掌握。此外,由于实体间的联系本质上是通过存取路径来表现,因而,应用程序在访问数据时还需要指定存取路径。

3.关系模型

层次模型和网状模型的共同缺点是通过存取路径实现记录之间的联系,应用程序在访问数据时必须选择适当的存取路径,用户必须了解系统结构的细节,这样加重了编写应用程序的负担。另外,不支持集合处理,即没有提供一次处理多个记录的功能。 关系模型(Relational Model)在1970年由IBM公司的E.F.Codd首次提出。关系模型可以描述一对一、一对多和多对多的联系,并向用户隐藏存取路径,大大提高了数据的独立性以及程序员的工作效率。此外,关系模型建立在严格的数学概念和数学理论基础之上,支持集合运算。关系模型由关系数据结构、关系操作和完整性约束三部分组成。在关系模型中,实体和实体之间的联系均由关系来表示。(1)关系的定义: 关系模型是一种简单的二维表格结构,每个二维表称做一个关系,一个二维表的表头,即所有列的标题称为一个元组,每一列数据称为一个属性,列标题称属性名。同一个关系中不允许出现重复元组和相同属性名的属性。(2)数据库体系结构① 外模式:或子模式、应用模式、局部模式等,它是对数据库在某个方面局部应用所涉及数据的逻辑结构和特征的描述,它是终端用户和应用程序员所见到的数据库。②模式:或概念模式、逻辑模式、全局模式等。它是对整个数据库逻辑结构和特征的描述,用户以DBMS支持的逻辑数据模型为基础。③ 内模式:或存储模式、物理模式等。它是对整个数据库的存储结构和特征的描述。(3)DBMS的主要功能①、 数据定义和操纵②、 数据库管理控制③、 数据库辅助服务④、 提供使用数据库工具⑤、 建立和维护数据字典(4)关系运算①关系数据结构域:域是具有相同特性的数据集合。笛卡儿积:笛卡儿积是定义在一组域上的集合,假定一组域用D1、D2、……Dn表示,则它们的笛卡儿积表示为:D1 * D2 * ……Dn。关系:关系到笛卡儿积的一个子集,若笛卡儿积具有n个域,则该笛卡儿积上的关系被称为n元关系。码:码又称为键、关键字等。候选码:关系中能惟一标识每个元组的最少属性或属性组被称为该关系的候选码。主码:从候选码中选择一个作为该关系的主码,数据库系统将按主码标识和排序每个元组。②关系完整性l 实体完整性实体完整性规则:关系的主码不能取空值,或者说任何关系中每个元组的主码不能为空。l 参照完整性参照完整性规则:在两个参照和被参照关系中,参照关系中每个元组的外码或者为空,或者等于被参照关系中某个元组的主码。③关系运算(5)传统的集合运算包括:并、交、差和笛卡儿积等四种运算。

4、面向对象模型

面向对象模型是一种新兴的数据模型,也是目前最重要的模型思路。它采用面向对象的方法来设计数据库。面向对象的数据库存储对象是以对象为单位,每个对象包含对象的属性和方法,具有类和继承等特点。

在面向对象数据库的设计中,我们将客观世界中的实体抽象成为对象。面向对象的方法中一个基本的信条是"任何东西都是对象"。对象可以定义为对一组信息及其操作的描述。对象之间的相互操作都得通过发送消息和执行消息完成,消息是对象之间的接口。严格地讲,在面向对象模型中,实体的任何属性都必须表示为相应对象中的一个变量和一对消息。变量用来保存属性值,一个消息用来读取属性值,另一个消息则用来更新这个值。

数据库中通常有很多相似的对象。"相似"是指它们响应相同的消息使用相同的方法,并有相同名称和类型的变量。对每个这样的对象单独进行定义是很浪费的,因此我们将相似的对象分组形成了一个"类"。类是相似对象的集合。类中的每个对象也称为类的实例。一个类中的所有对象共享一个公共的定义,尽管它们对变量所赋予的值不同。面向对象数据模型中类的概念相当于E-R模型中实体集的概念。继承性允许不同类的对象共享它们公共部分的结构和特性。继承性可以用超类和子类的层次联系实现。一个子类可以继承某一个超类的结构和特性,这称为"单继承性";一个子类也可以继承多个超类的结构和特性,这称为"多继承性"。继承性是数据间的泛化/细化联系,是一种"is a"联系。

面向对象系统提供一种"对象标识符"的概念来标识对象。OID与对象的物理存储位置无关,也与数据的描述方式和值无关。OID是惟一的。在对象创建的瞬间,由系统赋给对象,它在系统内是惟一的,在对象的生存期间,标识是不能改变的。如果要将数据转移到另外一个不同的数据库系统中,则标识符必须进行转化。

对象包含不同类的对象之间可能存在着包含关系)。包含其它对象的对象称为复合对象。包含关系可以有多层,形成类包含层次图。包含是一种"是一部分"(is part of)联系,因此包含与继承是两种不同的数据联系。

目前,一种结合关系数据库和面向对象特点的数据库为那些希望使用具有面向对象特征的关系数据库用户提供了一条捷径。这种数据库系统称为"对象关系数据库",它是在传统关系数据模型基础上,提供元组、数组、集合一类丰富的数据类型以及处理新的数据类型操作能力,并且有继承性和对象标识等面向对象特点。

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © from 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org