数据库系统的数据库模式是以数据库管理系统(DBMS)支持的形式语言描述的结构。术语“模式”指的是指将数据组织为数据库构建方式的蓝图(在关系数据库的情况下分为数据库表)。数据库模式的正式定义是对数据库施加的一组称为完整性约束的公式(句子)。这些完整性约束确保了模式各部分之间的兼容性。所有约束都可以用同一种语言表达。数据库可以被认为是实现数据库语言的一种结构。 被创建的概念模式的状态被转换成显式映射,即数据库模式。这描述了真实世界的实体是如何在数据库中建模的。
“数据库模式根据数据库管理员对可能应用程序的了解,指定可以进入数据库的事实,或可能最终用户感兴趣的事实” 数据库模式的概念与谓词演算中的理论概念起着相同的作用。这个“理论”的一个模型与一个数据库非常接近,它在任何时刻都可以被看作是一个数学对象。因此,模式可以包含专门针对应用程序的完整性约束和专门针对某种数据库类型的约束的公式,所有这些都用相同的数据库语言表示。 在关系数据库中,模式定义了表、字段、关系模型、视图、索引、包、过程、函数、队列、触发器、类型、序列、物化视图、同义词、数据库链接、目录、XML模式和其他元素。
数据库通常将其模式存储在数据字典中。尽管模式是用文本数据库语言定义的,但该术语通常用来指数据库结构的图形描述。换句话说,模式是定义数据库中对象的数据库结构。
在甲骨文(Oracle)数据库系统中,“模式”一词的含义略有不同。
模式集成的理想需求
下面列出的需求影响了所产生的模式的详细结构。某些应用程序不需要满足所有这些条件,但这四个要求是最理想的。
重叠保存
输入映射中指定的每个重叠元素也属于数据库模式关系。
扩展重叠保存
与源的重叠元素相关联的源特定元素被传递到数据库模式中。
规范化
源数据中的独立实体和关系不应在数据库模式中以相同的关系分在一组。特别是,如果分组共同定位独立的实体或关系,源特定的模式元素不应与重叠的模式元素分在一组。
最小性
如果删除数据库模式的任何元素,那么数据库模式就不理想。
两个模式集成的示例
假设我们想要一个中介(数据库)模式来集成两个旅行数据库,Go-travel和Ok-travel。
Go-travel 数据库存在两种关系:
Go-flight(f-num, time, meal(yes/no))
Go-price(f-num, date, price)
(f-num 是航班号)
Ok-travel数据库只有一个关系:
Ok-flight(f-num, date, time, price, nonstop(yes/no))
Ok-travel和Go-travel模式中的重叠信息可以用中介模式来表示:
Flight(f-num, date, time, price)
Oracle数据库特异性
在Oracle数据库的上下文中,模式对象是一种逻辑数据存储结构。
Oracle数据库为每个数据库用户关联一个单独的模式。模式包括模式对象的集合。模式对象的示例包括:
· 表(tables)
· 视图(views)
· 序列(sequences)
· 同义词(synonyms)
· 索引(indexes)
· 集群(clusters)
· 数据库链接(database links)
· 快照(snapshots)
· 过程(procedures)
· 函数(functions)
· 包(packages)
另一方面,非模式对象可能包括:
· 用户(users)
· 角色(roles)
· 上下文(contexts)
· 目录对象(directory objects)
模式对象与存储其信息的磁盘上的物理文件没有一对一的对应关系。但是,Oracle数据库将模式对象逻辑存储在数据库的表空间中。每个对象的数据都包含在表空间的一个或多个数据文件中。对于某些对象(如表、索引和集群),数据库管理员可以指定Oracle RDBMS为表空间数据文件中的对象分配多少磁盘空间。
模式和表空间之间没有必要的关系:表空间可以包含来自不同模式的对象,单个模式的对象可以驻留在不同的表空间中。