数据模型概念

news2025/3/11 0:44:09

一、概念

(1) 定义

在数据库系统中针对不同的使用对象和应用目的,采用不同的数据模型。根据模型的应用的不同目的,可以将这些模型划分为两类:

(2) 分类

A:概念数据模型

  • 它也称信息模型
  • 它是按用户的观点(观念世界)来对数据和信息建模,主要用于数据库设计

B:DBMS支持的基本数据模型

  • 它是按计算机系统的观点进行(机器世界)数据建模,主要用于DBMS的实现
  • 主要包括层次模型、网状模型、关系模型等等

(3) 数据模型的三要素

A:数据结构

  • 数据结构描述数据库的组成对象以及对象之间的联系
  • 数据结构用于描述系统的静态特性
  • 通常按照数据结构的类型来命名数据模型
    • 层次结构——层次模型
    • 网状结构——网状模型
    • 关系结构——关系模型

B:数据操作

  • 数据操作是指对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则
  • 数据库主要有检索和修改(包括插入、删除、更新)两大类操作
  • 数据模型必须定义这些操作的确切含义、操作符号、操作规则(如优先级)以及实现操作的语言
  • 数据操作用于描述系统的动态特征

说白了,就是你想咋 “动” 这些数据

C:数据完整性约束

  • 数据完整性约束是一组完整性规则的集合
  • 完整性规则是给定的数据模型中数据及其联系所具有的制约和储存规则,用以限制符合数据模型的数据库状态以及状态的变化,用以确保数据的正确、有效和相容

下面我们会分别,就概念数据模型基本数据类型两者进行较为详细的介绍

(二) 概念模型

(1) 定义

概念模型是从现实世界中抽取出对于一个目标应用系统来说最有用的事物、事物特征以及事物之间的联系,通过各种概念精确地加以描述

简单的说就是:概念模型,就是按照用户的观点来对信息进行建模

(2) 必知概念

A:实体(Entity)

客观存在并可相互区别的客观事物或抽象事件称为实体

  • 就好比你脑海中对一个东西或事物的反映
  • 实体可以指人,如一名学生、一名工人等;也可以指东西,如一台电脑、一个桌子、一个杯子等
  • 实体不仅可以指实际的事物,还可以指抽象的事物,如一次拜访、一次野餐、购物、演出、篮球赛等
  • 甚至还可以指事物与事物之间的联系,如“学生选课记录”和“用户订餐记录”等

B:属性(Attribute)

属性是指实体所具有的某一方面的特性

  • 一个实体可有多个属性,例如,学生的属性有姓名、年龄、性别、学院等。

属性值:属性所取的具体值称作属性值

  • 例如,一名学生,其中一个属性 “姓名” 的取值 为 “张三”

C:域(Domain)

一个属性可能取的所有属性值的范围称为该属性的域

  • 例如,教师属性“性别”的域为男、女;教师属性“职称”的域为助教、讲师、副教授、教授等
由此可见,每个属性都是个变量,属性值就是变量所取的值,而域则是变量的变化范围
因此,属性是表征实体的最基本的信息

D:码(Key)

惟一标识实体的属性集称为码

  • 唯一!唯一!唯一!
  • 例如学号是学生实体的码,一个学号就能确定这个学生到底哪个

E:实体型(Entity Type)

具有相同属性的实体必然具有共同的特性和性质,用实体名及其属性名集合来抽象和刻画同类实体,称为实体型

  • 例如,学生(姓名,年龄,性别,学院)就是一个实体型

F:实体集(Entity Set)

同一类型实体的集合。例如,某一学校中的学生具有相同的属性,他们就构成了实体集 “学生”

(2) 实体间联系

现实世界中事物彼此的联系在概念模型中反映为实体间的联系

  • 实体内部的联系通常是指组成实体的各属性之间的联系
  • 实体之间的联系通常是指不同实体集之间的联系

如上图,常见的联系有这么几种

定义就不给了,很繁琐枯燥,举几个例子很容易理解:

A:一对一

学校里,实体集班级与实体集班长之间的就具有1:1联系

  • 一个班级只有一个班长,而一个班长只在一个班中任班长职务

B:一对多

例如,实体集班级与实体集学生就是一对多联系

  • 因为一个班级中有若干名学生,而每个学生只在一个班级中学习。

C:多对多

实体集课程与实体集学生之间的联系是多对多联系(m:n)

  • 因为一个课程同时有若干名学生选修,而一个学生可以同时选修多门课程。

实体型之间的这种一对一、一对多、多对多联系不仅存在于两个实体型之间,也存在于两个以上的实体型之间。

  • 例如,对于课程、教师与参考书三个实体型,如果一门课程可以有若干个教师讲授,使用若干本参考书,而每一个教师只讲授一门课程,每一本参考书只供一门课程使用,则课程与教师、参考书之间的联系是一对多的

