数据库系统概论(超详解!!!) 第二节 数据模型

news2024/9/24 17:17:36

1.数据模型分为两类(两个不同的层次)

(1) 概念模型  ,也称信息模型,它是按用户的观点来对数据和信息建模,用于数据库设计。

(2) 逻辑模型 ,逻辑模型主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。按计算机系统的观点对数据建模,用于DBMS实现。

2.概念模型

概念模型的用途 :

概念模型用于信息世界的建模 ,是现实世界到机器世界的一个中间层次 ,是数据库设计的有力工具 ,数据库设计人员和用户之间进行交流的语言.

对概念模型的基本要求 :较强的语义表达能力 ,简单、清晰、易于用户理解.

1. 信息世界中的基本概念

(1)实体(Entity) 客观存在并可相互区别的事物称为实体。 可以是具体的人、事、物或抽象的概念。

(2)属性(Attribute) 实体所具有的某一特性称为属性。 一个实体可以由若干个属性来刻画。  

(3)码(Key) 唯一标识实体的属性集称为码。

(4)实体型(Entity Type) 用实体名及其属性名集合来抽象和刻画同类实体 称为实体型

(5)实体集(Entity Set) 同一类型实体的集合称为实体集

(6)联系(Relationship)   现实世界中事物内部以及事物之间的联系在信息世界中反映为实体(型)内部的联系和实体(型)之间的联系。 实体内部的联系通常是指组成实体的各属性之间的联系 ,实体之间的联系通常是指不同实体集之间的联系 ,实体之间的联系有一对一、一对多和多对多等多种类型

2. 概念模型的一种表示方法:实体-联系方法

用E-R图来描述现实世界的概念模型 ,E-R方法也称为E-R模型

3.逻辑模型

1.数据模型的组成要素

1.数据结构 ---描述系统的静态特性

数据模型的数据结构 ,描述数据库的组成对象,以及对象之间的联系。

描述的内容:

1. 与对象的类型、内容、性质有关

2. 与数据之间联系有关

2.数据操作 ---描述系统的动态特性

数据操作 :对数据库中各种对象(型)的实例(值)允许执行的 操作的集合,包括操作及有关的操作规则。

数据操作的类型 :查询 ,更新(包括插入、删除、修改)。

数据模型对操作的定义 :操作的确切含义, 操作符号 ,操作规则(如优先级) 实现操作的语言。

3.数据的完整性约束条件

数据的完整性约束条件 :

一组完整性规则的集合。

完整性规则:给定的数据模型中数据及其联系所具有的制约和依存规则。

用以限定符合数据模型的数据库状态以及状态的变化,以保证数据的正确、有效和相容。

数据模型对完整性约束条件的定义: 反映和规定必须遵守的基本的通用的完整性约束条件。 提供定义完整性约束条件的机制,以反映具体应用所涉及的数据必须遵守的特定的语义约束条件。

4.常用的数据模型(数据的逻辑模型)

层次模型(Hierarchical Model)

网状模型(Network Model)

关系模型(Relational Model))

面向对象数据模型(Object Oriented Data Model)

对象关系数据模型(Object Relational Data Model)

半结构化数据模型(Semistruture Data Model)

1.格式化模型

格式化模型中实体用记录表示,实体的属性对应记录的数据项(或字段)。实体之间的联系在格式化模型中转换成记录之间的两两联系。 在格式化模型中数据结构的单位是基本层次联系。 所谓基本层次联系是指两个记录以及它们之间的一对多(包括一对一)的联系。

2.层次结构

层次模型是数据库系统中最早出现的数据模型。

1968年,IBM公司的IMS系统,是基于层次模型的DBMS,也是最早的DBMS。

层次模型用树形结构来表示各类实体以及实体间的联系  

层次模型的表示方法:

实体型:用记录类型描述,每个结点表示一个记录类型(实体)

属性:用字段描述,每个记录类型可包含多个字段。

联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系。

层次模型的定义  :满足下面两个条件的基本层次联系的集合为层次模型

1. 有且只有一个结点没有双亲结点,这个结点称为根结点

2. 根以外的其它结点有且只有一个双亲结点

层次模型中的几个术语: 根结点,双亲结点,兄弟结点,叶结点。

层次模型的特点:

结点的双亲是唯一的 ,只能直接处理一对多的实体联系 ,每个记录类型可以定义一个排序字段,也称为码字段 ,任何记录值只有按其路径查看时,才能显出它的全部意义 ,没有一个子女记录值能够脱离双亲记录值而独立存在。

