- 数据库系统的三级模式结构
- 外模式(External Schema)
- 定义:外模式也称为子模式或用户模式,它是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述。外模式是用户与数据库系统的接口,一个数据库可以有多个外模式。例如,在一个学校管理系统中,对于学生用户,可能有一个外模式用于查询自己的课程成绩、选课信息等;对于教师用户,有另一个外模式用于录入学生成绩、查看授课班级学生名单等。
- 特点:外模式通常是从模式导出的,它面向具体的应用程序或用户群体,着重于满足特定用户的需求。外模式中的数据结构和操作方式是根据用户的使用习惯和业务需求设计的,因此不同用户的外模式可能不同,而且外模式的数据结构相对简单,便于用户理解和使用。
- 模式(Schema)
- 定义:模式也称为逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,它是所有用户的公共数据视图。模式描述了数据库的整体逻辑结构,包括数据的记录类型、数据项的名字、类型、取值范围等信息。以学校管理系统为例,模式会定义学生表(包含学号、姓名、性别、出生日期等字段)、课程表(包含课程号、课程名、学分等字段)以及它们之间的关系(如学生选课表,记录学生选课的情况)。
- 特点:模式是数据库系统的核心部分,它独立于数据库的物理存储结构和具体的应用程序。模式的设计要考虑到数据库的完整性、一致性和安全性等要求,并且要能够支持各种不同的应用需求。它是对数据库数据的一种抽象和概括,用于组织和管理数据库中的所有数据。
- 内模式(Internal Schema)
- 定义:内模式也称为存储模式,它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。内模式定义了数据在存储介质上的组织方式、索引结构、数据压缩方法、存储块大小等物理细节。例如,在关系型数据库中,内模式会规定数据是以何种文件格式存储在磁盘上,如何对数据文件进行分区,索引是如何建立和存储的等内容。
- 特点:内模式是最接近物理存储的一层,它与数据库的硬件和操作系统密切相关。内模式的设计主要考虑的是如何高效地存储和访问数据,以提高数据库的性能。不同的数据库管理系统可能采用不同的内模式,而且内模式对于用户和应用程序来说通常是透明的。
- 外模式(External Schema)
- 二级映像的概念
- 外模式/模式映像(External Schema/Schema Mapping)
- 定义:外模式/模式映像定义了外模式与模式之间的对应关系。它用于保证当模式发生改变时(如增加新的表、修改表结构等),外模式可以保持不变。例如,在学校管理系统中,如果在模式中增加了一个“学生奖惩记录”表,通过外模式/模式映像,可以使得学生用户的外模式(用于查询成绩和选课信息)不受影响,仍然可以正常使用。
- 作用:这种映像提供了数据的逻辑独立性。当数据库的模式需要修改时,只要对外模式/模式映像进行相应的调整,而不需要修改应用程序。因为应用程序是基于外模式编写的,外模式不变,应用程序就可以不做修改,从而减少了对应用程序的影响,提高了数据库系统的可维护性。
- 模式/内模式映像(Schema/Internal Schema Mapping)
- 定义:模式/内模式映像定义了模式与内模式之间的对应关系。它用于保证当数据库的存储结构发生改变时(如更换存储设备、改变数据存储方式等),模式可以保持不变。例如,如果将数据库从一个磁盘存储系统迁移到一个新的分布式存储系统,通过模式/内模式映像,可以使得数据库的逻辑模式(如学生表、课程表等的定义)不变。
- 作用:这种映像提供了数据的物理独立性。当数据库的物理存储结构发生变化时,只要对模式/内模式映像进行适当的修改,而不需要改变模式和外模式。这样,应用程序就可以不受物理存储结构变化的影响,继续正常运行,大大提高了数据库系统的可移植性和适应性。
- 外模式/模式映像(External Schema/Schema Mapping)
- 对数据独立性的作用
- 逻辑独立性
- 通过外模式/模式映像实现的逻辑独立性,使得应用程序可以独立于数据库的逻辑结构变化。这意味着当数据库管理员对数据库的逻辑结构进行修改(如增加新的数据类型、修改表之间的关系等)时,只要保证外模式/模式映像的正确性,应用程序就不需要进行修改。例如,在企业资源规划(ERP)系统中,随着企业业务的扩展,可能需要在数据库的模式中添加新的业务模块相关的数据表,但对于已经开发好的财务模块应用程序,由于其基于外模式进行操作,只要外模式不变,就可以继续正常工作,从而降低了系统维护的成本和复杂性。
- 物理独立性
- 模式/内模式映像提供的物理独立性,让数据库的物理存储细节对应用程序透明。当数据库的存储设备、存储方式等物理因素发生变化时(如从传统硬盘存储升级到固态硬盘存储,或者从本地存储迁移到云端存储),只要调整模式/内模式映像,应用程序就可以不受影响。这对于大型企业或互联网应用来说非常重要,因为这些应用可能需要根据业务发展和成本等因素不断调整数据库的物理存储环境,而物理独立性可以保证应用程序的稳定性和持续性。
- 逻辑独立性