抽象,就是对一系列的事物的共性进行提取概括,而隐藏或者不关心它们的内部细节。我们常用的数据库系统,有基于 MySQL 的,有基于 Oracle 的,有基于 DB2 的,有基于 MS SQL Server 的,还有一些非关系型的数据库系统,NoSql 数据库系统···我们该怎样来抽象这些数据库系统呢?
首先,需要弄清楚三个概念:数据,模式和模型。
数据 模式 模型
数据是我们保存在数据库中的真实的数据。
模式我们对这些数据进行的结构性的描述,比如我们将学生信息抽象为姓名,性别,学号,班级,家庭地址等等。通过模式,将要保存的数据进行归类划分。
模型是对模式的抽象,比如使用 Table 来保存数据的方式,我们将其称之为关系模型。
以上就是数据,模式以及模型的概念。它们之间的关系,可以通过抽象来定义,比如模式是对数据的结构性抽象,模型是对模式的抽象。也可以通过实现来定义,如数据是符合某个模式的数据集,模式是对某种模型的实现。
三级层次
我们可以将数据库系统划分为三级层次:
- 用户层次
用户层次也叫外部层次,是站在用户的角度,描述用户看到的数据库中的数据,举个例子,我们在设计学生表的时候,可能设计来诸多的字段,但最终呈现给用户的可能只是这些字段中的一部分,或者是将这些字段进行某种组合最终得到的结果(如学生总成绩,平均成绩)。
- 逻辑层次
逻辑层次也叫做全局层次或者概念层次,是从全局的角度看到的数据。对应于上例中,就是一个完整的学生表中所存放的数据。
- 物理层次
物理层次也叫做内层次,是从实现的角度看到的数据,也就是实际存放在物理磁盘上的数据,包括存储路径,存储方式,索引方式等。
三级模式
所谓三级模式,就是分别对三级层次中的数据进行结构性的抽象和描述。也分为三个方面。
- 外模式/用户模式
对用户看到的(局部)数据进行描述。
- 全局模式/逻辑模式/概念模式
从整体上对数据进行描述。
3.内模式/物理模式
从物理存储上对数据进行表述,指数据是采用什么方式存储的。
上面的模式,也可以叫做视图。如外视图/用户视图,逻辑视图等。
一般来讲,我们单说模式,指的是数据的全局模式。单说视图,指的是外部视图。
两层映像
三级模式存在两种相邻的关系:外模式和逻辑模式之间的关系,以及逻辑模式和内模式之间的关系。
通过外模式可以查看到逻辑模式中的数据,通过逻辑模式可以查看到存放在物理模式中的数据,这之间有个转换的过程,也就是映像。
所谓映像,就是将一种结构映射成另一种结构的过程。在这三层模式中,存在两种映像。
- E-C 映像
外模式到逻辑模式中的映像,通过 E-C 映像,实现了逻辑模式向外部模式的转换。
2.C-I 映像
逻辑模式到内模式的映像,通过 C-I 映像,实现了内模式向逻辑模式的转换。
以上,就介绍了数据库系统中三级模式和两层映像,这也是数据库系统的标准结构。
为什么要这样做
为什么使用三级层次,两层映像的方式来设计数据库系统呢?或者说为什么要使用层次结构来设计数据库系统呢?
这是为了保证两个独立性:逻辑数据独立性和物理数据独立性。
所谓逻辑数据独立性,就是在逻辑模式上进行修改时,不必修改外部模式(应用程序),只需要修改 E-C 映像即可。
所谓物理数据独立性,就是在物理模式发生变化时(采用不同的 DBMS,物理模式发生变化),不用修改概念模式,只需调整 C-I 映像。
这就是数据库系统采用三级模式+两层映像的原因:某个层次上做出的修改,不用影响到其他的层,只需修改层与层之间的映像即可。
总结
本文从抽象的角度介绍了数据库系统中的几个概念:数据,模式和模型,以及数据库系统的分层设计思想,作为抽象的概念,它们不局限于某个具体的数据库系统实现,而是可以应用所有的数据库系统中,这对我们学习数据库系统,具有很好的指导作用,特别是分层设计的思想,很值得学习。
完。
网友评论