数据库系统1-2:实体-联系(E-R)模型

数据库系统1-2:实体-联系(E-R)模型,第1张

实体-联系模型(简称E-R模型)是由PPChen于1976年首先提出的。它提供不受任何DBMS约束的面向用户的表达方法,在数据库设计中被广泛用作数据建模的工具。E-R数据模型问世后,经历了许多修改和扩充,这儿仅介绍基本的E-R数据模型。

1221 E-R模型的结构

E-R模型的构成成分是实体集、属性和联系集,其表示方法如下:

(1) 实体集用矩形框表示,矩形框内写上实体名。

(2) 实体的属性用椭圆框表示,框内写上属性名,并用无向边与其实体集相连。

(3) 实体间的联系用菱形框表示,联系以适当的含义命名,名字写在菱形框中,用无向连线将参加联系的实体矩形框分别与菱形框相连,并在连线上标明联系的类型,即1—1、1—M或M—M。

因此,E-R模型也称为E-R图。例如系、学生和课程的联系的E-R模型

系、学生和课程作为实体集;一个系有多个学生,而一个学生仅属于一个系,所以系和课程之间是一对多的联系;一个学生可以选修多门课程,而一门课程有多个学生选修,所以学生和课程之间是多对多的联系。

1222 E-R模型对几种特殊的实体联系的表示

E-R模型在表示复杂实体和实体之间的复杂联系方面有较强的能力。除了可以明确表示二个实体集之间1—1、1—M或M—M的联系。还可以:

(1) 表示三个以上的实体集之间的联系。

例如,一个售货员(Salesperson)可以将多种商品(Goods)售给一个顾客(Customer),而一个售货员也可以将一种商品售给多个顾客;一个顾客的一种商品可以由多个售货员经售。售货员、商品和顾客三个实体集之间的联系是多对多的三元联系,其E-R模型表(2) 表示一个实体集内部的联系

例如,雇员(EMP)这个实体集中,总经理下设多个部门经理,而部门经理下面有多个雇员。因此,雇员这个实体集中实体之间存在一对多的联系,其E-R模型如图112所示。

(3) 表示二个实体集之间的多种联系

例如,雇员(EMP)和设备(EQUIP)之间可以有多种联系,一种联系是一个设备可以由多个雇员 *** 作(operation),另一种联系是一个雇员可以维修(maintain)多个设备,其E-R模型1223 作E-R图的步骤

(1) 确定实体和实体的属性

(2) 确定实体之间的联系及联系的类型

(3) 给实体和联系加上属性

如何划分实体及其属性有两个原则可作参考:一是作为实体属性的事物本身没有再需要刻画的特征而且和其它实体没有联系。二是属性的一个值可以和多个实体对应,而不是相反。尽管E-R模型中的属性可以是单值属性也可以是多值属性,为简单计,多值属性常常被作为多个属性或作为一个实体(见第6章弱实体)。

例如,职工和部门,一般情况下,一个部门有多个职工,而一个职工仅属于一个部门。所以职工应作为实体,而部门既可作为职工的属性——部门本身仅有一个名称;也可以作为实体——部门具有部门号、部门名称及电话等, 再如,职工和工种,一个工种有多个职工,而一个职工仅属于一个工种,所以职工应作为实体,而工种既可作为职工的属性——工种本身仅有一个名称;也可以作为实体——工种和其它实体,例如和劳保用品有联系,如图115所示。

如何划分实体和联系也有一个原则可作参考:当描述发生在实体集之间的行为时,采用联系集。例如,读者和图书之间的借、还书行为,顾客和商品之间的购买行为,均应该作为联系集。

如何划分联系的属性:一是发生联系的实体的标识属性应作为联系的缺省属性,二是和联系中的所有实体都有关的属性。例如,学生和课程的选课联系中的成绩属性,顾客、商品和雇员之间的销售联系中的商品的数量等。

目前最主流的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是一个典型的图形数据库。

选择哪一种数据模型?

数据模型有着各自的优缺点,它们适用于不同的领域。不管是选择关系模型,还是非关系模型,都要根据实际应用的场景做出选择。也许你会发现单一的数据模型不能满足你的解决方案,许多大型应用可能需要集成多种数据模型。

关系数据模型

Oracle 数据库采用的是关系数据模型,这意味着它使用了关系(表)来存储数据。表是一种二维的数据结构,每一行存储了一条数据记录,而每一列代表一个字段(也称为属性),存储了该记录的特定信息。 在Oracle 中,表可以通过

以上就是关于数据库系统1-2:实体-联系(E-R)模型全部的内容,包括:数据库系统1-2:实体-联系(E-R)模型、当前主流的数据库系统通常采用哪几种模型、oracle数据库采用什么模型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/9369617.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存