数据库系统模式(schema)和模型(model)详解
数据(data)是描述事物的符号记录。
模型(Model)是现实世界的抽象。
数据模型(Data Model)是数据特征的抽象,是数据库管理的教学形式框架。数据库系统中用以提供信息表示和操作手段的形式构架。数据模型包括数据库数据的结构部分、数据库数据的操作部分和数据库数据的约束条件。
数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。
在数据模型中有“型”(Type)和“值”的概念。型是指对某一类数据的结构和属性的说明,值是型的一个具体赋值。
模式(schema)
数据模式,有时简称模式,是基于选定的数据模型对数据进行“型”(Type)方面的刻画,不涉及具体的值,而相应的“实例”(Instance)则是对数据“值”方面的描述。先有数据模型,才能据其讨论相应数据模式,有了数据模式,就能依据该模式得到相应的实例。
数据模式(Data schema)是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。模式的一个具体值称为一个实例。同一个模式可以有很多实例。
模式是相对稳定的,而实例是相对变动的,因为数据库中的数据是在不断更新。模式反映的是数据的结构及其联系,而实例反映的是数据库某一时刻的状态。
数据模型按不同的应用层次分成三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。
概念数据模型(Conceptual data model),是面向数据库用户的实现世界的模型,主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等,与具体的数据管理系统(Database Management System,简称DBMS)无关。概念数据模型必须换成逻辑数据模型,才能在DBMS中实现。
概念模型用于信息世界的建模,一方面应该具有较强的语义表达能力,能够方便直接表达应用中的各种语义知识,另一方面它还应该简单、清晰、易于用户理解。
在概念数据模型中最常用的是E-R模型、扩充的E-R模型、面向对象模型及谓词模型。
逻辑数据模型(Logical data model),这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型(Network Data Model)、层次数据模型(HierarchicalData Model)、关系数据模型( relational datamodel)等等。此模型既要面向用户,又要面向系统,主要用于数据库管理系统(DBMS)的实现。
物理数据模型(Physical data model),是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。每一种逻辑数据模型在实现时都有起对应的物理数据模型。DBMS为了保证其独立性与可移植性,大部分物理数据模型的实现工作由系统自动完成,而设计者只设计索引、聚集等特殊结构。
数据库系统三级模式结构
数据模式(Data schema)是一个数据库完整的数据描述形式。是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。
虽然实际的数据库管理系统产品种类很多,它们支持不同的数据模型,使用不同的数据库语言,建立在不同的操作系统之上,数据的存储结构也各不相同,但它们在体系结构上通常具有相同的特征,即采用三级模式结构并提供两级映像功能。
数据视图(Data view)是指从某个角度看到的客观世界数据对象的特征。
外模式(External Schema),外模式也称子模式(Subschema)或称用户模式(User’s schema)它是用户的数据视图,亦即是用户所见到的模式的一个部分,是与某一应用有关的数据的逻辑表示。它由概念模式推导而出,概念模式给出了系统全局的数据描述而外模式则给出每个用户的局部描述。一个概念模式可以有若干个外模式,每个用户只关心与它有关的模式,这样可以屏蔽大量无关信息且有利于数据保护,因此对用户极为有利。在一般的DBMS中都提供有相关的外模式描述语言(外模式DDL)。
概念模式(Conceptual Schema),也称逻辑模式(logical Schema),简称模式(Schema),概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图,是数据库系统三级模式结构的中间层,此种描述是一种抽象的描述,它不涉及具体的硬件环境与平台,也与具体的软件环境无关。
概念模式主要描述数据的概念记录类型及数据以及它们间的关系,它还包括一些数据间的语义约束,对它的描述可用DBMS中的DDL语言定义。
内模式(Internal Schema),也称存储模式(Storage Schema),又称物理模式(PhysicalSchema),它给出了数据库物理存储结构与物理存取方法的描述,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还不深入到设备级上(如磁盘及磁盘操作),但近年来有向设备级发展的趋势(如原始磁盘、磁盘分块技术等),DBMS一般提供相关的内模式描述语言(内模式DDL)。
=========================
数据模型(data model)是一个可用于描述数据库结构的概念集合,它提供了实现数据抽象所必需的方法。通过隐藏大多数数据库用户不需要的数据存储细节,来提供某些层次的数据抽象。在提到数据库结构时,我们指的是数据类型、关系以及数据需要保证的一些约束。大多数数据模型还包括一组基本操作(basic operation),以指定对数据库的检索和更新。
数据模型的分类
可以根据其用以描述数据库结构的概念类型来分类。高级数据模型(high-level data model)或概念数据模型(conceptualdata model)提供的概念与许多用户理解数据的方式很相近,而低级数据模型(low-level data model)或物理数据模型(physicaldata model)所提供的概念则描述了数据如何在计算机上存储的具体细节。低级数据模型提供的概念通常对计算机专家很有意义,但对于一般的最终用户而言则没什么用处。在这两种极端之间是一类表示(或实现)数据模型(representational/implementation data model),这种数据模型提供的概念可以为最终用户所理解,但也没有太背离数据在计算机中的组织方式。表示数据模型隐藏了数据存储的一些细节,但可以用一种直接的方式在计算机系统上实现。
概念数据模型使用了诸如实体、属性和关系等概念。
数据库的描述称为数据库模式(database schema)。
数据库中的实际数据可能会被频繁修改。一个特定时刻数据库中的即时数据称为数据库状态(database state)或快照(snapshot)。也可以称之为数据库中的当前出现(occurrence)或实例(instance)集。在一个给定的数据库状态下,每个模式构造(schema construct)都有其自己的当前实例集。模式中的各个对象称为一个模式构造(schema construct)。
对应于一个特定的数据库模式,可以构建多个数据库状态。每次插入或删除一条记录,或修改某条记录中的一个数据项值时,都会将数据库从一个状态转换至另一个状态。
数据库模式和数据库状态之间的区别非常重要。当我们定义一个新数据库时,只是将其数据库模式指定给DBMS。此时,与之相对应的数据库状态为空状态(还没有数据)。当我们第一次将初始数据装入或加载到数据库中时,将获得该数据库的初始状态。此后,只要向数据库应用一个更新操作,就会得到另一个数据库状态。在任何一个时刻,数据库都有一个当前状态。
三层模式体系结构的目的是将用户应用与物理数据库分离开来。在这个体系结构中,可以将模式定义在如下3个层次:
外部层(external level)或视图层(view level)包括许多外模式(externalschema)或用户视图(user view)。每个外模式描述的是一个特定用户组所感兴趣的那部分数据库,而对该用户组隐藏了数据库的其他部分。与概念层中介绍的一样,各个外模式通常都用一个表示数据模型实现,并且可能以高级数据模型的一个外模式设计为基础。
概念层(conceptual level)有一个概念模式(conceptual schema),它为用户群体描述了整个数据库的结构。概念模式隐藏了物理存储结构的细节,并重点描述实体、数据类型、关系、用户操作和约束。通常,实现了一个数据库系统之后,会使用一个表示数据模型来描述概念模式。这种实现概念模式通常以高级数据模型中的一个概念模式设计为基础。
内部层(internal level)有一个内模式(internal schema),它描述的是数据库的物理存储结构。内模式使用一个物理数据模型,全面描述了数据库中数据存储的全部细节和存取路径。
在各层间完成请求和结果转换的过程称为映射(mapping)。利用三层模式体系结构,可以更容易地实现真正的物理和逻辑数据独立性。映射可能很耗时,以至于降低了DBMS的效率。正因如此,很少有DBMS实现了完整的三层模式体系结构。
===============
关系模型与关系模式
关系模型:用二维表的形式表示实体和实体间联系的数据模型。
关系模型的组成:
数据结构——关系,从用户角度看,关系模型中数据的逻辑结构是一张二维表。
关系操作——常用的关系操作包括查询操作和插入、删除、修改操作两大部分。【基于关系代数或关系演算,包括:选择、投影、连接、除、并、交、差等。】
关系的数据完整性,包括:域完整性、实体完整性、参照完整性和用户自定义的完整性。
关系数据模型是以集合论中的关系概念为基础发展起来的。关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系来表示。在实际的关系数据库中的关系也称表。一个关系数据库就是由若干个表组成。
关系模型主要是用二维表格结构表达实体集,用外键表示实体间联系。关系模型是由若干个关系模式组成的集合。关系模式相当于记录类型。
关系模式是对关系的描述。关系模式是型(type),关系是它的值。关系实际上就是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系统称为关系,读者可以从上下文中加以区别。
关系的描述称为关系模式(Relation Schema)它可以形式化地表示为:
R(U,D,dom,F)
其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。
通常简记为:
R(U)或R(A1,A2,…,An)
其中R为关系名,U为属性名集合,A1,A2,…,An为各属性名。
关系数据库的三级或三层模式结构
子模式是用户所用到的那部分数据的描述。除了指出用户的数据外,还应指出模式和子模式之间的对应性。
模式实际就是记录类型,包括:模式名、属性名、值域名及模式的主键。他不涉及物理存储方面的描述,只是对数据特性的描述。
内模式,关系存储时的基本组织方式是文件,元组是文件中的记录。由于关系模式有键,因此存储一个关系能用散列方法或索引方法实现。