1.4 数据库的模式结构
从数据库管理系统角度来看,数据库系统内部的结构通常分为三级模式结构,并提供二级映像,基于相对稳定的数据模式实现了数据的独立性。数据模式是对数据库中全体数据逻辑结构和特征的描述,具有相对稳定性,而数据库中的数据则是不断变化的。
1.4.1 数据库的三级模式结构
在数据库中,整体数据的逻辑结构及存储结构因业务等需要可能发生变化,用户不适应常见的网站等局部数据的逻辑结构经常变更。DBMS运行环境可能有所不同,内部数据的存储结构及所用的语言各异,数据常采用三级模式结构。
1.数据库系统模式
数据模型中有型与值的概念。型(Type)是指对某一类数据的结构和属性的描述,值(Value)是型的一个具体值。如网络系统的“会员”信息的记录型为(会员ID,姓名,性别,所在地区,家庭住址,手机号码,会员等级),而(BJ0444516,赵明,男,北京,海淀区双清路102号,3832654312,2)则是该记录型的一个具体记录值。
模式是对数据逻辑结构和特征的描述,它仅为型的描述,不涉及其具体的值。模式的一个具体值称为模式的一个实例(Instance)。模式是相对稳定的,而实例则是不断变化和更新的。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
2.数据库系统的三级模式结构
为了有效地组织和管理数据,提高数据系统的逻辑独立性和物理独立性,数据库采用公认的三级模式结构来组织和管理数据。数据库系统的三级模式结构包括外模式、模式(概念模式)和内模式,它们分别代表了看待数据库的3个不同角度。在三级模式之间还提供了外模式/模式映像、模式/内模式二级映像,保证数据的逻辑和物理独立性。数据库系统的三级模式结构如图1-17所示。
图1-17 数据库系统的三级模式结构
(1)外模式(External Schema)
外模式也称子模式(Subschema)或用户模式,是局部数据的逻辑结构和特征的描述。外模式是模式的子集,一个数据库可以有多个外模式,是各个用户的数据视图。外模式是数据库安全的一个有力保障措施。每个用户只能访问与外模式中对应的数据。通常情况下,DBMS提供了外模式描述语言(DDL)来定义外模式。
(2)模式(Schema)
模式也称逻辑模式(Logic Schema)、概念模式(Conceptual Schema)或概念视图,是数据库中所有数据的逻辑结构和特征的描述,是用户的公共数据视图,是数据库系统模式结构的中间层,与硬件和软件环境无关。一个数据库只有一个模式,是数据的逻辑表示,即描述数据库中存储具体的数据及其之间存在的联系。DBMS提供外模式描述语言(DDL)来定义模式。
(3)内模式(Internal Schema)
内模式也称存储模式(Storage Schema),是数据物理结构和存储方式的描述,是数据在数据库内部的表达方式,对应于实际存储在外存储介质上的数据库。如记录的存储方式是顺序存储还是链式或堆存储,数据是否压缩存储与加密等。一个数据库只有一个内模式。DBMS提供了内模式描述语言(DDL)来严格定义内模式。
三级模式结构是数据领域公认的标准结构,是数据库实现数据逻辑独立性和物理独立性的基础。具体来说,将外模式和模式分开来保证数据的逻辑独立性;将模式和内模式分开来实现数据的物理独立性。
三级模式结构主要有以下3个优点。
1)有利于数据的安全性。不同的用户在各自的外模式下根据要求操作数据,只能对限定的数据进行操作,提高了数据的安全性。
2)有利于数据共享,减少数据冗余。外模式机制的引入,使同一数据可针对不同的应用定义多个外模式,提高了数据的共享性,减少了数据冗余。
3)简化了用户接口。按照外模式编写应用程序或输入命令,而无须了解数据库的全局逻辑结构和内部的存储结构,为用户使用系统提供了方便,减少了用户的学习成本。
1.4.2 数据库的二级映像
在数据库系统三级模式结构的基础上,DBMS在三级模式之间提供了二级映像(外模式/模式映像和模式/内模式映像)来保证数据的物理独立性和逻辑独立性。
1.外模式/模式映像
外模式/模式映像定义了外模式和模式之间的对应关系。外模式描述数据的局部逻辑结构,模式描述数据的全局逻辑结构。数据库中的同一模式可以有多个外模式,对于每个外模式,都存在一个外模式/模式映像。
外模式和模式之间的对应关系称为映像。这些映像确定了数据的局部逻辑结构与全局逻辑结构之间的对应关系。当模式改变时(如增加新关系、新属性等),由数据库管理系统对这个外模式/模式映像进行相应的改变,可保证外模式不变。应用程序是根据数据的外模式编写的,外模式没有变,则应用程序不需要修改,保证了数据的逻辑独立性(数据与程序之间的逻辑独立性)。
2.模式/内模式映像
模式/内模式映像定义了数据的全局逻辑结构与存储结构之间的对应关系。数据库中的模式和内模式都只有一个,因此模式/内模式映像也是唯一的。应用程序依赖于数据的外模式,与数据的模式和存储结构独立,当数据库的存储结构发生变化时,只需要数据管理员对模式/内模式的映像进行相应的改变,就可以使模式保持不变,从而保证用户程序不需要改变,保证了数据的物理独立性。
数据与应用程序之间相互独立,可使数据的定义、描述和存取等问题与应用程序进行分离。此外,由于数据的存取由DBMS实现,用户不必考虑存取路径等问题,可以简化应用程序的编写,也减少了应用程序的维护和修改。