冗余结点特点:结构清晰,浪费空间

虚拟结点特点:用指引元代替冗余结点。

层次模型的数据操纵 :查询, 插入, 删除 ,更新。

层次模型的完整性约束条件 :无相应的双亲结点值就不能插入子女结点值 ,如果删除双亲结点值,则相应的子女结点值也被同时删除 ,更新操作时,应更新所有相应记录,以保证数据的一致性。

优点 :层次模型的数据结构比较简单清晰, 查询效率高,性能优于关系模型,不低于网状模型。 层次数据模型提供了良好的完整性支持 。

缺点: 结点之间的多对多联系表示不自然。 对插入和删除操作的限制多,应用程序的编写比较复杂 。查询子女结点必须通过双亲结点。

3.网状结构

网状模型的表示方法(与层次数据模型相同)

实体型:用记录类型描述,每个结点表示一个记录类型(实体)

属性:用字段描述,每个记录类型可包含多个字段。

联系:用结点之间的连线表示记录类型(实体)之间的一对多的父子联系。

网状模型的定义: 满足下面两个条件的基本层次联系的集合:

1. 允许一个以上的结点无双亲;

2. 一个结点可以有多于一个的双亲。

网状模型与层次模型的区别 :网状模型允许多个结点没有双亲结点。 网状模型允许结点有多个双亲结点 。网状模型允许两个结点之间有多种联系(复合联系)。 要为每个联系命名。 网状模型可以更直接地描述现实世界 。层次模型实际上是网状模型的一个特例。

网状模型中子女结点与双亲结点的联系可以不唯一 。要为每个联系命名,并指出与该联系有关的双亲记录和子女记录。

多对多联系在网状模型中的表示 :用网状模型间接表示多对多联系

方法: 将多对多联系直接分解成一对多联系

网状模型的操纵与完整性约束:

网状数据库系统(如DBTG)对数据操纵加 了一些限制,提供了一定的完整性约束 。

码:唯一标识记录的数据项的集合

一个联系中双亲记录与子女记录之间是一对多联系

支持双亲记录和子女记录之间某些约束条件

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

缺点 :结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握。 DDL、DML语言复杂,用户不容易使用 。记录之间联系是通过存取路径实现的,用户必须了解系统结构的细节。

4.关系模型

数据结构:在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。

基本概念:

关系(Relation) 一个关系对应通常说的一张表

元组(Tuple) 表中的一行即为一个元组

属性(Attribute) 表中的一列即为一个属性,给每一个属性起一个名称即属性名

主码(Key) 也称码键。表中的某个属性组,它可以唯一确定一个元组

域(Domain) 是一组具有相同数据类型的值的集合。属性的取值范围来自某个域。

分量 :元组中的一个属性值。

关系模式: 对关系的描述

关系必须是规范化的,满足一定的规范条件

最基本的规范条件:关系的每一个分量必须是一个不可分的数据项, 不允许表中还有表。

数据操作是集合操作,操作对象和操作结果都是关系 :查询, 插入, 删除, 更新。

关系的完整性约束条件 :实体完整性 ,参照完整性 ,用户定义的完整性。

优点: 建立在严格的数学概念的基础上。 概念单一, 实体和各类联系都用关系来表示 。对数据的检索结果也是关系 。关系模型的存取路径对用户透明 。具有更高的数据独立性,更好的安全保密性 。简化了程序员的工作和数据库开发建立的工作。

缺点 :存取路径对用户透明,查询效率往往不如格式化数据模型 。为提高性能,必须对用户的查询请求进行优化,增加了开发数据库管理系统的难度。

5.数据库系统的结构

从数据库应用开发人员角度看,数据库系统通常采用三级模式结构,是数据库系统内部的系统结构

从数据库最终用户角度看,数据库系统的结构分为: 单用户结构 ,主从式结构 ,分布式结构 ,客户-服务器 ,浏览器-应用服务器/数据库服务器多层结构等。

1.客户机/服务器模式   Client/Server,简称C/S

2.浏览器/服务器模式   Browser/Server,简称B/S

两种模式比较 ,B/S模式可以认为是C/S模式的一种特例。

C/S模式:        

缺点:C/S模式维护、升级烦琐        

优点:响应速度快,功能完善

B/S模式:        

缺点:响应速度慢,功能不是很完善。        

