上一篇文章简单介绍了概念数据模型、逻辑数据模型、物理数据模型的基本概念、特性以及三者所对应的数据库的开发阶段。现在针对逻辑数据模型中所用到的三种数据模型---层次数据模型、网状数据模型以及关系数据模型做一个相信的介绍与对比分析。

  一、层次数据模型

  定义:层次数据模型是用树状<层次>结构来表示实体类型和实体间联系的数据模型。(来自百度百科)

  其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录。

  特征:树的性质决定了树状数据模型的特征

     1. 整个模型中有且仅有一个节点没有父节点,其余的节点必须有且仅有一个父节点,但是所有的节点都可以不存在子节点;

     2. 所有的子节点不能脱离父节点而单独存在,也就是说如果要删除父节点,那么父节点下面的所有子节点都要同时删除,但是可以单独删除一些叶子节点;

     3. 每个记录类型有且仅有一条从父节点通向自身的路径;

  实例:

     如图1,以学校某个系的组织结构为例,说明层次数据模型的结构。

     1.  记录类型系是根节点,其属性为系编号和系名;

     2.  记录类型教研室和学生分别构成了记录类型系的子节点,教研室的属性有教研室编号和教研室姓名,学生的属性分别是学号、姓名和成绩;

3.  记录类型教师是教研室这一实体的子节点,其属性由教师的编号,教师的姓名,教师的研究方向。

  优点:

      1. 层次数据模型的结构简单、清晰、明朗,很容易看到各个实体之间的联系;

     2. 操作层次数据类型的数据库语句比较简单,只需要几条语句就可以完成数据库的操作;(百度百科)

     3. 查询效率较高,在层次数据模型中,节点的有向边表示了节点之间的联系,在DBMS中如果有向边借助指针实现,那么依据路径很容易找到待查的记录;

     4. 层次数据模型提供了较好的数据完整性支持,正如上所说,如果要删除父节点,那么其下的所有子节点都要同时删除;如图1,如果想要删除教研室,则其下的所有教师都要删除;

  缺点:

         1. 层次数据模型只能表示实体之间的1:n的关系,不能表示m:n的复杂关系,因此现实世界中的很多模型不能通过该模型方便的表示;

         2. 查询节点的时候必须知道其双亲节点的,因此限制了对数据库存取路径的控制;

图 1. 院系人员组成结构图

  二、网状数据模型

  定义:用有向图表示实体和实体之间的联系的数据结构模型称为网状数据模型。

  其实,网状数据模型可以看做是放松层次数据模型的约束性的一种扩展。网状数据模型中所有的节点允许脱离父节点而存在,也就是说说在整个模型中允许存在两个或多个没有根节点的节点,同时也允许一个节点存在一个或者多个的父节点,成为一种网状的有向图。因此节点之间的对应关系不再是1:n,而是一种m:n的关系,从而克服了层次状数据模型的缺点。

  特征:

     1. 可以存在两个或者多个节点没有父节点;

     2. 允许单个节点存在多于一个父节点;

  网状数据模型中的,每个节点表示一个实体,节点之间的有向线段表示实体之间的联系。网状数据模型中需要为每个联系指定对应的名称。

  实例:  

     同样是以教务管理系统为例,下面说明了院系的组成中,教师、学生、课程之间的关系。

