数据库系统体系结构-DBMS的三级模式结构、DBMS的工作方式、模式定义语言、二级映射

news2024/10/9 0:21:18

一、体系结构的概念

1、大多数DBMS遵循三级模式结构

(1)外模式

(2)概念模式

(3)内模式

2、DBMS的体系结构描述的应该是系统的组成结构及其联系以及系统结构的设计和变化的原则

3、1978年美国国家标准机构ANSI的DBMS研究组发表了SPARC报告,提出了一个标准化的数据库管理系统模型,对数据库管理系统的总体结构特征、各个组成部分以及相应接口作了明确的规定,把数据库管理系统的结构逻辑上分为外部级、概念级和内部级三级结构,称作ANSI/SPARC体系结构

4、其实早在1971年由数据库先驱Charles W.Bachman领导的数据系统语言协会下的数据库任务组DBTG的报告中已完整地给出了系统结构的三个层次,分别为视图层、逻辑层和物理层

二、DBTA的领导者 

Charles W.Bachman所领导的数据系统语言协会所给出的数据库任务组报告中,首次确定了数据库系统的三级体系结构,成为数据库历史上具有里程碑意义的文献;他主持和开发了世界上最早的网状数据库管理系统,该系统于1964年推出后,成为最受欢迎的数据库产品之一,而且它的设计思想和实现技术被后来的许多数据库产品所仿效;他也积极推动与促进了数据库标准的制定。基于他在数据库领域所作的贡献,Charles W.Bachman被授予1973年的图灵奖,成为数据库领域首位图灵奖的获得者

三、三级体系结构

1、采用ANSI/SPARC三级体系结构的好处

具有ANSI/SPARC三级体系结构的DBMS为用户提供了数据在不同层次上的抽象视图,这就是数据抽象,即不同的使用者从不同的角度去观察数据库管理系统中的数据所得到的结果。

外部级最接近用户,是单个用户所能看到的数据视图;概念级涉及到所有用户的数据,即全局视图;内部级最接近物理存储设备,涉及到数据的物理存储结构,而对普通用户来说,并不需要了解数据库管理系统中数据的复杂的数据结构

DBMS通过三个层次的抽象,可向用户屏蔽数据的复杂性,隐藏关于数据存储和维护的某些细节,提高了数据独立性,减轻了用户使用系统的负担

2、下表中给出了有关数据库体系结构的相关术语及对应关系

 在数据库管理系统中,通常采用三级模式结构来描述三个级别的数据抽象

三、模式

1、概念

在DBMS中用数据模型来组织、描述和存储数据,将数据库描述数据库本身,也就是实际的数据加以区别,数据库的描述称为数据库模式

2、模式反映的是数据库中数据的结构及其联系,是相对稳定的,它会在数据库设计阶段确定下来

3、举例:

模式图显示的只是模式的一些方面,如库中个关系的属性名称,关系间属性的参照关系,并没有显示每个属性的数据类型以及复杂的约束等

四、实例

1、概念

一个特定时刻数据库中的即时数据,也成为数据库状态、当前出现、快照

2、举例:

这就是学生选课数据库概念模式对应的一个数据库实例,模式是相对稳定的,实例是不断变化的

五、概念模式

1、概念

一个数据库只有一个概念模式,是对概念级数据视图的描述

(1)数据库概念模式以某一种数据模型为基础,综合考虑所有用户的需求,并将这些需求有机地结合成一个逻辑整体,所以概念模式也称逻辑模式,或简称模式

(2)是数据库中全体数据的逻辑结构和特征的描述

(3)它是数据库模式结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序所使用的应用开发工具及高级程序设计语言无关

2、定义概念模式时不仅要定义数据的逻辑结构,例如数据记录由哪些数据项构成、数据项的名字、类型、取值范围等,而且要定义数据之间的联系定义与数据有关的安全性、完整性要求

比如:可以用SQL语言对学生选课关系数据库的概念模式进行模式定义,确定每个属性的数据类型、数据间的联系以及相关的约束等

