数据库系统概论(二)数据模型

数据库系统概论(二)数据模型

  • 数据库系统概论(二)数据模型
    • 前言
    • 一、数据建模
    • 二、概念模型
    • 三、数据模型的三要素
    • 四、层次模型
    • 五、网状模型
    • 六、关系模型
  • 总结(核心概念速记):


数据库系统概论(二)数据模型

前言

  • 在当今数字化的时代,数据如同企业和组织的血液一般,源源不断地为各种决策和业务流程提供着支持。而数据库作为数据存储和管理的核心工具,其重要性不言而喻。
  • 上一节我们初步介绍了数据库的基本概念,包括数据库、数据库管理系统以及数据库系统的定义和组成等内容。
  • 这一节,我们将深入探讨数据模型这一关键概念,它是理解数据库结构和设计的基础。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

一、数据建模

数据建模是构建数据库的重要前期工作它是对现实世界中的数据及其关系进行抽象和表示的过程。通过数据建模,我们可以将复杂的现实世界信息转化为计算机能够理解和处理的数据结构。数据建模的过程一般包括以下几个步骤:

  1. 需求分析:深入了解用户对数据的需求,包括数据的种类、数据之间的关系以及数据的使用方式等。例如,在一个电商系统中,我们需要了解用户对商品信息、订单信息、用户信息等方面的需求。
  2. 概念设计:根据需求分析的结果,构建一个抽象的概念模型,它不依赖于具体的数据库管理系统,而是以一种易于理解的方式描述数据及其关系。常用的概念模型表示方法是实体-联系(E-R)模型。
  3. 逻辑设计:将概念模型转换为具体的数据库管理系统所支持的数据模型,如关系模型、层次模型或网状模型等。在这个阶段,我们需要考虑数据的完整性、一致性等问题。
  4. 物理设计:根据逻辑设计的结果,确定数据在数据库中的存储结构和访问方式,以提高数据库的性能。

二、概念模型

概念模型是一种面向用户、面向客观世界的数据模型,它以直观的方式描述现实世界中的数据和数据之间的关系。实体-联系(E-R)模型是最常用的概念模型,它主要由以下几个要素组成

  1. 实体:现实世界中存在的可以相互区分的事物或对象,例如学生、教师、课程等。实体可以用矩形表示。
  2. 属性:实体所具有的特征或性质,例如学生的姓名、年龄、学号等。属性可以用椭圆形表示,并用无向边与对应的实体相连。
  3. 联系:实体之间的相互关系,例如学生和课程之间的选课关系。联系可以用菱形表示,并用无向边与相关的实体相连。联系还可以具有不同的类型,如一对一(1:1)、一对多(1:n)和多对多(m:n)。

三、数据模型的三要素

数据模型通常由数据结构、数据操作和完整性约束三要素组成:

  1. 数据结构:用于描述数据的类型、内容、性质以及数据之间的联系等。它是数据模型的基础,不同的数据模型具有不同的数据结构。例如,关系模型的数据结构是二维表,层次模型的数据结构是树形结构。
  2. 数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括查询、插入、删除、更新等操作。数据操作定义了数据模型的动态特性。
  3. 完整性约束:一组完整性规则的集合,用于保证数据库中数据的正确性、一致性和完整性。例如,在关系模型中,常见的完整性约束包括实体完整性、参照完整性和用户定义的完整性。

四、层次模型

  • 层次模型是最早出现的数据模型之一,它以树形结构来表示实体之间的联系。在层次模型中,每个节点表示一个实体,根节点只有一个,其他节点有且仅有一个父节点。
  • 层次模型的优点是结构清晰,易于理解和实现,适合表示具有层次关系的数据,如组织结构、家族关系等。
  • 然而,它也存在一些缺点,例如不适合表示多对多的关系,数据的插入和删除操作可能会受到限制。

在这里插入图片描述

五、网状模型

  • 网状模型是层次模型的扩展,它允许节点有多个父节点,能够更灵活地表示实体之间的复杂关系。网状模型的优点是可以表示多对多的关系,数据的冗余度相对较低。
  • 但是,网状模型的结构比较复杂,用户不容易理解和使用,数据的维护也相对困难
    在这里插入图片描述

六、关系模型

关系模型是目前应用最广泛的数据模型,它以二维表的形式来表示数据和数据之间的关系。在关系模型中,每一个二维表称为一个关系,表中的每一行称为一个元组,每一列称为一个属性。关系模型具有以下优点:

  1. 结构简单:关系模型以二维表的形式表示数据,易于理解和使用。
  2. 数据独立性高:关系模型的数据结构与数据的存储方式相互独立,使得数据的维护和更新更加方便。
  3. 具有坚实的数学基础:关系模型基于关系代数等数学理论,为数据库的查询和操作提供了强大的支持。
    在这里插入图片描述

总结(核心概念速记):

