(常见)数据模型

article/2025/9/10 11:00:52

文章目录

      • 数据模型概述
        • 一、数据模型概要
          • 1.模型、建模与抽象
          • 2.数据模型
          • 3.两类数据模型
        • 二、数据库模型的组成要素
          • 1.数据结构
          • 2.数据操作
          • 3.数据的完整性约束
        • 三、概念模型
          • 1.概要
          • 2.基本概念
          • 3.概念模型的表示方法
      • 常用数据模型
        • 一、层次模型
          • 1.简介
          • 2.数据结构
          • 3.数据操纵与完整性约束
          • 4.优缺点
        • 二、网状模型
          • 1.简介
          • 2.数据结构
          • 3.数据操纵与完整性约束
          • 4.优缺点
        • 三、关系模型
          • 1.简介
          • 2.数据结构
          • 3.数据操纵与完整性约束
          • 4.优缺点

数据模型概述

一、数据模型概要

1.模型、建模与抽象
  • 模型:队对研究对象进行抽象的工具。
  • 建模:对研究对象进行抽象的过程。
  • 抽象:对事物进行简化、提取特征或共性,实现模型和事物之间的映射或投影。
2.数据模型
  • 对现实世界数据特征的抽象。
  • 用来描述数据、数据联系、数据语义以及一致性约束的一套概念工具。
  • 是数据库系统的核心和基础
3.两类数据模型
  • 概念模型:又称信息模型,主要用于数据库设计
  • 逻辑模型和物理模型:
    • 逻辑模型主要包括层次模型、网状模型、关系模型等。
    • 物理模型是对数据最底层的抽象,是面向计算机系统的。

二、数据库模型的组成要素

1.数据结构
  • 描述数据库自称对象以及对象之间的联系。
  • 数据结构描述的内容有两类:
    • 与对象的类型、性质、内容有关的。
    • 与数据之间联系有关的。
  • 数据结构是所描述对象类型的集合,是对系统静态特征的描述
2.数据操作
  • 指对数据库中各种对象的实例允许执行的操作的集合。
  • 数据操作是对系统动态特性的描述
3.数据的完整性约束
  • 数据的完整性约束条件是一组完整性规则。
  • 保证数据的正确、有效和相容。

三、概念模型

1.概要
  • 概念模型是现实世界到机器世界的中间层次。

  • 用于信息世界的建模,是现实世界到信息世界的第一次=层抽象。

在这里插入图片描述

2.基本概念
  • 实体(entity):客观存在并可相互区别的事物。

  • 属性(attribute):实体所具有的某一特性称为属性。

  • 码(key):唯一标识实体的属性集。

  • 实体型(entity type):用实体名及其属性名集合来抽象和刻画同类实体。

  • 联系(relationship):实体之间的联系通常指不同实体集之间的联系。

在这里插入图片描述

3.概念模型的表示方法
  • 实体-联系方法
  • 改方法用E-R图来描述现实世界的概念模型。

常用数据模型

一、层次模型

1.简介
  • 层次模型是数据库中最早出现的模型。
  • 树形结构来表示各类实体以及实体间的联系。
2.数据结构
  • 采用树形结构,树的性质决定了树状数据模型的特征。

  • 整个模型中有且仅有一个节点没有父节点,即根节点。

  • 其余的节点必须有且仅有一个父节点。
    在这里插入图片描述

3.数据操纵与完整性约束
  • 数据操纵:主要有查询、插入、删除和更新。
  • 完整性约束:
    • 所有的子节点不能脱离父节点而单独存在。
    • 如果要删除父节点,那么父节点下面的所有子节点都要同时删除。
    • 但是可以单独删除一些叶子节点。
4.优缺点
  • 优点

    • 数据结构简单清晰。
    • 查询效率较高,节点的有向边表示了节点之间的联系。
    • 提供了较好的数据完整性支持。
  • 缺点

    • 不适用于非层次的联系(如多对多的联系)。
    • 缺乏灵活性,若一个结点具有多个双亲结点解决办法复杂且限制修改。
    • 查询节点的时候必须知道其双亲节点。
    • 层次命令趋于程序化。

二、网状模型