(三) 基本数据模型

目前常用的数据模型有三种:

  • ① 层次模型
  • ② 网状模型
  • ③ 关系模型

其中层次模型和网状模型统称为非关系模型

层次模型(Hierarchical Model) 网状模型(Network Model) 关系模型(Relational Model) 半结构化数据模型(Semistructured-data Model) 面向对象模型(Object Oriented Model) 对象关系模型(Object Relational Model)

(1) 层次模型

A:基本概念

用树型结构来表示实体之间联系的模型称为层次模型

构成层次模型的树是由结点和连线组成的,结点表示实体集(文件或记录型),连线表示相连两个实体之间的联系

这种联系只能是一对一,一对多的!!!

通常把表示“一”的实体放在上方,称为父结点,而把表示“多”的实体放在下方,称为子结点

根据树结构的特点,建立数据的层次模型需要满足下列两个条件:

  • 有且仅有一个结点没有父结点,这个结点即为树根结点
  • 其他数据记录有且仅有一个父结点

就如上图就是一个层次模型的例子

B:特点

层次模型的一个基本的特点是,任何一个给定的记录值只有按其路径查看时,才能现出它的全部意义,无一个子女记录值能够脱离双亲记录值而独立存在

层次模型最明显的特点是层次清楚、构造简单以及易于实现,它可以很方便地表示出一对一和一对多这两种实体之间的联系。

C:优点

  • 层次模型的数据结构比较简单;
  • 层次数据库的查询效率高;
  • 因记录间的联系用有向边表示,在DBMS中用指针来实现,路径明确,快速

D:缺点

  • 对于非层次性的,如多对多联系、一个结点具有多个双亲等,层次模型表示这类联系就很难受,只能通过引入冗余数据(易产生不一致性)或创建非自然组织(引入虚结点)来解决
  • 对插入和删除操作的限制比较多
  • 查询子结点必须通过双亲结点
  • 由于结构严密,层次命令趋于程序化

(2) 网状模型

A:基本概念

网状模型和层次模型在本质上是一样的,简单对比分析一下:

  • 从逻辑上看它们都是用连线表示实体之间的联系,用结点表示实体集
  • 从物理上看,层次模型和网络模型都是用指针来实现两个文件之间的联系
  • 其差别仅在于网状模型中的连线或指针更加复杂,更加纵横交错,从而使数据结构更复杂

网状模型去掉了层次模型的两个限制(下面的 ① ② 点),所以它是一种比层次模型更具普遍性的结构,

在数据库中,把满足以下条件的基本层次联系集合称为网状模型:

  • ① 允许一个以上的结点没有双亲结点
  • ②一个节点可以有多于一个双亲节点
  • ③ 允许两个节点之间有多种联系

网状模型可以直接表示实体之间多对多的联系

B:优点

  • 能够更为直接地描述现实世界,如一个结点可以有多个双亲
  • 具有良好的性能,存取效率较高

C:缺点

  • 结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于用户最终掌握
  • 其DDL,DML语言复杂,用户不容易使用

(3) 关系模型

A:基本概念

关系模型是现在非常流行的一种数据模型

关系模型是用表格数据来表示实体本身及其相互之间的联系的

  • 在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成
  • 关系既可以表示实体也可以用来描述实体间的联系
在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系
关系表中的每一列称为属性,相当于记录中的一个数据项,对属性的命名称为属性名
表中的一行称为一个元组,相当于记录值。

对于表示关系的二维表,其最基本的要求是,表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表,如下图

B:优点

  • 关系模型的概念单一,数据结构比较简单,实体与实体间的联系均用关系来表示,因此,数据的结构比较简单、清晰
  • 具有很高的数据独立性。在关系模型中,用户完全不涉及数据的物理存放,只与数据本身的特性发生关系。因此,数据独立性很高
  • 可以直接处理多对多的联系。在关系模型中,由于使用表格数据来表示实体之间的联系,因此,可以直接描述多对多的实体联系(如下表直接表示了学生与课程之间的多对多的关系)
  • 建立在严格的数学概念基础上,也有着坚实的理论基础

C:缺点

  • 最主要的缺点是,查询效率往往不如非关系数据模型。
  • 为提高效率,关系数据库管理系统必须对用户的查询请求进行优化,这样增加了开发DBMS的难度。

(4) 半结构化模型

A:基本概念

半结构数据是“无模式”的,数据是自描述(self describing)的

数据携带了关于其模式的信息,模式可以随着时间在单一数据库内任意改变,易于修改和变化

它是一种适于数据库集成(integration)的数据模型,适于描述包含在两个或多个数据库(这些数据库含有不同模式的相似数据)中的数据。