六、外模式

对概念模式所描述的全局数据,数据库用户在应用需求、看待数据的方式、存储数据的权限等方面存在差异,能够看见和使用的局部数据是不同的,所以一个数据库可以对应多个外模式来描述外部级不同用户的数据视图 

1、概念

每个外模式描述的就是一个特定用户所感兴趣的那部分数据库的逻辑结构和特征

 数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述

外部级用户数据视图的描述

概念模式的子集,与应用有关,也称子模式用户模式

2、注意:

同一外模式可为某一用户的多个应用程序所使用,但一个应用程序只能使用一个外模式

七、内模式

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

1、概念

内模式是数据库的物理存储结构和存储方式的描述 ,是数据在数据库内部的表示方式

是内部级数据视图的描述

也称存储模式

2、内模式独立于具体的存储设备,不考虑具体存储设备的物理特性,而是假定数据存储在一个无限大的线性地址空间中 

八、三级模式结构举例

学生选课数据库中学生信息的三级模式

1、在概念模式中,数据库中包含了学生S表的信息,每个学生记录都有学号SNO、姓名SN、性别SEX、出生日期SB和所在系SD五个属性,并定义了每个属性的数据类型

2、在内模式中,学生信息可由一个长度为76字节的存储记录类型来表示,其中包含16个字节的前缀,主要存储如记录长度、模式指针等控制信息和对应于学生的五个属性的五个数据字段,此外,该存储记录按学生学号字段进行索引

3、在外模式中,使用过程语言SQL编程的用户对应一个数据库的外部视图每个学生的信息由三个变量来表示 ,其中两个变量对应于概念模式中学生S表中的学号SNO和姓名SN属性,还有一个变量对应概念模式中其它表中的数据。该用户根据过程化SQL的规则用变量声明来定义外模式。使用ODBC编程的用户也对应一个外部视图,每个学生的信息由四个变量来表示,对应于概念模式中学生S表中的学号SNO、姓名SN、性别SEX和出生日期SB四个属性,根据C语言的规则来定义外模式,该用户不需要学生所在系SD的信息

从某种程度讲,概念模式和内模式之间的关系,可以看作是设计与实现的关系;而概念模式和外模式之间的关系,可以看作是全局和局部的关系

九、模式定义语言

1、DBMS提供的数据定义功能,就是用DBMS支持的数据定义语言来定义各级模式完成的

2、早期的DBMS描述各级模式的模式定义语言是加以区分的,当前的DBMS并不将各级模式定义语言独立开来,而使用的一种综合集成语言,如SQL语言,SQL语言不仅可对各级模式中的数据库对象进行定义和说明,还具备数据操纵语言的功能以及以及一些其他特性

3、模式定义存储在DBMS的数据字典中,是DBMS对数据库进行操纵的基本依据

三级模式只是对在不同的抽象视图的描述,而实际的数据都存储在物理数据库上

十、DBMS的工作模式

1、在遵循ANSI/SPARC体系结构的数据库系统,用户对数据库进行的访问操作,是由DBMS将对外模式的请求转换为一个面向概念模式的请求,然后再转换为一个面向内模式的请求,进而通过操作系统,操纵存储器中的数据

如果有一请求要检索数据库,那么从物理数据库中提取出来的数据必须必须进行转换,以便与用户外模式相匹配

十一、二级映射

在各层间完成请求和结果转换的过程称为映射

1、数据库管理系统在各级模式之间提供了两级映射,外模式/概念模式间的映射,存在于外部级和概念级之间,用于定义外模式和概念模式的对应关系

2、概念模式/内模式间的映射,存在于概念级和内部级之间,用于定义概念模式和内模式的对应关系

