数据模型概念

news/发布时间2024/5/15 20:51:47

一、概念

(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.bcls.cn/LeJi/2081.shtml

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

相关文章

【转载】企业资产收集与脆弱性检查工具

简介 云图极速版是针对拥有攻击面管理需求的用户打造的 SaaS 应用,致力于协助用户管理互联网资产攻击面的 SaaS 化订阅服务产品。可实现对备案域名、子域名、IP、端口、服务、网站、漏洞、安全风险等场景进行周期性监控,支持多维度分析攻击面。利用可视化…

相机图像质量研究(33)常见问题总结:图像处理对成像的影响--锯齿

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…

Leetcode 283.移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0]示例 2: 输入: nums [0] 输出: […

OpenAI Sora引领AI跳舞视频新浪潮:字节跳动发布创新舞蹈视频生成框架

OpenAI的Sora已经引起广泛关注,预计今年AI跳舞视频将在抖音平台上大放异彩。下面将为您详细介绍一款字节跳动发布的AI视频动画框架。 技术定位:这款框架采用先进的diffusion技术,专注于生成人类舞蹈视频。它不仅能够实现人体动作和表情的迁移…

Redis为什么快?

1. Redis单线程指的什么? Redis单线程是指命令处理是在一个单线程中处理的。 Redis本身是单线程的,即redis-server只有一个主线程来处理所有的命令请求和数据操作。但是,Redis在处理IO密集型任务时会使用多线程来提高效率。 在Redis中&…

linux调用so库之一

任务:linux系统,已经生成so库,需要调用。 参考文献: Linux 调用动态库(.SO文件)总结_linux deviceio.so-CSDN博客 可以看他的第一部分,即显式调用。但是会报错,我的版本是64位的U…

[经验] 什么是鄱阳湖旅游最主要的景点 #知识分享#知识分享

什么是鄱阳湖旅游最主要的景点 鄱阳湖是中国最大的淡水湖,位于江西省北部和湖南省南部。鄱阳湖旅游资源丰富,景色秀美,是游客游览江西最热门的旅游胜地之一。在所有的景点中,以下是鄱阳湖旅游中最主要的景点。 景点一&#xff1…

【学习笔记】算法学习01:复杂度分析

学习地址Hello算法:https://www.hello-algo.com/ 文章目录 一、复杂度分析1.1 时间复杂度1.1.1 时间复杂度分析有哪些特点?1.1.2 计算方法:1.1.3 常见类型的时间复杂度:1.1.4 最差、最佳、平均时间复杂度 1.2 空间复杂度1.2.1 算法…

用HTML和CSS打造跨年烟花秀视觉盛宴

目录 一、程序代码 二、代码原理 三、运行效果 一、程序代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>跨年烟花秀</title><meta name"viewport" content"widthdevi…

【JavaEE】_form表单构造HTTP请求

目录 1. form表单的格式 1.1 form表单的常用属性 1.2 form表单的常用搭配标签&#xff1a;input 2. form表单构造GET请求实例 3. form表单构造POST请求实例 4. form表单构造法的缺陷 对于客户端浏览器&#xff0c;以下操作即构造了HTTP请求&#xff1a; 1. 直接在浏览器…

腾讯云宝塔Linux安装Mysql5.7

一、下载官方mysql包 wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm二、安装mysql包 rpm -ivh mysql-community-release-el7-5.noarch.rpm三、安装mysql yum install mysql-community-server -y四、启动数据库 systemctl start mysqld.service…

JDBC简介

JDBC体系结构 Java Data Base Connectivity&#xff08;JDBC&#xff09;&#xff0c;Java数据库连接。 JDBC重要的类和接口 JDBC API 定义了一组用于与数据库进行通信的接口和类&#xff0c;这些接口和类都定义在Java.sql包中。 类或接口作用DriverManager处理驱动程序的加…

el-table同时固定左列和右列时,出现错误情况

最近遇到一个问题,就是需求是要求表格同时固定序号列和操作列,我们用的是饿了么组件库的el-table,如下图,出现了错误情况: 解决方法就是使用doLayout方法: 如果使用了keep-alive,可以在activated里执行doLayout方法: activated() {this.$nextTick(() => {this.$ref…

Jmeter接口测试+压力测试

Jmeter-http接口脚本 一般分五个步骤:&#xff08;1&#xff09;添加线程组 &#xff08;2&#xff09;添加http请求 &#xff08;3&#xff09;在http请求中写入接入url、路径、请求方式和参数 &#xff08;4&#xff09;添加查看结果树 &#xff08;5&#xff09;调用接口、…

【ChatIE】论文解读:Zero-Shot Information Extraction via Chatting with ChatGPT

文章目录 介绍ChatIEEntity-Relation Triple Extration (RE)Named Entity Recognition (NER)Event Extraction (EE) 实验结果结论 论文&#xff1a;Zero-Shot Information Extraction via Chatting with ChatGPT 作者&#xff1a;Xiang Wei, Xingyu Cui, Ning Cheng, Xiaobin W…

MySQL-----多表操作

介绍 实际开发中&#xff0c;一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系&#xff0c;接下来我们将在单表的基础上&#xff0c;一起学习多表方面的知识。 一 多…

深入解析SDRAM:从工作原理到实际应用

深入解析SDRAM&#xff1a;从工作原理到实际应用 在众多内存技术中&#xff0c;同步动态随机访问存储器&#xff08;SDRAM&#xff09;因其出色的性能和广泛的应用而备受关注。本文将从SDRAM的工作原理入手&#xff0c;探讨其性能优化策略和在现代电子设备中的应用。 SDRAM工作…

linux上安装bluesky的步骤

1、设备上安装的操作系统如下&#xff1a; orangepiorangepi5b:~$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.2 LTS Release: 22.04 Codename: jammy 2、在用户家目录下创建一个目录miniconda3目录&a…

MATLAB 导出可编辑的eps格式图像

任务描述&#xff1a;部分期刊要求提交可编辑的eps格式图像&#xff0c;方便美工编辑对图像进行美化 我试了直接print或者在figure窗口导出&#xff0c;发现导出的文件放到Adobe AI中并不能编辑&#xff0c;经Google找到解决办法&#xff1a; %EPS exportgraphics(gcf,myVect…

【书生·浦语大模型实战营】第6节:OpenCompass 大模型评测(笔记版)

OpenCompass 大模型评测 1.关于评测的三个问题 为什么需要评测&#xff1a;模型选型、能力提升、应用场景效果测评。测什么&#xff1a;知识、推理、语言&#xff1b;长文本、智能体、多轮对话、情感、认知、价值观。怎样测&#xff1a;自动化客观测评、人机交互测评、基于大…
推荐文章