它也是一种标记服务的基础模型,适于在Web上共享信息

B:特点

半结构化数据类似树或图

  • 叶子结点(leaf)与具体数据相关,数据的类型可以是任意原子类型,如数字和字符串。
  • 内部结点(interior)至少都有一条向外的弧。每条弧都有一个标签(label),该标签指明弧开始处的结点与弧末的结点之间的关系
  • 要有一个根(root)结点,它代表整个数据库,每个结点都从根可达。

XML 适合存储半结构化数据,关于XML 在我之前的文章中可以看到一篇具体的介绍,这里就不做过多的介绍

面向对象数据模型(object-oriented data model,简称OO data model) 吸收了概念数据模型和知识表示模型的一些基本概念,同时又借鉴了面向对象程序设计语言和抽象数据类型的一些思想,是一种可扩充的数据模型。 面向对象数据模型的基本概念是对象和类。

(5) 面向对象数据模型

A:基本概念

面向对象数据模型,吸收了概念数据模型和知识表示模型的一些基本概念,同时又借鉴了面向对象程序设计语言和抽象数据类型的一些思想,是一种可扩充的数据模型。 面向对象数据模型的基本概念是对象和类。

现实世界的任意实体都是对象

一个对象可以包含多个属性,用来描述对象的状态、组成和特性

对象还包括若干方法,用以描述对象的行为特性,通过方法可以改变对象的状态,对对象进行各种数据库操作

对象是封装的,对象之间的通信是通过消息传递来实现的,即消息从外部传递给对象,存取和调用对象中的属性和方法,在内部执行要求的操作,操作的结果仍以消息的形式返回

B:类(Class)和实例(instance)

共享同一属性集合和方法集合的所有对象组合在一起构成了一个对象类(简称为类),一个对象是某一类的一个实例。 例如,学生是一个类,具体的某个学生,例如张山是学生类中的一个对象 在数据库系统中有“型”和“值”的概念,而在面向对象数据模型中,“型”就是类,对象是某个类的“值”

类属性的定义域可以为基本类,如字符串、整数、布尔型,也可以为一般类,即包括属性和方法的类一个类的属性也可以定义为这个类自身

C:类层次(Class hierarchy)

面向对象数据模型中,类的子集称为该类的子类,该类称为子类的超类。子类还可以有子类,也就是类可以有嵌套结构

系统中所有的类组成了一个有根的有向无环图,称为类层次

一个类可以从类层次的直接或间接祖先那里继承所有的属性和方法,用这个方法实现了软件的可重用性

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

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

相关文章

GPT-SoVITS-WebUI 克隆声音 macos搭建

强大的少样本语音转换与语音合成Web用户界面 macos运行参考 macos conda create -n GPTSoVits python3.9 conda activate GPTSoVits激活环境 conda activate GPTSoVits停用 conda deactivate mkdir GPTSoVits cd GPTSoVits git clone https://github.com/RVC-Boss/GPT-SoVITS…

C++之内存对齐

目录 内存对齐 一、内存对齐解释 二、为什么要内存对齐? 三、内存对齐的三大规则 3.1、数据成员对齐规则 3.2、结构(或联合)的整体对齐规则 3.3、结构体作为成员 3.4、代码例子 内存对齐 一、内存对齐解释 对齐规则是按照成员的声明顺序,依次安排…

学历太低,可以学这5个技术,不但好找工作,工资也挺高的!

前言 我今年23岁,勉强把高中上完了。 大家都说上高中的时候非常辛苦,但在我看来,却不是这样的。 因为那时候根本就没有,把精力放在学习上面,而是经常出去泡网吧。 没办法,一个班级里面,大多…

2024年【道路运输企业主要负责人】找解析及道路运输企业主要负责人试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 2024年【道路运输企业主要负责人】找解析及道路运输企业主要负责人试题及解析,包含道路运输企业主要负责人找解析答案和解析及道路运输企业主要负责人试题及解析练习。安全生产模拟考试一点通结合国家道路…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱12(附带项目源码)

效果演示 文章目录 效果演示系列目录前言悬停显示物品详情源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中,我们将探索如何用unity制作一个3D背包、库存、制作、快…

【C++】c++中的函数模板

文章目录 前言什么是函数模板为什么要有模板怎么用函数模板 前言 c语言中没有提供模板,要求实现一个Add函数,对于不同的数据类型可能存在Add_int(),Add_double()等函数,这种重复操作比较的低效,c提供了函数重载的功能…

【感知机】感知机(perceptron)学习算法的对偶形式

感知机( perceptron )是二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取1 和-1二值。感知机对应输入空间(特征空间)中将实例划分为正负两类的分离超平面,是一种判别模型。感知机是神经网络与支持向量机的基础…

第十二章[模块]:12.5:标准库:zipfile

