《数据库基础及实践技术——SQL Server 2008》一1.4 数据库系统的结构

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 本节书摘来自华章出版社《 数据库基础及实践技术——SQL Server 2008》一 书中的第1章,第1.4节,作者:何玉洁,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.4 数据库系统的结构

数据库系统的结构可以从多种不同的层次或角度进行考查。
从数据库管理角度来看,数据库系统通常采用三级模式结构。这是数据库管理系统内部的结构。
从数据库最终用户角度来看,数据库系统的结构分为集中式结构、文件服务器结构、客户端/服务器结构等。这是数据库系统外部的体系结构。
本节我们仅讨论数据库管理系统内部的结构。
数据库系统的结构是一个框架结构,这个框架用于描述一般数据库系统的概念,但并不是说所有的数据库系统都一定使用这个框架,这个框架结构在数据库中并不是唯一的,特别是一些“小”的数据库管理系统将难以支持这个体系结构的所有方面。但这里介绍的数据库管理系统的体系结构基本上能很好地适应大多数系统,而且,它基本上和ANSI/SPARC DBMS研究组提出的数据库管理系统的体系结构(称做ANSI/SPARC体系结构)是相同的。
虽然实际的数据库管理系统产品种类很多,支持的数据模型和数据库语言也不尽相同,但它们在体系结构上通常都具有相同的特征,即采用三级模式结构并提供两级映像功能。

1.4.1 三级模式结构

数据库系统的三级模式结构是指数据库系统的外模式、模式和内模式。图1-11说明了各级模式之间的关系。

screenshot

从广义上讲,它们的描述如下。
内模式:最接近物理存储,是数据的物理存储方式。
外模式:最接近用户,是用户所看到的数据视图。
模式:介于内模式和外模式之间的中间层次。
从图1-11可以看出,外模式是单个用户的数据视图,而模式是一个部门或公司的整体数据视图。换句话说,外模式(外部视图)可以有许多,每一个都或多或少地抽象表示整个数据库的某一部分;而模式(概念视图)只有一个,它包含对现实世界数据库的抽象表示,注意这里的抽象指的是记录和字段这些更加面向用户的概念,而不是位和字节那样的面向机器的概念。大多数用户只对整个数据库的某一部分感兴趣。内模式(内部视图)也只有一个,它表示数据库的物理存储。
关系系统中的模式一定是关系的,在该层可见的实体是关系表和关系的操作符。
外模式也是关系的或接近关系的,它们的内容来自模式。例如,我们可以定义两个外模式,一个记录学生的姓名、性别(表示为:学生基本信息1(姓名,性别)),另一个记录学生的姓名和所在系(表示为:学生基本信息2(姓名,所在系)),这两个外模式的内容均来自“学生基本信息”这个模式。外模式对应到关系数据库中就是“外部视图”(或简称为“视图”),它在关系数据库中有特定的含义,将在第9章详细讨论视图的概念。
内模式不是关系的,因为该层的实体不是关系表的“原样照搬”。其实,不管是什么系统,其内模式都是一样的,都是存储记录、指针、索引、哈希表等。事实上,关系模型与内模式无关,它关心的是用户的数据视图。
下面从外模式开始进一步讨论这个三层结构。整个讨论过程都以图1-11为基础,该图显示了体系结构的主要组成部分和它们之间的联系。

  1. 外模式
    外模式也称为用户模式或子模式,它是对现实系统中用户感兴趣的整体数据结构的局部描述,用于满足不同数据库用户需求的数据视图,是对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库整体数据结构的子集或局部重构。

外模式通常是模式的子集。一个数据库可以有多个外模式。由于它是各个用户的数据视图,如果不同的用户在应用需求、看待数据的方式、对数据保密要求等方面存在差异,则其外模式描述就是不相同的。即使对模式中同样的数据,在外模式中的结构、类型、长度等都可以不同。
外模式同时是保证数据库安全的一个措施。每个用户只能看到和访问其需要操作的外模式中的数据,将其不需要操作的数据屏蔽起来,因此保证不会出现由于用户的误操作和有意破坏而造成数据损失。
外模式就是特定用户所看到的数据库的内容,对那些用户来说,外模式就是数据库。例如,学校人事部门的用户可能把各系的教师数据的集合作为他的外模式,而不考虑各个系的用户所看见的课程和学生的记录值。

  1. 模式
    模式也称为逻辑模式或概念模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。模式表示数据库中的全部信息,其形式要比数据的物理存储方式抽象。它是数据库系统结构的中间层,既不涉及数据的物理存储细节和硬件环境,也与具体的应用程序、与所使用的应用开发工具和环境无关。

