一、概念模式(schema)
定义:也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
理解:
①
一个数据库只有一个概念模式;
②
是数据库数据在逻辑级上的视图;
③
数据库模式以某一种数据模型为基础;
④
定义模式时不仅要定义数据的逻辑结构(如数据记录由哪些数据项构成,数据项的名字、类型、取值范围等),而且要定义与数据有关的安全性、完整性要求,定义这些数据之间的联系。
二、外模式(external
schema)
定义:也称子模式(subschema)或用户模式,是数据库用户(包括应用程序员和最终用户)能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
理解:
①
一个数据库可以有多个外模式;
②
外模式就是用户视图;
③
外模式是保证数据安全性的一个有力措施。
三、内模式(internal
schema)
定义:也称存储模式(storage
schema),它是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式(例如,记录的存储方式是顺序存储、按照b树结构存储还是按hash方法存储;索引按照什么方式组织;数据是否压缩存储,是否加密;数据的存储记录结构有何规定)。
理解:
①
一个数据库只有一个内模式;
②
一个表可能由多个文件组成,如:数据文件、索引文件。
它是数据库管理系统(dbms)对数据库中数据进行有效组织和管理的方法
其目的有:
①
为了减少数据冗余,实现数据共享;
②
为了提高存取效率,改善性能。
The general technique of isolating the parts of a program that deal with how data are represented from the parts that deal with how data are manipulated is a powerful design methodology called data abstraction.
分离数据的形式和处理过程。
An abstraction barrier violation occurs whenever a part of the program that can use a higher level function instead uses a function in a lower level.
当函数运行时,本应调用高级别子函数却使用低级别子函数时,即遇到抽象隔离。
首先,代码规划必须规范,即整个系统使用同一个数据对象实例,并且使用同一个较好的数据库抽象层。如果有一天用户要求将Oracle切换到MySQL,则只需要改变系统的配置文件即可。
在当今工业领域中,每个数据库开发商如微软、Oracle、MySQL,都有自己的一套SQL标准,它们声称是按照ANSI SQL92标准而增加自己的特性,以达到垄断或占领市场的目的。
优秀的数据库抽象层,会根据我们使用的数据库自动调整一些SQL性能。当没有使用数据库本身特定的特性时,就不必更改太多的数据库连接和数据库SQL查询。
使用数据库抽象层的其他好处是:其性质、概念简化了复杂的任务。因此,我们不必学习某个数据库系统的全新特性,而只用一个标准的抽象层的代码特性即可。
虽然这是一种理想化,但随着技术的发展,相信数据库抽象层会为我们做更多的事。
使用PHP进行不同的数据库系统开发,这些系统很不相同,而许多数据库抽象层在PHP的层次有所不同,但彼此使用方法相当,它的发展无疑会提高开发效率。
请看图17-1,观察有数据抽象层和没有数据抽象层的区别。
数据库抽象层的主要性能指标是速度,由于数据库抽象层是额外的代码层,因为面向不同的架构与体系,因此有的效率较高,有的则相对比较慢些。
如Metabase是PHP中较慢的一个数据抽象层,它使用C语言编写,因为它的设计与可移植性最高,而PDO和ADODB是当今世界最快的数据库抽象类。
图17-1
如果您非常关注系统的效率和性能,则可以按自己的基准,设置模拟环境,编写代码,测试每个数据库抽象层(类)的性能。
用数据库抽象层,意味着当从一个数据库系统向另一个数据库系统迁移时,几乎不用更改太多的程序代码,如将MS SQL Server迁移到MySQL。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)