优点:维护、升级简单      

3.三级模式结构

1.模式

模式(也称逻辑模式) 数据库中全体数据的逻辑结构和特征的描述 。所有用户的公共数据视图 。

一个数据库只有一个模式。

模式的地位:是数据库系统模式结构的中间层 。与数据的物理存储细节和硬件环境无关。 与具体的应用程序、开发工具及高级程序设计语言无关 。全局逻辑结构是数据库的中心与关键。 独立于数据库的其他层次。 设计数据库模式结构时应首先确定数据库的逻辑模式。

模式的定义: 数据的逻辑结构(数据项的名字、类型、取值范围等)。 数据之间的联系。 数据有关的安全性、完整性要求。

2.外模式

外模式(也称子模式或用户模式) 数据库用户(包括应用程序员和最终用户)使用的局部数据的逻辑结构和特征的描述 .数据库用户的数据视图,是与某一应用有关的数据的逻辑表示 。独立于存储模式和存储设备。

外模式的地位:介于模式与应用之间

模式与外模式的关系:一对多 。外模式通常是模式的子集。 一个数据库可以有多个外模式。反映了不同的用户的应用需求、看待数据的方式、对数据保密的要求。 对模式中同一数据,在外模式中的结构、类型、长度、保密级别等都可以不同 。

外模式与应用的关系:一对多。 同一外模式也可以为某一用户的多个应用系统所使用。 但一个应用程序只能使用一个外模式。

外模式的用途:保证数据库安全性的一个有力措施 。每个用户只能看见和访问所对应的外模式中的数据。 当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动 。设计外模式时应充分考虑到应用的扩充性。

3.内模式

内模式(也称存储模式) 是数据物理结构和存储方式的描述。 是数据在数据库内部的表示方式。 记录的存储方式(例如,顺序存储,按照B树结构存储,按hash方法存储等) 。索引的组织方式 数据是否压缩存储。 数据是否加密 。数据存储记录结构的规定。

一个数据库只有一个内模式

数据库的内模式 ,依赖于它的全局逻辑结构 。独立于数据库的用户视图,即外模式。 独立于具体的存储设备   。将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。

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

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

相关文章

Mybatis实现分页查询数据(代码实操讲解)

在MyBatis中实现分页查询的常见方式有两种:使用MyBatis内置的分页插件如PageHelper,或者手动编写分页的SQL语句。下面我将为你提供两种方式的示例代码。 使用PageHelper分页插件 首先,确保你的项目中已经添加了PageHelper的依赖。在Maven项…

2023 2024年全国职业院校技能大赛中职组网络建设与运维赛项服务器Linux部分教程解析

欢迎合作 需要资料请私 Rocky 9 包含各种常考服务(包括新题型KVM等)

RabbitMQ是如何保证高可用的?

RabbitMQ可以通过多种方式来实现高可用性,以确保在硬件故障或其他不可预测的情况下,消息队列系统仍然能够正常 运行。RabbitMQ有三种模式:单机模式,普通集群模式,镜像集群模式。 其中单机模式一般用于demo搭建&#x…

unocss 究竟比 tailwindcss 快多少?

unocss 究竟比 tailwindcss 快多少? 前言 我们知道 unocss 很快,也许是目前最快的原子化 CSS 引擎 (没有之一)。 unocss 解释它为什么这么快的原因,是因为它不用去解析 CSS 抽象语法树,直接在 content 里面通过正则表达式从内容…

基本设计模式

单例模式 ES5 function Duck1(name:string){this.namenamethis.instancenull }Duck1.prototype.getNamefunction(){console.log(this.name) }Duck1.getInstancefunction(name:string){if(!this.instance){this.instance new Duck1(name)} } const aDuck1.getInstance(a) const…

【王道操作系统】ch2进程与线程-01进程与线程(长文预警)

