IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 1.2 数据模型 -> 正文阅读

[大数据]1.2 数据模型

文章目录


1.2.0 数据模型概念

  • 数据模型是对现实世界数据特征的抽象。
  • 通俗地讲数据模型就是现实世界的模拟
  • 数据模型应满足三方面要求:
  1. 能比较真实地模拟现实世界
  2. 容易为人所理解
  3. 便于在计算机上实现(数据模型最终是令计算机看懂的)
  • 数据模型是数据库系统的核心和基础,数据库发展是沿着数据模型为主线推进的。

1.2.1 两类数据模型

在数据库系统中,根据应用不同的目的和不同的使用对象,可以把不同的模型划分为两大类。

1)数据模型分为两类(分属两个不同的层次)

  1. 概念模型 也称信息模型
    它是按用户的观点来对数据和信息建模,用于数据库设计
  2. 逻辑模型和物理模型
    • 逻辑模型主要包括网状模型、层次模型、关系模型、面向对象模型等
      按计算机系统的观点对数据建模,用于DBMS实现
    • 物理模型是对数据最底层的抽象
      描述数据在系统内部的表示方式和存取方法,在磁盘或磁带上的存储方式和存取方法

2)客观对象的抽象过程—两步抽象

  • 现实世界中的客观对象抽象为概念模型;
  • 把概念模型转换为DBMS支持的数据模型。
    在这里插入图片描述
  • STEP1: 现实世界–> 概念模型,由数据库设计人员完成
  • STEP2: 概念模型–>逻辑模型,数据库设计人员完成,数据库设计工具协助完成;逻辑模型–>物理模型,由DBMS自动完成

1.2.2 概念模型

1)概念模型用途

  • 概念模型用于信息世界的建模
  • 是现实世界到机器世界的一个中间层次
  • 是数据库设计的有力工具
  • 数据库设计人员和用户之间进行交流的语言

例:工厂物质管理的概念模型
工厂物质管理的概念模型

2)对概念模型的基本要求

  • 较强的语义表达能力
  • 简单、清晰、易于用户理解

3)信息世界的基本概念

在这里插入图片描述

(1) 实体(Entity)

  • 客观存在并可相互区别的事物称为实体。
  • 可以是具体的人、事、物或抽象的概念。
    比如,具体的一个学生就是一个实体。

(2) 属性(Attribute)

  • 实体所具有的某一特性称为属性。(如学号,姓名等)
  • 一个实体可以由若干个属性来刻画。

(3) 码 / 键(Key)

  • 唯一标识实体的属性集称为码。

(4) 域(Domain)

  • 属性的取值范围称为该属性的域。

(5) 实体型(Entity Type)

  • 用实体名及其属性名集合来抽象和刻画同类实体称为实体型(如上图中的学生就是实体型),实体一般是具体的人或抽象的事,实体型更强调抽象来刻画实体。

(6) 实体集(Entity Set)

  • 同一类型实体的集合称为实体集(所有的学生就是学生的一个实体集)

(7) 联系(Relationship)

  • 现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。
  • 实体内部的联系:通常是指组成实体的各属性之间的联系
  • 实体之间的联系:通常是指不同实体集之间的联系,有一对一(1 : 1)、一对多(1 : m)和多对多(m : n)等多种类型

4)概念模型的一种表示方法——实体-联系方法

  • E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用E-R图来描述现实世界的概念模型
  • E-R方法也称为E-R模型
    在这里插入图片描述

1.2.3 数据模型的组成要素

  • 数据模型是严格定义的一组概念的集合
    精确地描述了系统的静态特性、动态特性和完整性约束条件(Integrity Constraints)
  • 数据模型由三部分组成
  1. 数据结构–描述系统的静态特性
  2. 数据操作–描述系统的动态特性
  3. 完整性约束

1)数据结构

  • 刻画数据模型性质的重要方面
    数据结构的类型来命名数据模型。例如,层次结构–层次模型、网状结构–网状模型、关系结构–关系模型
  • 描述对象之间的联系