核心概念速记
数据模型 = 数据库的"蓝图"

  • 建模过程:需求分析 → 概念设计 → 逻辑设计 → 物理设计
  • 关键要素:数据结构、数据操作、完整性约束
  • 重要模型:
    概念模型(E-R模型):实体 + 属性 + 联系
    层次模型:树形结构,适合层次关系
    网状模型:层次扩展,可表示多对多
    关系模型:二维表,应用最广泛
    

数据建模步骤对比

步骤主要任务关键产出注意事项
需求分析了解用户需求需求文档全面细致
概念设计构建抽象模型E-R模型不依赖具体系统
逻辑设计转换为具体模型关系/层次/网状模型考虑数据完整一致
物理设计确定存储结构存储和访问方式方案提高数据库性能

模型特点图解

关系模型 —— 结构简单 + 独立性高 + 数学基础坚实↖         ↗
层次模型 —— 结构清晰,适合层次关系↘         ↙
网状模型 —— 可表示多对多,但结构复杂

知识图谱

数据库系统概论(二)数据模型
├─ 数据建模
│  ├─ 步骤:需求分析 → 概念设计 → 逻辑设计 → 物理设计
│  └─ 目的:抽象现实数据为计算机可处理结构
├─ 概念模型
│  ├─ E-R模型:实体 + 属性 + 联系
│  └─ 联系类型:1:1、1:n、m:n
├─ 数据模型三要素
│  ├─ 数据结构:描述数据及关系
│  ├─ 数据操作:查询、插入等操作集合
│  └─ 完整性约束:保证数据正确一致
├─ 数据模型类型
│  ├─ 层次模型:树形结构,优缺点并存
│  ├─ 网状模型:层次扩展,结构复杂
│  └─ 关系模型:二维表,应用广泛
└─ 核心要点├─ 数据模型是数据库设计基础└─ 不同模型各有优劣,应按需选择

以上就是这篇博客的全部内容,下一篇我们将继续探索更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/71917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

清华同方国产电脑能改windows吗_清华同方国产系统改win7教程

清华同方国产电脑能改windows吗?清华同方国产电脑如果采用的是兆芯kx-6000系列或kx-7000系列以及海光c86 3250 3350 X86架构处理器可以安装windows。在安装win7时bios中要关闭“安全启动”和开启legacy传统模式支持,如果是NVME接口的固态硬盘&#xff0c…

安卓Android与iOS设备管理对比:企业选择指南

目录 一、管理方式差异 Android Enterprise方案包含三种典型模式: Apple MDM方案主要提供两种模式: 二、安全防护能力 Android系统特点: 三、应用管理方案 四、设备选择建议 五、典型场景推荐 需求场景 推荐方案 六、决策建议要点…

再聊 Flutter Riverpod ,注解模式下的 Riverpod 有什么特别之处,还有发展方向

三年前我们通过 《Flutter Riverpod 全面深入解析》 深入理解了 riverpod 的内部实现,而时隔三年之后,如今Riverpod 的主流模式已经是注解,那今天就让我们来聊聊 riverpod 的注解有什么特殊之处。 前言 在此之前,我们需要先回忆…

前端项目Axios封装Vue3详细教程(附源码)

前端项目Axios封装Vue3详细教程(附源码) 一、引言 在前端项目开发中,HTTP请求是不可或缺的一部分。Axios作为一个基于Promise的HTTP客户端,因其易用性和丰富的功能而广受欢迎。在Vue3项目中,合理地封装Axios不仅可以提…

手写一个Tomcat

Tomcat 是一个广泛使用的开源 Java Servlet 容器,用于运行 Java Web 应用程序。虽然 Tomcat 本身功能强大且复杂,但通过手写一个简易版的 Tomcat,我们可以更好地理解其核心工作原理。本文将带你一步步实现一个简易版的 Tomcat,并深…

在 UniApp 开发的网站中使图片能够缓存,不一直刷新

在 UniApp 开发的网站中,要使图片能够缓存,不一直刷新,可以考虑以下几种方法: 1. 使用适当的 HTTP 缓存头 确保你的服务器在响应图片时,返回合适的缓存控制 HTTP 头。以下是一些常用的 HTTP 头来控制缓存&#xff1a…

Makefile——make工具编译STM32工程

一、Makefile相关指令 1.1、变量 符号含义替换追加:恒等于 1.2、隐含规则 符号含义%.o任意的.o文件*.o所有的.o文件 1.3、通配符 符号含义$^所有依赖文件$所有目标文件$<所有依赖文件的第一个文件 1.4、编译器指令常用参数功能说明 符号含义举例-E预处理&#xff0c;…

深入理解Linux文件系统权限:从基础到高级应用全解析

1. 什么是文件系统权限&#xff1f;它是如何工作的&#xff1f; 文件权限的本质 想象你的电脑是一个大房子&#xff0c;每个文件和目录都是房间里的物品。文件系统权限就像是一把钥匙&#xff0c;决定谁能进房间、能看什么、能修改什么。 权限三要素&#xff1a; 读&#xff…