文章目录 【王道操作系统】ch2进程与线程-01进程与线程01 进程的概念、组成和特征(1)进程的概念(2)进程(进程实体)的组成①PCB(给操作系统用的)②程序段(给进程自己用的&…

【YOLO v5 v7 v8 v9小目标改进】DWRSeg:优化的多尺度处理,传统的深度学习模型可能在不同尺度的特征提取上存在冗余

DWRSeg:优化的多尺度处理,传统的深度学习模型可能在不同尺度的特征提取上存在冗余 提出背景问题:实时语义分割需要快速且准确地处理图像数据,提取出有意义的特征来识别不同的对象。 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔…

开发知识点-Python-爬虫

爬虫 scrapybeautifulsoupfind_all find祖先/父节点兄弟节点nextpreviousCSS选择器属性值 attrsselect 后 class 正则使用字符串来描述、匹配一系列符合某个规则的字符串组成元字符使用grep匹配正则组与捕获断言与标记条件匹配正则表达式的标志 特定中文 匹配 scrapy scrapy内…

ArcGIS学习(十三)多源数据下的城市街道功能评估

ArcGIS学习(十三)多源数据下的城市街道功能评估 本任务带来的内容是多元数据下的城市街道功能评估。本任务包括两个关卡: 城市街道空间中观解读 城市街道功能详细评价 首先,我们来看看本任务的分析思路。 1.城市街道空间中观解读 下面我们正式进入第一关的内容一- 城市…

[Flutter get_cli] 配置 sub_folder:false报错

flutter get_cli 配置 get_cli:sub_folder:false报错如下 Because getx_cli_learn01 depends on get_cli from unknown source "sub_folder", version solving failed. 原因是在 pubspec.yaml文件中, get_cli:sub_folder:false要和 dependencies: xxx dev_depe…

每日学习总结20240301

20240301 1. strchr VS strrchr strchr和strrchr是C语言标准库中的字符串处理函数,用于在字符串中查找特定字符的位置。 1.1 strchr函数 strchr函数用于在字符串中查找第一次出现指定字符的位置,并返回该位置的指针。函数原型如下: char…

Cannot install Microsoft Office 64-bit after removing Office 32-bit 卸载微软之前版本

问题描述 win10系统安装了一个Viso2019,无法安装Excel 64位版本。弹窗报错 解决办法1 SaRACmd https://winitpro.ru/index.php/2017/12/11/office-all-versions-removal-scripts/用于完全删除任何版本的 MS Office 的脚本 使用 Microsoft SaRa 实用程序自动卸载…

基于yolov5的烟花检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示: 基于yolov5的烟花检测系统,系统既能够实现图像检测,也可以进行视屏和摄像实时检测_哔哩哔哩_bilibili (一)简介 基于yolov5的烟花检测系统是在pytorch框架下实现的,这是一个完整的项目&#x…

服务器后端是学习java还是php

没有绝对的"最好"语言,每种后端语言都有其适用的场景和特点。以下是几种常用的后端语言: 1. Java:Java是一种通用且强大的语言,广泛用于企业级应用和大型系统。它有很好的性能和可靠性,并且具有优秀的生态系…

vm虚拟机的下载与安装(更新时间24/2/28)

首先进入vm官网点击跳转 进入products 进入Workstation Pro 点击DOWNLOAD TRIAL 点击DOWNLOAD NOW 到这里只需要等待下载完成就行了 安装就是正常软件程序的安装方法,除了自定义一下安装位置,其他的直接确定 许可证密钥 在网络上有很多随便一搜…

python数据类型及转换

一、数据类型 数据类型分为数值型、布尔型、字符串型等 1.1数值类型 数值类型可以分为整数类型、浮点数类型、复数类型 1.1.1整数类型 (1)概念:整数类型指数值是没有小数部分的,包含正整数、负整数和0 (2)进制种类:十进制--->234、5…

关于Java并发多线程的一点思考

写在开头 在过去的2023年双11活动中,天猫的累计访问人次达到了8亿,京东超60个品牌销售破10亿,直播观看人数3.0亿人次,订单支付频率1分钟之内可达百万级峰值,这样的瞬间高并发活动,给服务端带来的冲击可想而…

如何利用会话式AI提升你的工作效率?

会话式AI如何改变我们的生活和工作 在当今时代,内容策略的重要性日渐凸显,良好的内容策略能够与流量及转化率紧密相连,成为企业在内容策略领域不容忽视的营销工具之一。 然而,目前内容同质化现象严重,企业若想在内容营…

爬虫入门到精通_实战篇11(使用代理处理反爬抓取微信文章)_PyQuery使用

1 目标 搜狗-微信这个网址来爬取微信的文章: ps:登录后才能查看第10页之后的内容: 量翻页触发了网站的反爬虫措施,导致ip被封,需要进行解锁。 然而从doc中可以看到,请求失败的那页(状态码应…

vs2022 qt 关于lnk2001和2019同时报错的问题

需要像qt中添加模块,这里,缺少qtopenglwidgets模块