一,认识zipfile: 1,什么是zipfile? zipfile是python里用来做zip格式编码的压缩和解压缩的, 它采用平时应用非常常见的zip格式, 所以这个模块使用频率也很高 2,官方文档: zipfile --- 使用ZIP存档 — Python 3.12.2 文档源代码: Lib/zipfile/ ZIP 文件格式是一个常用的归…

一款服务于医院临床数据资源建设的平台,助力医疗信息化发展

随着医疗技术的不断发展,医院需要越来越多的临床数据来支持科研、教学和临床实践。然而,在传统的医疗系统中,数据分散、信息割裂、无法有效整合和共享。为了解决这一问题,临床数据资源整合平台应运而生。 临床数据资源整合平台是…

19-k8s的附加组件-coreDNS组件

一、概念 coreDNS组件:就是将svc资源的名称解析成ClusterIP; kubeadm部署的k8s集群自带coreDNS组件,二进制部署需要自己手动部署; [rootk8s231 ~]# kubectl get pods -o wide -A k8s系统中安装了coreDNS组件后,会有一个…

“挖矿”系列:细说Python、conda 和 pip 之间的关系

继续挖矿,挖“金矿”! 1. Python、conda 和 pip(挖“金矿”工具) Python、conda 和 pip 是在现代数据科学和软件开发中常用的工具,它们各自有不同的作用,但相互之间存在密切的关系: Python&…

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F

半理想架构的Doherty功率放大器理论与仿真-基于GAN器件CGH40010F 理想架构的Doherty功率放大器理论与仿真中已经介绍了如何在ADS中使用理想电流源来对DPA的架构进行仿真。但是理想的电流源太理想了,电压、电流的许多行为都是需要自己使用数学公式去严格定义&#x…

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?<= , (?= , (?<! , (?!

RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?< , (? , (?<! , (?! 有好多种称呼 (?< , (? , (?<! , (?! 有好多种称呼 , 我称为: 左限定, 右限定, 左否定, 右否定 (?<左限定)    (?右限定)(?<!左否定)    (?!右限定) 再…

直播预告贴纸功能与直播商品预告功能设置基础

一.短视频预告贴纸功能 1.功能介绍 2.使用说明 设置预告贴纸入口 &#xff08;1&#xff09;拍摄视频时添加贴纸 &#xff08;2&#xff09;关播页去发布下一条短视频预告 &#xff08;3&#xff09;主播个人主页–直播动态 3.开播时间设置 4.开播提醒 5.用户端功能展示…

Chrome 关闭F12 网络选项下的大时间段图

把所有的按钮点了一遍&#xff0c;终于找到了 点开F12点右上的小齿轮&#xff0c;把概览取消勾选就可以了 英文的控制台中叫Overview

python-产品篇-游戏-成语填填乐

文章目录 准备代码效果 准备 无需其他文件&#xff0c;复制即用 代码 import random list["春暖花开","十字路口","千军万马","白手起家","张灯结彩","风和日丽","万里长城","人来人往",&…

RocketMQ(三):消息类型(普通、定时、顺序和事务消息)——备份

1 普通消息 普通消息为Apache RocketMQ最基础的消息&#xff0c;区别于有特性的顺序消息、定时/延时消息和事务消息。本节介绍普通消息的应用场景、功能原理、使用方法和使用建议。 1.1 应用场景 普通消息一般应用于微服务解耦、事件驱动、数据集成等场景&#xff0c;这些场景…

外汇110:外汇做空是什么意思?如何运作?一文读懂

外汇市场允许卖空&#xff0c;就像众多金融市场一样。但什么是卖空呢&#xff1f;如何外汇做空&#xff1f;在本文中&#xff0c;我们将讨论如何做空货币。什么是外汇做空&#xff1f; 外汇做空&#xff08;Short Selling&#xff09;是外汇市场上的一种投资方式。它指的是投资…

制作一个入耳式耳机壳需要用到哪些材料和工艺流程呢?

制作一个入耳式耳机壳需要用到以下材料和工艺流程&#xff1a; 材料&#xff1a; 耳机壳材料&#xff1a;常用的有PC/ABS塑料、金属、陶瓷、木质等。不同材料具有不同的特性&#xff0c;如塑料轻便耐用、金属质感好、陶瓷高档、木质自然等。耳塞材料&#xff1a;常用的有硅胶、…

Jlink+OpenOCD+STM32 Vscode 下载和调试环境搭建

对于 Mingw 的安装比较困难&#xff0c;国内的网无法正常在线下载组件&#xff0c; 需要手动下载 x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z 版本的软件包&#xff0c;添加环境变量&#xff0c;并将 mingw32-make.exe 名字改成 make.exe。 对于 OpenOCD&#xff0c;需要…