C语言:6.22练习题数组解答

#include <stdio.h> #include <string.h> // 用于 strlen() int main() {char a[100];int j 0;// 从用户输入读取字符串printf("请输入一个字符串: ");fgets(a, sizeof(a), stdin);// 遍历字符串中的每个字符for (int i 0; i < strlen(a); i) {if (…

一、docker的安装

一、docker桌面 二、docker的配置文件 1、docker配置文件位置/etc/docker/daemon.json 使用json格式&#xff0c;graphdata-root {"graph":"/deploy/docker","registry-mirrors": ["https://8auvmfwy.mirror.aliyuncs.com"],"…

Matlab 多项式拟合点法线(二维)

文章目录 一、简介二、实现代码三、实现效果一、简介 这个思路其实很简单,假设我们有一组曲线点,我们可以对其拟合曲线并计算其导数来获取每个点的法向量,当然这一思路也可以扩展至三维。具体过程如下所示: 二、实现代码 %% *********

DeepSeek-R1 论文阅读总结

1. QA问答&#xff08;我的笔记&#xff09; Q1: DeepSeek如何处理可读性问题&#xff1f; 通过构建冷启动数据&#xff08;数千条长CoT数据&#xff09;微调基础模型&#xff0c;结合多阶段训练流程&#xff08;RL训练、拒绝采样生成SFT数据&#xff09;&#xff0c;并优化输…

Manus AI:多语言手写识别的技术革命与未来图景

摘要&#xff1a;在全球化浪潮下&#xff0c;跨语言沟通的需求日益迫切&#xff0c;但手写文字的多样性却成为技术突破的难点。Manus AI凭借其多语言手写识别技术&#xff0c;将潦草笔迹转化为精准数字文本&#xff0c;覆盖全球超百种语言。本文从技术原理、应用场景、行业价值…

Flutter——最详细原生交互(MethodChannel、EventChannel、BasicMessageChannel)使用教程

MethodChannel&#xff08;方法通道&#xff09; 用途&#xff1a;实现 双向通信&#xff0c;用于调用原生平台提供的 API 并获取返回结果。 场景&#xff1a;适合一次性操作&#xff0c;如调用相机、获取设备信息等。 使用步骤&#xff1a; Flutter 端&#xff1a;通过 Meth…

Python控制语句-循环语句-while

1.若k为整形,下述while循环执行的次数为()。 k=1000 while k>1: print(k) k=k/2 A、9 B、10 C、11 D、100 答案:A。k=k/2意味着每循环一次,k的值就会变为原来的一半,直到k的值不大于1。 2.下面的代码,哪些会输出1,2,3三个数字( )。 A、 for i in range(3): print(i) …

十二天-双指针技术:链表问题的高效解法

一、双指针技术分类 1. 同速双指针&#xff08;同向移动&#xff09; 特点&#xff1a;两个指针以相同速度移动适用场景&#xff1a; 链表逆序查找倒数第 k 个元素删除倒数第 n 个节点 2. 快慢双指针&#xff08;异速移动&#xff09; 特点&#xff1a;一个指针每次移动 1 步…

【vllm】Qwen2.5-VL-72B-AWQ 部署记录

版本&#xff1a;0.7.2 注意事项&#xff1a; export LD_LIBRARY_PATH/home/xxxxx/anaconda3/envs/xxxxx/lib/python3.10/site-packages/nvidia/nvjitlink/lib:$LD_LIBRARY_PATH # 如果报错可能需要Also pip install --force-reinstall githttps://github.com/huggingface/tra…

深度学习与大模型-张量

大家好&#xff01;今天我们来聊聊张量&#xff08;Tensor&#xff09;。别被这个词吓到&#xff0c;其实它没那么复杂。 什么是张量&#xff1f; 简单来说&#xff0c;张量就是一个多维数组。你可以把它看作是一个装数据的容器&#xff0c;数据的维度可以是一维、二维&#…

【前端面试题】Vu3常见的面试题

1.Vue3与 Vue2的核心区别有哪些&#xff1f; ‌ 响应式系统 ‌&#xff1a; ‌ Vue2&#xff1a;通过Object.defineProperty 实现响应式。这种方式在处理对象属性的添加和删除时存在局限性&#xff0c;且无法直接监控数组的变化 ‌;‌Vue3&#xff1a;采用Proxy 实现响应式&…

Android 粘包与丢包处理工具类:支持多种粘包策略的 Helper 实现

在Android开发中&#xff0c;处理TCP/UDP通信时&#xff0c;粘包和丢包是常见的问题。粘包是指多个数据包被接收方一次性接收&#xff0c;导致数据包之间的界限不清晰&#xff1b;丢包则是指数据包在传输过程中丢失。为了处理这些问题&#xff0c;我们可以编写一个帮助类 Packe…