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

本文涉及的产品
云数据库 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
相关文章
|
13天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
13天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
82 6
|
1天前
|
SQL Java 数据库连接
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
Java从入门到精通:2.3.2数据库编程——了解SQL语言,编写基本查询语句
|
2天前
|
SQL 关系型数据库 MySQL
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
8 0
|
2天前
|
SQL XML 数据库
sql导入数据库命令
在SQL Server中,数据库导入可通过多种方式实现:1) 使用SSMS的“导入数据”向导从各种源(如Excel、CSV)导入;2) BULK INSERT语句适用于导入文本文件;3) bcp命令行工具进行批量数据交换;4) OPENROWSET函数直接从外部数据源(如Excel)插入数据。在操作前,请记得备份数据库,并可能需对数据进行预处理以符合SQL Server要求。注意不同方法可能依版本和配置而异。
|
9天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
19 0
|
10天前
|
SQL 数据库
数据库SQL语言实战(二)
数据库SQL语言实战(二)
|
10天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
37 3
|
13天前
|
SQL 监控 数据库
数据库管理与电脑监控软件:SQL代码优化与实践
本文探讨了如何优化数据库管理和使用电脑监控软件以提升效率。通过SQL代码优化,如使用索引和调整查询语句,能有效提高数据库性能。同时,合理设计数据库结构,如数据表划分和规范化,也能增强管理效率。此外,利用Python脚本自动化收集系统性能数据,并实时提交至网站,可实现对电脑监控的实时性和有效性。这些方法能提升信息系统稳定性和可靠性,满足用户需求。
47 0
|
14天前
|
存储 SQL Oracle
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
【Oracle】玩转Oracle数据库(二):体系结构、存储结构与各类参数
35 7

热门文章

最新文章