图 2. 院系的教务管理系统

    由上图中可以看出课程(实体)的父节点由专业、教研室、学生。以课程和学生之间的关系来说,他们是一种m:n的关系,也就是说一个学生能够选修多门课程,一门课程也可以被多个学生同时选修。

  优点:

     1. 网状数据模型可以很方便的表示现实世界中的很多复杂的关系;

     2. 修改网状数据模型时,没有层次状数据模型的那么多的严格限制,可以删除一个节点的父节点而依旧保留该节点;也允许插入一个没有任何父节点的节点,这样的插入在层次状数据模型中是不被允许的,除非是首先插入的是根节点;

     3. 实体之间的关系在底层中可以借由指针指针实现,因此在这种数据库中的执行操作的效率较高;

  缺点:

     1. 网状数据模型的结构复杂,使用不易;

     2. 网状数据模型数据之间的彼此关联比较大,该模型其实一种导航式的数据模型结构,不仅要说明要对数据做些什么,还说明操作的记录的路径;

  三、关系型数据模型

  关系型数据模型对应的数据库自然就是关系型数据库了,这是是目前笔者最熟悉的数据库。

  定义:使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。

  关系型数据库是目前最流行的数据库,同时也是被普遍使用的数据库,如MySQL就是一种流行的数据库。支持关系数据模型的数据库管理系统称为关系型数据库管理系统。

  特征:

     1. 关系数据模型中,无论是是实体、还是实体之间的联系都是被映射成统一的关系---一张二维表,在关系模型中,操作的对象和结果都是一张二维表;

     2. 关系型数据库可用于表示实体之间的多对多的关系,只是此时要借助第三个关系---表,来实现多对多的关系,如下例子中的学生选课系统中学生和课程之间表现出一种多对多的关系,那么需要借助第三个表,也就是选课表将二者联系起来;

     3. 关系必须是规范化的关系,即每个属性是不可分割的实体,不允许表中表的存在;

  实例:

     下面以学生选课系统为例进行说明。学生选课系统的实体包括:学生、教师、课程;其联系一般为学生与课程之间是一种多对多的关系,教师与课程之间是多对多的关系。学生可以同时选择多门课程,一门课程也可以同时被多个学生同时选择;一位教师可以教授多门课程,一门可能可以由多个教师教授。因此他们之间的联系如下:

图 3 学生选课系统示意图

  将该图映射为关系数据模型中的表格为图4。从中可以看到学生与课程之间的联系以及教师和课程之间的多对多联系都被映射成了表格。其中选课表中的sut_id和cour_id分别是引用学生表和课程表的cour_id的外键;教课表也是如此。

图 4 关系数据模型的表格

  优点:

     1. 结构简单,关系数据模型是一些表格的框架,实体的属性是表格中列的条目,实体之间的关系也是通过表格的公共属性表示,结构简单明了;

     2. 关系数据模型中的存取路径对用户而言是完全隐蔽的,是程序和数据具有高度的独立性,其数据语言的非过程化程度较高;

     3. 操作方便,在关系数据模型中操作的基本对象是集合而不是某一个元祖;

     4. 有坚实的数学理论做基础,包括逻辑计算、数学计算等;

  缺点:

     1. 查询效率低,关系数据模型提供了较高的数据独立性和非过程化的查询功能(查询的时候只需指明数据存在的表和需要的数据所在的列,不用指明具体的查找路径),因此加大了系统的负担;

     2. 由于查询效率较低,因此需要数据库管理系统对查询进行优化,加大了DBMS的负担;

  关系数据模型的三种约束完整性:

  关系数据模型定义了三种约束完整性:实体完整性、参照完整性以及用户定义完整性。

  实体完整性:实体完整性是指实体的主属性不能取空值。实体完整性规则规定实体的所有主属性都不能为空。实体完整性针对基本关系而言的,一个基本关系对应着现实世界中的一个主题,例如上例中的学生表对应着学生这个实体。现实世界中的实体是可以区分的,他们具有某种唯一性标志,这种标志在关系模型中称之为主码,主码的属性也就是主属性不能为空。

  参照完整性:在关系数据库中主要是值得外键参照的完整性。若A关系中的某个或者某些属性参照B或其他几个关系中的属性,那么在关系A中该属性要么为空,要么必须出现B或者其他的关系的对应属性中。如上表中的选课关系的stu_id和cour_id分别是参考学生和课程的外键,那么对于现实的系统而言,stu_id和cour_id必须分别出现在学生和课程关系中,这就是外键参考的完整性,同时删除的时候根据设置的不同有不同的处理方式。

  用户定义完整性:用户定义完整性是针对某一个具体关系的约束条件。它反映的某一个具体应用所对应的数据必须满足一定的约束条件。例如,某些属性必须取唯一值,某些值的范围为0-100等。