模式由许多概念记录类型的值构成。例如,可以包含学生记录值的集合、课程记录值的集合,选课记录值的集合等。概念记录即不等同于外部记录,也不等同于存储记录。
模式实际上是数据库数据在逻辑级上的视图。一个数据库只有一种模式。数据库模式以某种数据模型为基础,综合地考虑了所有用户的需求,并将这些需求有机地结合成一个逻辑整体。定义数据库模式时不仅要定义数据的逻辑结构,如数据记录由哪些数据项组成,以及数据项的名字、类型、取值范围等,而且还要定义数据之间的联系,定义与数据有关的安全性要求、完整性要求。
模式不涉及存储字段的表示,也不涉及对列、索引、指针或其他存储的访问细节。如果模式以这种方式真正地实现了数据独立性,那么根据这些概念模式定义的外模式也会有很强的独立性。
数据库管理系统提供了数据定义语言(DDL)来定义数据库的模式。

  1. 内模式
    内模式也称为存储模式。内模式是对整个数据库的底层表示,它描述了数据的存储结构,如数据的组织与存储方式,又如是顺序存储、B树存储还是Hash存储,以及索引按什么方式组织、是否加密等。注意,内模式与物理层是不一样的,内模式不涉及物理记录的形式(即物理块或页,输入/输出单位),也不考虑具体设备的柱面或磁道大小。换句话说,内模式假定了一个无限大的线性地址空间,地址空间到物理存储的映射细节与特定系统有关,这些并不反映在体系结构中。

1.4.2 两级模式映像功能与数据独立性

数据库系统的三级模式是对数据的3个抽象级别,它把数据的具体组织留给DBMS管理,使用户能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式。为了能够在内部实现这3个抽象层次的联系和转换,数据库管理系统在3个模式之间提供了两层映像(如图1-11所示):
外模式/模式映像
模式/内模式映像
正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性,使数据库应用程序不随数据库数据的逻辑或存储结构的变动而变动。

  1. 外模式/模式映像
    模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有多个外模式。对于每个外模式,都有一个从外模式到模式的映像,该映像定义了外模式与模式之间的对应关系。这些映像定义通常包含在各自的外模式描述中。

当模式发生变化时(如增加新的关系、新的属性或改变属性的数据类型等),可以通过外模式定义语句,调整外模式/模式映像定义,从而保持外模式不变。由于应用程序是依据数据的外模式编写的,因此应用程序也不必修改,从而保证了程序与数据的逻辑独立性,简称为数据的逻辑独立性。

  1. 模式/内模式映像
    模式/内模式映像定义了数据库的逻辑结构与存储结构之间的对应关系。当数据库的存储结构发生改变,比如选择了另一种存储结构,只需要对模式/内模式映像做相应的调整,就可以保持模式不变,从而使应用程序也不必修改。因此,保证了数据与程序的物理独立性,简称为数据的物理独立性。

在数据库的三级模式结构中,模式是数据库的中心与关键,它独立于数据库的其他层次。设计数据库时也是首先设计数据库的模式。
数据库的内模式依赖于数据库的全局逻辑结构,但独立于数据库的用户视图,也就是外模式,也独立于具体的存储设备。内模式将全局逻辑结构中定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率。
数据库的外模式面向具体的数据用户,它定义在模式之上,独立于内模式和存储设备。当应用需求发生较大变化,相应的外模式不能满足用户要求时,就需要对外模式做相应的改动,因此设计外模式时应充分考虑到应用的可扩充性。
特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构相互独立。不同的应用程序有时可以共用同一个外模式。数据库的两级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
程序与数据之间的独立性,使得数据的定义和描述可以从应用程序中分离出来。另外,由于数据的存取由DBMS负责管理和实施,因此,用户不必考虑存取路径等细节,从而简化了应用程序的编写工作,减少了对应用程序的维护和修改工作。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
相关文章
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
35 16
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
102 9
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
258 6
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
118 11
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。
从配置源到数据库初始化一步步教你在CentOS 7.9上安装SQL Server 2019
【11月更文挑战第16天】本文介绍了在 CentOS 7.9 上安装 SQL Server 2019 的详细步骤,包括配置系统源、安装 SQL Server 2019 软件包以及数据库初始化,确保 SQL Server 正常运行。
238 4

热门文章

最新文章