由于用户所见的局部数据库的逻辑数据结构与概念级的全局的逻辑数据结构可能不一致,例如字段可能有不同的数据类型、字段名或记录名可能改变、几个概念字段可能合成一个单一的外部字段等等,因此,需要说明外模式概念模式之间的对应性,对于每一个外模式,都对应一个外模式/概念模式映射,这些映射通常包含在各自外模式的描述中

由于数据全局逻辑结构与存储结构是不一样的,需要说明概念记录和字段在内部级是如何表示的。由于数据库只有一个概念模式和一个内模式,则概念模式/内模式映射是唯一的,该映射定义通常包含在概念模式的定义描述

应用程序依赖于外模式,独立于概念模式和内模式。DBMS的三级模式和两级映射机制,使得数据的定义和描述可以从应用程序中分离出来。数据的存取由DBMS管理,用户也不必考虑存取路径等细节,从而简化了应用程序的编写,大大减少了应用程序的维护与修改,实现了数据独立性,也使得数据库技术得以广泛地应用

十二、小结

1、具有ANSI/SPARC体系结构的DBMS支持一个内模式、一个概念模式和多个外模式。

  • 概念模式独立于其他模式,设计数据库模式结构时应首先确定数据库的概念模式,即全局的数据逻辑结构。
  • 内模式独立于外模式,也独立于具体的存储设备,但依赖于概念模式,它将概念模式中所定义的全局的数据逻辑结构按照一定的物理存储策略进行组织
  • 外模式定义在概念模式之上,独立于内模式和存储设备,面向具体的应用程序

2、当应用需求发生较大变化时,相应外模式不能满足用户视图需求时,需要对外模式进行修改

3、大多数DBMS并不是将这三层模式完全分离开,而只是在一定程度上支持三层模式体系结构,比如有些DBMS在概念模式中还包括一些物理层的细节

4、并不是所有的DBMS都具有这种三级结构,但SNSI/SPQRC体系结构基本上能很好地适应大多数系统

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

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

相关文章

在flask中加载mnist模型,并预测图片

一、在tensorflow中新建及保存模型 启动Jupyter Notebook 新建Notebook 生成 mnist_model.h5 模型的代码 import tensorflow as tf from tensorflow.keras.datasets import mnist from tensorflow.keras.models import Sequential from tensorflow.keras.layers import…