一个网状数据模型实例:
网状数据模型

  • 记录:学生——由学号、姓名所在的专业系名等组成
  • SET TYPE:S-SC——学生记录和学生选课之间的联系

2)数据操作

  • 对数据库中各种对象的实例允许执行的操作,及有关的操作规则

(1)数据操作的类型

  • 查询
  • 更新(插、删、改)

(2)数据操作语言

  • 定义数据操作的确切含义、符号、优先级别
  • 实现数据操作的语言
    1. 查询语言——Query Language
    2. 更新语言——DML

3)数据的完整性约束条件

一组完整性规则的集合

  • 完整性规则:给定的数据模型中数据及其联系所具有的制约和储存规则。(就是数据、数据与数据间的联系要满足一定约束条件,例如在层次模型中,没有双亲结点就不能插入子女结点,这个便是一个完整性约束条件)
  • 为什么规定制约和储存的规则呢?用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。

1.2.4 常用的数据模型

  • 格式化模型:层次模型、网状模型
  • 关系模型(最常用)
  • 对象模型:面向对象的数据模型、对象关系数据模型
  • 半结构化数据模型,如XML
  • 分结构化数据模型、图模型

在格式化模型中用记录表示实体, L i j L_{ij} Lij? 表示 R i R_i Ri? R j R_j Rj?的联系。在格式化模型中,都是基本层次联系的组合。在这里插入图片描述


1.2.5 层次模型

  • 用树形结构来表示各类实体以及实体间的联系

1)表示方法

  • 实体型:用记录类型描述,每个节点表示一个记录类型(实体)
  • 属性:用字段描述
  • 联系:用连线表示实体之间的一对多的父子联系

2)层次模型定义

  • 有且只有一个结点没有双亲结点,这个结点称为根结点
  • 根以外的其它结点有且只有一个双亲结点

3)层次模型的数据结构

类似于,不一定是二叉树
在这里插入图片描述

(1)特点

  • 结点的双亲是唯一的
  • 只能直接处理一对多的实体联系
  • 任何记录值只有按其路径查看,例如找上图中R5的记录,需要R1->R2->R5
  • 没有一个子女记录值能够脱离双亲记录值而独立存在

(2)层次数据库模型与值

下图是一个层次数据库模型,系编号、系名、办公地点是系的字段。
在这里插入图片描述
下图是一个层次数据库模型的一个具体的值,D02、计算机、信息楼是系具体的内容。
在这里插入图片描述

4)层次模型的数据操纵与完整性约束

(1)层次模型的数据操纵

  • 增、删、改、查

(2)层次模型完整性约束

  • 无相应的双亲结点值就不能插入子女结点值
  • 如果删除双亲结点值,则相应的子女结点值也被同时删除
  • 更新操作时,应更新所有相应记录,以保证数据的一致性

5)层次模型的优缺点

  • 优点:
    层次模型的数据结构比较简单清晰
    查询效率高,性能优于关系模型,不低于网状模型
    层次数据模型提供了良好的完整性支持
  • 缺点:
    层次模型直接处理一对多联系,多对多联系可以表示,但表示不自然,比如引入虚拟结点
    对插入和删除操作的限制多,应用程序的编写比较复杂
    查询子女结点必须通过双亲结点
    层次数据库命令趋于程序化,相当于在编程,较为复杂

1.2.6 网状模型

  • 网状数据库系统采用网状模型作为数据的组织方式

1)表示方法(与层次模型相同)

  • 实体型:用记录类型描述
    每个结点表示一个记录类型(实体)
  • 属性:用字段描述
    每个记录类型可包含若干个字段
  • 联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系

2)网状模型定义

  • 允许一个以上的结点无双亲;
  • 一个结点可以有多于一个的双亲。

3)网状模型的数据结构

类似于数据结构中的有向图
双亲结点可以指向子结点,但子结点不能指向双亲结点。
在这里插入图片描述