1.简介
  • 有向图表示实体和实体之间的联系。
  • 可以看做是放松层次数据模型的约束性的一种扩展。
  • 去掉了层次模型的两个限制:
    • 允许多个节点没有双亲结点。
    • 允许结点有多个双亲结点。
2.数据结构
  • 采用有向图结构,有向图的性质决定了树状数据模型的特征。
  • 可以存在两个或者多个节点没有父节点。
  • 允许单个节点存在多于一个父节点。
3.数据操纵与完整性约束
  • 支持记录码的概念。
  • 保证一个联系中双亲记录和子女记录之间是一对多的联系。
  • 可以支持双亲记录和子女记录之间的某些约束条件。
4.优缺点
  • 优点
    • 可以很方便的表示现实世界中的很多复杂的关系。
    • 具有良好的性能,存储效率较高。
  • 缺点
    • 结构比较复杂。
    • 网状模型的DDL、DML复杂。
    • 编写应用程序负担较重。

三、关系模型

1.简介
  • 实体、实体之间的联系都被映射成统一的关系。
  • 建立在严格的数学概念的基础上。
2.数据结构
  • 每个关系的数据结构都是一张规范化的二维表。
  • 关系(relation):一个关系对应一张表。
  • 元组(tuple):表中的每一即为一个元组。
  • 属性(attribute):表中的每一即为一个属性。
  • 码(key):可以唯一确定一个元组。
  • 域(domain):一组具有相同数据类型的值的集合。
  • 分量:元组中的一个属性值。
    在这里插入图片描述
3.数据操纵与完整性约束
  • 操纵主要包括增删改查
  • 完整性约束包括:实体完整性、参照完整性、用户完整性
  • 操作对象和操作结果都是关系。
4.优缺点
  • 优点

    • 建立在严格的数学概念的基础上。
    • 概念单一,结构简单、清晰。
    • 存取路径对用户透明,具有更高的数据独立性、更好的安全保密性。
  • 缺点:

    • 存取路径对用户隐蔽,查询效率较低。

像一个个纯粹美丽的漩涡,谁拥有那星空却没有因此而沉默。 ——理想后花园《每一颗行星都是你》


http://chatgpt.dhexx.cn/article/Pmw8RwE8.shtml

相关文章

2、机器学习三要素之数据、模型、算法

注: 本系列 课程源于李烨 (微软高级软件工程师)老师的文档 在gitbook 上可以买到李老师课程。 机器学习三要素包括数据、模型、算法。简单来说,这三要素之间的关系,可以用下面这幅图来表示: 总结成一句话:算法通过…

数据库系统的三种数据模型

数据模型: 数据模型(Data Model)是数据特征的抽象。数据(Data)是描述事物的符号记录,模型(Model)是现实世界的抽象。数据模型从抽象层次上描述了系统的静态特征、动态行为和约束条件&#xff0c…

数据模型简介

一张地图、售楼处小区的沙盘、一架精巧的航模飞机都是具体的模型,可以让人联想到真是生活中的事物,模型是对现实世界中某个对象特性的模拟和抽象。 数据模型(data model)也是一种模型,是对现实世界数据特征的抽象。人…

mysql数据模型三要素_数据模型的作用及三要素是什么?

展开全部 数据模型三要素是数据结构、数据操作、数据约束。 1、数据结构 是计算机存储636f707962616964757a686964616f31333431376634、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,即带“结构”的数据元素的集合。。通常情况下,精…

数据库的三种模型

前言 数据模型是数据库系统的核心,本文简要介绍三种主要的数据库模型。 一、格式化模型 格式化模型是层次模型和网状模型的统称 1.层次模型 ① 层次数据模型的概念 层次模型用属性结构来表示各类实体以及实体间的联系 ② 层次模型的数据结构 特点&#xff1a…

关系数据模型的三个组成部分(关系数据模型的三个组成部分)

关系数据模型由什么组成 关系数据模型由含有相同数据类型的若干行组成。每一行有若干个字段。每一个字段各自可以有不同的数据类型。关系模型中的数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合,而不象非关系模型中那样是单…

三种数据模型