【Oracle篇】逻辑备份工具expdp(exp)/impdp(imp)和物理备份工具rman的区别和各自的使用场景总汇(第八篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

26.4 Django 视图层

1. 视图函数 视图函数是Django框架中用于处理Web请求并返回Web响应的重要组件. 以下是对Django视图函数的详细解释: * 1. 视图函数与URL的映射.为了让Django能够知道哪个URL对应哪个视图函数, 需要在应用的urls.py文件中定义URL模式.使用path或re_path函数来定义URL模式, 并将…

计算机视觉的职业规划

Hi,大家好。我是茶桁。 今天这节课呢,咱们先不着急讲原理,先来讲讲职业规划的话题。 如果想要直接上手企业级的 AI 项目,可以看看咱们的「AI 人工智能企业项目实战」。 趋势和薪资 首先,先来讲讲就业的趋势。其实学…

Python学习笔记20:进阶篇(九)常见标准库使用之sys模块和re模块

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 错误输出…

python笔记3

1.通过乘法多次打印,以及字符串相加的合体打印 xzzz yyyy print(xy) print(x*10)#与一个数为打印多少次 2.设置俩个变量,可以通过下面的方法来判断是否一个元素是否在另一个元素中,返回bool值 xzzz yyyy print(xy) print(x*10)#与一个数为打…

算法学习笔记——单双链表及其反转—堆栈诠释

单双链表及其反转——堆栈诠释 按值传递 int、long、byte、short、char、float、double、boolean和String 都是按值传递 概念:在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参值的一个拷贝,…

Windows 获取打印机及端口号方法 (C#)

1. 打开注册表编辑器 regedit 2.选择如下配置 计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Device 3. 代码 C# using System; using Microsoft.Win32;class Program {static void Main(){string registryPath "SOFTWARE\Microsoft\Windows …

解决pycharm安装dlib失败的问题

今天使用pycharm来学习opencv人脸识别库face-recognition的时候出现了一点小问题,在pycharm中直接安装face-recognition会失败,说是因为缺少依赖库dlib,但是直接使用pycharm安装dlib库也有问题,不知道大家遇到没有 错误提示 note…

【unity实战】Unity中基于瓦片的网格库存系统——类似《逃离塔科夫》的库存系统

最终效果 文章目录 最终效果前言素材下载图片配置获取格子坐标动态控制背包大小添加物品移动物品物品跟随鼠标创建物品的容器,定义不同物品修改物品尺寸修复物品放置位置问题按物品尺寸占用对应大小的格子判断物品是否超出边界范围物品放置重叠,交换物品…

全景图片/老照片/动漫图片一键无损放大与修复

在日常生活中,我们经常使用系统自带的图片处理软件来对图片进行缩放操作,从而实现放大或缩小图片。然而,这种方法会带来一个问题:如果原始图片较小,放大后会导致精度损失,使图片变得模糊。 近年来&#xf…

SD-WAN带宽对使用的影响及如何规划

SD-WAN(软件定义广域网)是一种创新技术,旨在优化和提升企业网络的性能、可靠性和安全性。带宽在SD-WAN的使用中起着关键作用,而确定SD-WAN专线所需的带宽大小需要综合考虑多个因素。本文将深入探讨SD-WAN带宽对使用的影响以及如何…

革新城市景观:轻空间设计团队呈现“淄博会展中心”

“淄博会展中心”,作为国内最大的气膜会展建筑群,自启用以来已经成为淄博市的亮丽新名片和经济引擎。该会展中心在第二十届中国(淄博)国际陶瓷博览会上首次亮相,其独特的设计和先进的建筑理念吸引了广泛关注。今天&…

xxl-job 分布式任务调度 基本使用

xxl-job 是一个分布式任务调度平台,使用非常方便。 官网:https://gitee.com/xuxueli0323/xxl-job 工作原理类似于nacos 执行器注册到调度中心 调度中心分配任务 执行器执行任务 docker-compose 配置 version: 3 services:xxl-job:image: xuxueli/xxl-…

【神经网络】深入理解多层神经网络(深度神经网络

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 深入理解多层神经网络&#x…

【C++题解】1712. 输出满足条件的整数2

问题:1712. 输出满足条件的整数2 类型:简单循环 题目描述: 有这样的三位数,其百位、十位、个位的数字之和为偶数,且百位大于十位,十位大于个位,请输出满所有满足条件的整数。 输入&#xff1…

博客solo!bolo-solo让博客创作更自由。

bolo-solo:独行侠的数字笔录, 你的博客新伙伴- 精选真开源,释放新价值。 概览 bolo-solo是GitHub 上一个开源的个人博客系统:Bolo Solo,简单易部署,自带精致主题、数据统计表、邮件提醒、自定义图床、功能…

利用Linked SQL Server提权

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 利用Linked SQL Server提权 Linked SQL server是一个SQL Server数据库中的对象,它可以连接到另一个SQL Server或非SQL Server数据源(如Oracle&a…

规则引擎-Aviator 表达式校验是否成立

目录 介绍特性使用更多文献支持 介绍 Aviator是一个轻量级、高性能的Java表达式执行引擎,它动态地将表达式编译成字节码并运行。 特性 支持绝大多数运算操作符,包括算术操作符、关系运算符、逻辑操作符、位运算符、正则匹配操作符(~)、三元表达式(?:…

Java学习十一—Java8特性之Stream流

一、Java8新特性简介 2014年3月18日,JDK8发布,提供了Lambda表达式支持、内置Nashorn JavaScript引擎支持、新的时间日期API、彻底移除HotSpot永久代。 ​ Java 8引入了许多令人兴奋的新特性,其中最引人注目的是Lambda表达式和Stream API。以…