逻辑数据模型之层次数据模型、网状数据模型和关系数据模型相关推荐

  1. 【空间数据库】传统数据模型(层次、网状、关系)和空间数据模型详解

    数据模型是指数据库的组织形式,它决定了数据库中数据之间联系的表达方式,即把在计算机中表示客观事物及其联系的数据及结构称为数据模型.本文详细讲述传统三大数据模型和空间数据模型. 一.数据模型概述 数据模 ...

  2. mysql是网状_三种数据模型---层次模型、网状模型以及关系模型

    本文转载自:http://www.cnblogs.com/yue-blog/p/6010527.html 一.层次数据模型 定义:层次数据模型是用树状结构来组织数据的数据模型. 其实层次数据模型就是的 ...

  3. 三种数据模型---层次模型、网状模型以及关系模型

    一.层次数据模型 定义:层次数据模型是用树状<层次>结构来组织数据的数据模型. 其实层次数据模型就是的图形表示就是一个倒立生长的树,由基本数据结构中的树(或者二叉树)的定义可知,每棵树都有 ...

  4. 计算机二级access知识点6,2019年计算机二级ACCESS考试知识点:关系数据模型

    [导语]2019年计算机二级考试备考正在进行中,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2019年计算机二级ACCESS考试知识点:关系数据模型,欢迎大家的关注.如想获取更多计算机二级 ...

  5. 第三章 关系数据模型

    3.1 关系数据模型和关系数据库 关系数据模型:由关系数据结构.关系操作集合和关系完整性约束三大要素组成. 1.关系数据结构:关系模型把数据库表示为关系的集合(关系模型中数据的逻辑结构是一张二维表). ...

  6. 关系型数据库(一)---关系数据模型与关系

    文章目录 前言 一.数据模型 1.什么是数据模型 2.数据模型的基本要素 (1)数据结构 (2)数据操作 (3)数据的约束条件 二.关系数据模型 1.关系数据模型的基本概念 (1)关系实例 (2)关系 ...

  7. 第3章 关系数据模型

    数据模型 数据模型的三要素 数据结构 数据操作 数据的完整性约束 关系模型 1. 关系.关系模式.关系数据库 关系模式,关系的逻辑结构和特征描述,对应于二维表格的表头 关系,关系模式的实例,即二维表( ...

  8. 第三讲 关系数据模型

    第三讲 关系数据模型 关系数据模型 第三讲 关系数据模型 3.1关系 3.2关系的码 3.3关系模式 3.4从E-R模型到关系模型 3.5关系的完整性约束 3.6关系代数的五种基本运算 3.7附加的关 ...

  9. 关系数据模型、基本概念、关系模型的基本术语、关系代数

    关系数据模型 关系数据模型 关系模型由关系模型的数据结构.关系模型的操作集合和关系模型的完整性约束三部分组成,这三部分也称为关系模型的三要素. 数据结构 关系数据模型源于数学,它用二维表来组织数据,而 ...

最新文章

  1. My Appointment - Belonging to me, Search by team, Search by group
  2. tensorflow环境下的识别食物_在TensorFlow+Keras环境下使用RoI池化一步步实现注意力机制...
  3. nlp中的经典模型(三)
  4. Android 3.0 SDK 最新官方下载
  5. MySQL初步研究数据库
  6. Beego 框架学习(一)
  7. 2811路由器系统导入到服务器,配置CISCO2811路由器的E1连接
  8. nvidia驱动和CUDA的安装
  9. 微信公众号 模板消息 定时推送 java
  10. android面板驱动的使用方法,Android 专用驱动之Ashmen
  11. Python学习笔记(7)文件读写2 Numpy
  12. 腾讯T4级架构师用21个项目带你吃透379页深度学习TensorFlow实践pdf
  13. 每天一段,成功拿到你心仪的offer
  14. Excel操作技巧:三列内容合并生成到另外一列中;在判断某列里面的值在另外列中是否存在
  15. 前端之TypeScript(TS)
  16. 使用Goods类创建十个商品 第四章 面向对象(上)课堂作业2
  17. 十二个“一”与耍猴(互动媒体技术作业)
  18. 转载 在windows下系统硬盘安装Fedora20
  19. RomUtil【Android判断手机ROM,用于判断手机机型】
  20. 白话 贝叶斯公式_通俗易懂!白话朴素贝叶斯

热门文章

  1. 【tip】关于numLock“失灵”,按动之后指示灯不亮,无法解锁小键盘问题
  2. MYSQL——内置函数
  3. ios view添加上边框_让不懂编程的人爱上iPhone开发(2018秋iOS12+Swift4.2+Xcode10版)-16
  4. [Python]指定搜索关键字,通过网页获取bilibili的相关视频信息
  5. 股市总市值续写新高 资本大国正在崛起
  6. 如何阅读一本书 节选
  7. PHP代码加密/代码保护php-beast
  8. kkb接单平台项目与读书笔记
  9. 怎么用计算机抽奖,职称计算机考试:Excel轻松制作抽奖系统
  10. 将CNN与RNN组合使用,天才还是错乱?