数据库的类型是根据数据模型来划分的,而任何一个DBMS也是根据数据模型有针对性地设计出来的,这就意味着必须把数据库组织成符合DBMS规定的数据模型。目前成熟地应用在数据库系统中的数据模型有:层次模型、网状模型和关系模型。它们之间的根本…

数据模型组成要素

最近在看工作机会,目前的公司涨薪的机会渺茫,加上通勤过长。看来换份工作势在必行了。言归正传更新最新学习笔记。 一、数据模型的组成要素 精确地描述了系统的静态特性、动态特性和完整性约束条件三部分组成: 数据结构–描述系统的静态特性 刻画数据模型性质的重要方面 …

java stream 遍历map_遍历map的五种方法介绍

日常开发中Map集合遍历是经常使用的,下面介绍几种遍历方法的差异。 (推荐教程:java课程) 1、IteratorentrySet写法【推荐JDK8以下】,Map.Entry是Map接口的内部接口,获取迭代器,然后依次取出每个迭代器里面的Map.EntryI…

Java中如何遍历Map对象

欢迎支持笔者新作:《深入理解Kafka:核心设计与实践原理》和《RabbitMQ实战指南》,同时欢迎关注笔者的微信公众号:朱小厮的博客。 欢迎跳转到本文的原文链接:https://honeypps.com/java/java-how-to-traverse-map-object/ 博主有时…

java遍历map(java遍历map的key)

java中map集合怎么遍历 遍历方法代码如下: import java.util.HashMap; import java.util.Map; public class App01 { public static void main(String[] args) { Map map1 new HashMap (); map1.put("A", "ABC"); map1.put("B", &qu…

js遍历map(js遍历map对象)

javascript怎么遍历map var map new HashMap();map.put(a,1);map.put(b,2);遍历:var key map.keySet();for (var i in key){ alert(map.get(key[i]));}注:js 中使用map,要先导入一个HashMap.js文件 没要求,引入这个文…

Java中如何遍历Map对象的4种方法

在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等…

遍历map的四种方法

Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>&#xff0c;Map.Entry 是Map中的一个接口&#xff0c;他的用途是表示一个映射项&#xff08;里面有Key和Value&#xff09;&#xff0c;而Set<Map.Entry<K,V>>表示一个映射项的Set。Map.Entry…

遍历Map的六种方式

遍历Map的六种方式 一.创建Map二.遍历Map方式一&#xff1a;使用entrySet遍历(推荐使用)方式二&#xff1a;使用keySet遍历方式三&#xff1a;使用entrySetIterator遍历方式四&#xff1a;使用keySetIterator遍历方式五&#xff1a;使用keySet、values方法遍历方式六&#xff1…

Map.entry详解

Map.entrySet() 这个方法返回的是一个Set<Map.Entry<K,V>>,Map.Entry 是Map中的一个接口,他的用途是表示一个映射项(里面有Key和Value),而Set<Map.Entry<K,V>>表示一个映射项的Set。Map.Entry里有相应的getKey和getValue方法,即JavaBean,让我们…

遍历map的几种方法

#先往map加入几个数据 Map<Integer,String> mapnew HashMap<>();map.put(1,"美好的周一");map.put(2,"美好的周二");map.put(3,"美好的周三");方法一&#xff1a;普通的foreach循环&#xff0c;使用keySet()方法&#xff0c;遍历key…

The operator ‘SUBTRACT‘ is not supported between objects of type ‘null‘ and ‘java.lang.Integer‘

找了半天发现是判断id值是否为空时&#xff0c;数据类型发生转换问题。关于Integer和int在面试的时候出现的频率很高。而我们所熟知的是Integer是int 的包装类型&#xff0c;int的初始值为0&#xff0c;Integer的初始值为null。 org.springframework.expression.spel.SpelEvalu…

Spark Transformation —— subtract

上手使用 def subtract(other: RDD[T]): RDD[T] def subtract(other: RDD[T], numPartitions: Int): RDD[T] def subtract(other: RDD[T], partitioner: Partitioner)(implicit ord: Ordering[T] null): RDD[T] 该函数类似于intersection&#xff0c;但返回在RDD中出现&…