(1)特点

  • 允许多个结点没有双亲结点,如上图(a)中R1与R2,层次模型中只规定一个结点(根结点)没有双亲
  • 允许结点有多个双亲结点,如上图(a)
  • 允许两个结点之间有多种联系,例如上图(b)中的L1与L2
  • 要为每个联系命名并指出与该联系有关的双亲记录和子女记录

4)多对多在网状模型中的表示

  • 方法:将多对多联系分解成一对多联系

例如,学生与课程的联系是多对多关系,一个学生可以选择多门课程,一门课程可以被多个学生选修
引进一个学生选课的联结记录
在这里插入图片描述
引入联结记录之后,学生与课程的联系是多对多联系分解为:一个学生可以选择多门课(S-SC,一对多),一个课程也可以被多个学生选择(C-SC,一对多)

5)网状模型的数据操纵与完整性约束

  • 导航式的查询语言和增删改操作语言,也就是趋于过程化的。
  • 完整性约束条件不严格
    1. 允许插入尚未确定双亲结点值的子女结点值
    2. 允许只删除双亲结点值
  • 实际的网状数据库系统提供了一定的完整性约束
    例:“属籍类别”的概念
    在这里插入图片描述
    选课是子女结点,学生是其双亲结点之一,学生选课之间通过学号建立联系。
    要求实际数据库模型的值中选课中的学号数据必须是学生中存在的学号数据,这便提供了一定的完整性约束

6)网状模型的优缺点

  • 优点
  1. 能够更为直接地描述现实世界,如一个结点可以有多个双亲;
  2. 具有良好的性能,存取效率较高;
  • 缺点
  1. 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握;
  2. DDL、DML语言复杂,用户不容易使用;

1.2.7 关系模型

  • 关系数据库系统采用关系模型作为数据的组织方式
  • 数据库厂商推出的数据库管理系统几乎都支持关系模型
  • 在用户观点下,关系模型中数据的逻辑结构是一张二维表
    在这里插入图片描述

1)数据结构

  • 关系(Relation)
    一个关系对应通常说的一张表

  • 元组(Tuple)
    表中的一行即为一个元组

  • 属性(Attribute)
    表中的一列即为一个属性,给每一个属性起一个名称即属性名

  • 主码(Key)
    表中的某个属性组,它可以唯一确定一个元组

  • 域(Domain)
    属性的取值范围。例:学生年龄属性的域(15~45岁)

  • 分量
    元组中的一个属性值

  • 关系模式
    对关系的描述,相当于表格中的表头
    关系名(属性1,属性2,…,属性n)
    例如,对学生的描述,学生(学号,姓名,年龄,性别,系,年级)

关系必须是规范化的,满足一定规范条件:

  • 最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表

在这里插入图片描述

上述工资表实例便是表中有表的实例。
在一个工资表大表中,又有工资(表名->工资,属性名->基本工资、岗位津贴、业绩津贴)、扣除小表,不符合关系模型的规范条件。

(1)关系术语与一般表格术语对比

在这里插入图片描述

2)关系数据模型的操纵与完整性约束

(1)关系数据模型的操纵

  • 数据操作是集合操作,操作对象和操作结果都是关系
    • 增、删、改、查
  • 存取路径对用户隐蔽,也就是说用户可以不知道“怎么找”,“在哪里找”,用户只要指出“找什么”提高了数据的独立性,提高了用户生产率

(2)关系的完整性约束

  • 实体完整性
  • 参照完整性
  • 用户定义的完整性

3)关系模型的优缺点

(1)优点

  • 建立在严格的数学概念的基础上,这个数学概念就是关系;
  • 概念单一:
    • 实体和各类联系都用关系来表示;
    • 对数据的检索结果也是关系;
  • 关系模型的存取路径对用户透明,用户不用关系存储路径与具体存储方法
    • 具有更高的数据独立性,更好的安全保密性
    • 简化了程序员的工作和数据库开发建立的工作;

(2)缺点

  • 存取路径对用户透明导致查询效率往往不如非关系数据模型;
  • 为提高性能,必须对用户的查询请求进行优化,增加了开发DBMS的难度;
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:36:19  更:2022-03-12 17:40:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:32:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码