(常见)数据模型

文章目录

      • 数据模型概述
        • 一、数据模型概要
          • 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://www.mfbz.cn/a/24305.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ZYNQ】ZYNQ7000 UART 控制器及驱动应用示例

UART 简介 我们在使用 PS 的时候,通常会添加 UART 控制器,用于打印信息和调试代码。除此之外,PS 在和外 部设备通信时,也会经常使用串口进行通信。 UART 控制器 UART 控制器是一个全双工异步收发控制器,ZYNQ 内部包…

教你一步步使用实现TensorFlow 进行对象检测

在本文中,我们将学习如何使用 TensorFlow Hub 预训练模型执行对象检测。TensorFlow Hub 是一个库和平台,旨在共享、发现和重用预训练的机器学习模型。TensorFlow Hub 的主要目标是简化重用现有模型的过程,从而促进协作、减少冗余工作并加速机器学习的研发。用户可以搜索社区…

Linux内核源码分析-进程调度(五)-组调度

出现的背景 总结来说是希望不同分组的任务在高负载下能分配可控比例的CPU资源。为什么会有这个需求呢,假设多用户计算机系统每个用户的所有任务划分到一个分组中,A用户90个任务,而B用户只有10个任务(这100个任务假设都是优先级一…

Python 下载的 11 种姿势,一种比一种高级

今天我们一起学习如何使用不同的Python模块从web下载文件。此外,你将下载常规文件、web页面、Amazon S3和其他资源。 通过本文的学习,你将学到如何克服可能遇到的各种挑战,例如下载重定向的文件、下载大型文件、完成一个多线程下载以及其他策…

C# WPF窗体设计器显示以及App.xaml文件打不开(VS 2022)

问题描述: 在项目中遇到了App.xaml设计器打不开以及窗体设计器不显示,只有代码,如图所示: 可以明显的看见左下角的设计器不见,但是用户控件又有设计器 解决方法: (一、App.xaml不能正常打开) ①清理项…

定薪17K*15,阿里测开岗上岸面经分享....

先简单介绍一下我自己吧,等会大家以为我是什么学历狂人,技术大牛,我毕业于广东一个普通本科院校,绝对不是什么双一流大学,大家不要有距离感,这也是我为什么来分享的原因,因为我觉得我这段经验还…

硬件软件【部署】

开发板和主机 1.功能不同:帮助开发者进行嵌入式系统的开发和调试,具有较强的硬件拓展能力,可以连接各种传感器/执行器等外设。主机为满足一般的计算需求而设计,具备更强的计算和图形处理能力。 2.架构不同:开发板通常…

【接口测试】JMeter测试WebSocket接口

目录 一、WebSocket简介 二、JMeter测试WebSocket接口 三、WebSocket和Socket的区别 最近老被问到WebSocket,突然想到以前大学时上Java课的时候,老师教我们socket连接,一个同学电脑做客户端,一个同学电脑做服务端,…

LAMP平台搭建

文章目录 LAMP概述安装apache安装mysql安装php LAMP概述 LAMP架构是目前成熟的企业网站应用模式之一,指的是协同工作的一整套系统和相关软件,能够提供动态Web站点服务及其应用开发环境。LAMP是一个缩写词,具体包括Linux操作系统、Apache网站…

Java --- 期末复习卷

一、单选题 1.所有Java应用程序主类必须有一个名叫( )的方法。[ ] A.method B.main() C.java() D.hello 2.编写并保存了一个Java程序文件之后,( )它。[ …

node笔记_http服务搭建(渲染html、json)

文章目录 ⭐前言⭐初始化项目调整npm 的script运行入口搭建hello world的http服务npm run dev执行主函数的http服务 ⭐http返回类型html模板文件返回安装express渲染html的字符串 渲染html文件 sendFile渲染json返回数据类型 res.json ⭐结束 ⭐前言 大家好,我是ym…

TensorFlow 1.x学习(系列二 :4):自实现线性回归

目录 线性回归基本介绍常用的op自实现线性回归预测tensorflow 变量作用域模型的保存和加载 线性回归基本介绍 线性回归: w 1 ∗ x 1 w 2 ∗ x 2 w 3 ∗ x 3 . . . w n ∗ x n b i a s w_1 * x_1 w_2 * x_2 w_3 * x_3 ... w_n * x_n bias w1​∗x1​w2​∗…

MySQL 对日期使用 DATE_FORMAT()函数

文章目录 DATE_FORMAT()函数显示今天是星期几只显示年月显示当前时间的分钟数和秒数 DATE_FORMAT()函数 前面使用日期时间函数,获取到的要么是 yyyy-mm-dd 形式的日期,要么是 hh:MM:ss 形式的时间,或者是 yyyy-mm-dd hh:mm:ss 形式的日期及时…

算法基础学习笔记——⑧堆\哈希表

✨博主:命运之光 ✨专栏:算法基础学习 目录 ✨堆 🍓堆模板: ✨哈希表 🍓一般哈希模板: 🍓字符串哈希模板: 前言:算法学习笔记记录日常分享,需要的看哈O(…

Qt文件系统源码分析—第六篇QSaveFile

深度 本文主要分析Windows平台,Mac、Linux暂不涉及 本文只分析到Win32 API/Windows Com组件/STL库函数层次,再下层代码不做探究 本文QT版本5.15.2 类关系图 QTemporaryFile继承QFile QFile、QSaveFile继承QFileDevice QFileDevice继承QIODevice Q…

远程访问本地jupyter notebook服务 - 无公网IP端口映射

文章目录 前言视频教程1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 转载自远控源码文章:公网远程访问jupyter notebook【cpolar内网穿透】 前言 Jupyter Notebook&am…

网络原理(六):http 协议(上)

目录 HTTP 协议是什么 抓包工具 Fiddler 的下载 使用Fiddler HTTP 请求 (Request) HTTP 请求格式 首行 请求头(Header) Cookie HTTP 协议是什么 还是老样子,在讲解http 之前我们先来了解以下什么叫做 http 。 HTTP(Hyp…

(转载)从0开始学matlab(第14天)—while循环结构

循环(loop) 是一种 matlab 结构,它允许我们多次执行一系列的语句。循环结构有两种基本形式 :while 循环和 for 循环。两者之间的最大不同在于代码的重复是如何控制的。在while 循环中,代码的重复的次数是不能确定的,只要满足用户定义的条件…

整理6个超好用的在线编辑器!

随着 Web 开发对图像可扩展性、响应性、交互性和可编程性的需求增加,SVG 图形成为最适合 Web 开发的图像格式之一。它因文件小、可压缩性强并且无论如何放大或缩小,图像都不会失真而受到欢迎。然而,为了编辑 SVG 图像,需要使用 SV…

《五》 Git 中的标签和分支

标签 tag: Git 可以给仓库中某一次 commit 的提交打上标签。对于重大的版本经常会打上一个标签来表示它的重要性。 创建标签: git tag【tag 名称】:创建标签。 查看标签: git tag:查看标签。 推送标签到远程仓库…