层次模型、网状模型、关系模型
1、层次模型:
①有且只有一个结点没有双亲结点(这个结点叫根结点)。
②除根结点外的其他结点有且只有一个双亲结点。
层次模型中的记录只能组织成树的集合而不能是任意图的集合。在层次模型中,记录的组织不再是一张杂乱无章的图,而是一棵"倒长"的树。
2、网状模型 :
①允许一个以上的结点没有双亲结点。
②一个结点可以有多个双亲结点。
网状模型中的数据用记录的集合来表示,数据间的联系用链接(可看作指针)来表示。数据库中的记录可被组织成任意图的集合。
3、关系模型:
关系模型用表的集合来表示数据和数据间的联系。
每个表有多个列,每列有唯一的列名。
在关系模型中,无论是从客观事物中抽象出的实体,还是实体之间的联系,都用单一的结构类型。
目前最主流的sql server、oracle、mysql、db2都是关系型数据库。随着社交网站、视频网站等互联网新业务模式的兴起,各种非关系数据库模型也在不断涌现。
以下是copy的:
数据模型概述
1关系模型
关系模型使用记录(由元组组成)进行存储,记录存储在表中,表由架构界定。表中的每个列都有名称和类型,表中的所有记录都要符合表的定义。SQL是专门的查询语言,提供相应的语法查找符合条件的记录,如表联接(Join)。表联接可以基于表之间的关系在多表之间查询记录。
表中的记录可以被创建和删除,记录中的字段也可以单独更新。
关系模型数据库通常提供事务处理机制,这为涉及多条记录的自动化处理提供了解决方案。
对不同的编程语言而言,表可以被看成数组、记录列表或者结构。表可以使用B树和哈希表进行索引,以应对高性能访问。
2键值存储
键值存储提供了基于键对值的访问方式。
键值对可以被创建或删除,与键相关联的值可以被更新。
键值存储一般不提供事务处理机制。
对不同的编程语言而言,键值存储类似于哈希表。对此,不同的编程语言有不同的名字(如,Java称之为“HashMap”,Perl称之为“hash”,Python称之为“dict”,PHP称之为“associative array”),C++则称之为“boost::unordered_map<>”。
键值存储支持键上自有的隐式索引。
键值存储看起来好像不太有用,但却可以在“值”上存储大量信息。“值”可以是一个XML文档,一个JSON对象,或者其它任何序列化形式。
重要的是,键值存储引擎并不在意“值”的内部结构,它依赖客户端对“值”进行解释和管理。
3文档存储
文档存储支持对结构化数据的访问,不同于关系模型的是,文档存储没有强制的架构。
事实上,文档存储以封包键值对的方式进行存储。在这种情况下,应用对要检索的封包采取一些约定,或者利用存储引擎的能力将不同的文档划分成不同的集合,以管理数据。
与关系模型不同的是,文档存储模型支持嵌套结构。例如,文档存储模型支持XML和JSON文档,字段的“值”又可以嵌套存储其它文档。文档存储模型也支持数组和列值键。
与键值存储不同的是,文档存储关心文档的内部结构。这使得存储引擎可以直接支持二级索引,从而允许对任意字段进行高效查询。支持文档嵌套存储的能力,使得查询语言具有搜索嵌套对象的能力,XQuery就是一个例子。MongoDB通过支持在查询中指定JSON字段路径实现类似的功能。
4列式存储
如果翻转数据,列式存储与关系存储将会非常相似。与关系模型存储记录不同,列式存储以流的方式在列中存储所有的数据。对于任何记录,索引都可以快速地获取列上的数据。
Map-reduce的实现Hadoop的流数据处理效率非常高,列式存储的优点体现的淋漓极致。因此,HBase和Hypertable通常作为非关系型数据仓库,为Map-reduce进行数据分析提供支持。
关系类型的列标对数据分析效果不好,因此,用户经常将更复杂的数据存储在列式数据库中。这直接体现在Cassandra中,它引入的“column family”可以被认为是一个“super-column”。
列式存储支持行检索,但这需要从每个列获取匹配的列值,并重新组成行。
5图形数据库
图形数据库存储顶点和边的信息,有的支持添加注释。
图形数据库可用于对事物建模,如社交图谱、真实世界的各种对象。IMDB(Internet Movie Database)站点的内容就组成了一幅复杂的图像,演员与**彼此交织在一起。
图形数据库的查询语言一般用于查找图形中断点的路径,或端点之间路径的属性。Neo4j是一个典型的图形数据库。
选择哪一种数据模型?
数据模型有着各自的优缺点,它们适用于不同的领域。不管是选择关系模型,还是非关系模型,都要根据实际应用的场景做出选择。也许你会发现单一的数据模型不能满足你的解决方案,许多大型应用可能需要集成多种数据模型。
数据库管理系统常见的数据模型有层次模型、网状模型和关系模型 3种
数据模型是对现实世界数据的模拟,是一个研究工具,利用这个研究工具我们可以更好地把现实中的事物抽象为计算机可处理的数据。
层次模型:层次模型以“树结构”表示数据之间的联系
层次模型是数据库系统最早使用的一种模型,它的数据结构是一棵“有向树”。根结点在最上端,层次最高,子结点在下,逐层排列。
层次模型的特征是:
在一个层次模型中的限制条件是:
(1)有且仅有一个节点,无父节点,它为树的根;(有且仅有一个结点没有双亲,该节点就是根结点。)
(2)其他节点有且仅有一个父节点。(根以外的其他结点有且仅有一个双亲结点
)这就使得层次数据库系统只能直接处理一对多的实体关系。
(3)任何一个给定的记录值只有按照其路径查看时,才能显出它的全部意义,没有一个子女记录值能够脱离双亲记录值而独立存在。
比如:一个教师学生层次模型。该层次模型有4个记录类型,即实体。
分别是:
(1)记录型(实体)系是根结点,由编号、名称、专业、人数属性(字段)组成。它有两个子结点,分别是学院老师实体和课程实体。
(2)记录型(实体)教师是学院的子结点,它有6个属性(字段)组成。
(3)记录型(实体)课程由4个属性(字段)组成。
(4)记录型(实体)教师由6个属性(字段)组成。课程与教师是叶子结点,由学院到老师、老师到课程都是一对多的联系。
数据完整性约束
其主要四个功能:增删查改;要满足完整性约束条件;
增加(插入):满足必须有双亲节点,即如果加入教师,就必须分配到学院中;
删除:如果是字节点,不影响,直接删除字节点,如果是双亲节点,则整个字节点被删除;如果删除整个教研室则教研室的老师不存在这个体系;
查找:根据树状结构自上而下查找;
修改:更新相应的关系的信息。
其优缺点:
优点:
比较简单,容易使用;
结构清晰,现实中公司、家族等都存在类似结构;
良好的完整性支持;
查询效率高,模型层次是有向边,常记录存取路径。
缺点:
有很多不是单向关系,一对多,多对一,只能通过引进冗余数据或建非自然的数据组织如创建虚拟节点的方法来解决,易产生不一致性;
插入删除限制太多
查找字节点必须通过双亲;
树结点中任何记录的属性是不可再分的简单数据类型;
网状模型:
网状模型是以“图结构”来表示数据之间的联系。
1、条件特征
(1)允许有一个以上的节点无双亲。
(2)至少有一个节点可以有多于一个的双亲。
网状模型中每个结点表示一个记录型(实体),每个记录型可包含若干个字段(实体的属性),结点间的连线表示记录类型(实体)间的父子关系。
从定义可以看出,层次模型中子结点与双亲结点的联系是唯一的,而在网状模型中这种联系可以不唯一。因此,在网状模型中要为每个联系命名,并指出与该联系有关的双亲记录和子记录。
2、表示方法:
实体型:用记录类型描述
每个结点表述一个记录类型(实体);
属性:用字段描述,每个记录类型包含若干个字段;
联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子关系;
网状模型与层次模型的区别:
网状模型:允许多个结点没有双亲结点;
允许结点有多个双亲;
允许两个结点有多种联系(复合联系);
可以更直接的去描述现实世界;
层次模型是网状模型的一个特例。
要为每个联系命名(L1、L2),并指出该联系相关的双亲记录和子女记录。
3、多对多在网状模型的表示
用网状模型表示多对多的关系
方法:将多对多直接分解成一对多的联系
4、 举例:学生选课模型
它由3个数据项组成,即学号、课程号、成绩,表示某个学生选修某一门课程及其成绩。
每个学生可以选修多门课程。显然对于学生记录中的一个值,选课记录中可以有多个值与之联系。而选课记录中的一个值,只能与学生记录中的一个值联系。学生与选课之间的联系是一对多的联系,联系名为学生-选课。同样,课程与选课之间的联系也是一对多的联系,联系名为课程-选课。
5、 *** 纵
网状模型的数据 *** 作主要包括查询、插入、删除和更新:
插入:插入尚未确定双亲结点值的子结点值;
删除:只允许删除双亲结点值。如可删除一个教研室,而该科研室所有教师的信息仍保留在数据库中。
修改:可直接表示非树状结构,而无须像层次模型那样增加冗余结点,因此修改 *** 作时只需要指定更新记录即可。
网状数据系统(DBTG)对数据加了一些限制,提供了一定的完整性约束:
码:唯一标识记录的数据项集合;
一个联系中双亲记录和子女记录是一对多的关系;
支持双亲记录和子女记录之间的某些约束性条件;
关键:实现记录联系;
常用方法:单向、双向、环向、向首链接;
6、优缺点
网状数据模型的优点如下:
(1) 能够更为直接地描述现实客观世界,可表示实体间的多种复杂联系。
(2) 具有良好的性能,存取效率较高。
网状数据模型的缺点如下:
(1) 结构比较复杂,其数据定义语言(DDL)、数据 *** 作语言(DML)复杂,用户不容易使用。而且应用环境越大,数据库的结构就变得越复杂,不利于最终用户掌握。
(2) 数据独立性差,由于实体间的联系本质上是通过存取路径表示的,因此应用程序在访问数据时要指定存取路径。
关系模型:关系模型是用“二维表”(或称为关系)来表示数据之间的联系的。
1、基本术语
(1)关系(Relation):一个关系对应着一个二维表,二维表就是关系名。
(2)元组(Tuple):在二维表中的一行,称为一个元组。
(3)属性(Attribute):在二维表中的列,称为属性。属性的个数称为关系的元或度。列的值称为属性值;
(4)(值)域(Domain):属性值的取值范围为值域。
(5)分量:每一行对应的列的属性值,即元组中的一个属性值。[2]
(6)关系模式:在二维表中的行定义,即对关系的描述称为关系模式。一般表示为(属性1,属性2,,属性n),如老师的关系模型可以表示为教师(教师号,姓名,性别,年龄,职称,所在系)。
(7)键(码):如果在一个关系中存在唯一标识一个实体的一个属性或属性集称为实体的键,即使得在该关系的任何一个关系状态中的两个元组,在该属性上的值的组合都不同。
(8)候选键(候选码):若关系中的某一属性的值能唯一标识一个元组如果在关系的一个键中不能移去任何一个属性,否则它就不是这个关系的键,则称这个被指定的候选键为该关系的候选键或者候选码。
例如下列学生表中“学号”或“图书证号”都能唯一标识一个元组,则“学号”和“图书证号”都能唯一地标识一个元组,则“学号”和“图书证号”都可作为学生关系的候选键。
而在选课表中,只有属性组“学号”和“课程号”才能唯一地标识一个元组,则候选键为(学号,课程号)。
2、关系模型的数据 *** 作与完整性约束
关系数据模型的 *** 作主要包括查询、插入、删除和修改数据;这些 *** 作必须满足关系的完整性约束条件。
关系模型中数据 *** 作的特点是集合 *** 作方式,即 *** 作对象和 *** 作结果都是集合,这种 *** 作方式也称为一次一集合的方式。
相应地,非关系数据模型的 *** 作方式是一次一记录的方式。
关系的完整性约束条件包括三大类:
实体完整性、参照完整性和用户定义的完整性。
实体完整性定义数据库中每一个基本关系的主码应满足的条件,能够保证元组的唯一性。参照完整性定义表之间的引用关系,即参照与被参照关系。用户定义完整性是用户针对具体的应用环境制定的数据规则,反映某一具体应用所涉及的数据必须满足的语义要求。
3、关系模型的优缺点
优点
(1) 关系模型与非关系模型不同,它是建立在严格的数学理论基础上的。
(2) 关系模型的概念单一,实体与实体间的联系都用关系表示,对数据的检索结果也是关系(即表),所以其数据结构简单、清晰,用户易懂易用。
(3) 关系模型的物理存储和存取路径对用户透明,从而具有更高的数据独立性、更好的安全保密性,简化了程序员的数据库开发工作。
缺点
(1) 由于存取路径对用户透明,查询效率往往不如非关系数据模型高。因此,为了提高性能,必须对用户的查询请求进行优化,这就增加了开发数据库管理系统的难度和负担。
(2) 关系数据模型不能以自然的方式表示实体集间的联系,存在语义信息不足、数据类型过少等弱点。
以上就是关于数据库常见的数据模型有哪三种全部的内容,包括:数据库常见的数据模型有哪三种、当前流行的数据库系统大都采用什么模型、数据库管理系统常见的数据模型有层次模型,网状模型和什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)