数据库系统的数据库模式是以数据库管理系统(DBMS)支持的形式语言描述的结构。术语“模式”指的是指将数据组织为数据库构建方式的蓝图(在关系数据库的情况下分为数据库表)。数据库模式的正式定义是对数据库施加的一组称为完整性约束的公式(句子)。这些完整性约束确保了模式各部分之间的兼容性。所有约束都可以用同一种语言表达。数据库可以被认为是实现数据库语言的一种结构。[1] 被创建的概念模式的状态被转换成显式映射,即数据库模式。这描述了真实世界的实体是如何在数据库中建模的。
“数据库模式根据数据库管理员对可能应用程序的了解,指定可以进入数据库的事实,或可能最终用户感兴趣的事实”[2] 数据库模式的概念与谓词演算中的理论概念起着相同的作用。这个“理论”的一个模型与一个数据库非常接近,它在任何时刻都可以被看作是一个数学对象。因此,模式可以包含专门针对应用程序的完整性约束和专门针对某种数据库类型的约束的公式,所有这些都用相同的数据库语言表示。[1] 在关系数据库中,模式定义了表、字段、关系模型、视图、索引、包、过程、函数、队列、触发器、类型、序列、物化视图、同义词、数据库链接、目录、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模式中的重叠信息可以用中介模式来表示:[3]
Flight(f-num, date, time, price)
在Oracle数据库的上下文中,模式对象是一种逻辑数据存储结构。[4]
Oracle数据库为每个数据库用户关联一个单独的模式。[5]模式包括模式对象的集合。模式对象的示例包括:
· 表(tables)
· 视图(views)
· 序列(sequences)
· 同义词(synonyms)
· 索引(indexes)
· 集群(clusters)
· 数据库链接(database links)
· 快照(snapshots)
· 过程(procedures)
· 函数(functions)
· 包(packages)
另一方面,非模式对象可能包括:[6]
· 用户(users)
· 角色(roles)
· 上下文(contexts)
· 目录对象(directory objects)
模式对象与存储其信息的磁盘上的物理文件没有一对一的对应关系。但是,Oracle数据库将模式对象逻辑存储在数据库的表空间中。每个对象的数据都包含在表空间的一个或多个数据文件中。对于某些对象(如表、索引和集群),数据库管理员可以指定Oracle RDBMS为表空间数据文件中的对象分配多少磁盘空间。
模式和表空间之间没有必要的关系:表空间可以包含来自不同模式的对象,单个模式的对象可以驻留在不同的表空间中。
^Rybinski, H. (1987). "On First-Order-Logic Databases". ACM Transactions on Database Systems. 12 (3): 325–349. doi:10.1145/27629.27630..
^Imielinski, T.; Lipski, W. (1982). A systematic approach to relational database theory. Proceedings of the 1982 ACM SIGMOD International Conference on Management of Data (SIGMOD '82). New York, NY: ACM. pp. 8–14. doi:10.1145/582353.582356. ISBN 978-0897910736..
^Pottinger, P.; Berstein, P. (2008). Schema merging and mapping creation for relational sources. Proceedings of the 11th International Conference on Extending Database Technology: Advances in Database Technology (EDBT '08). New York, NY: ACM. pp. 73–84. CiteSeerX 10.1.1.405.2990. doi:10.1145/1353343.1353357. ISBN 9781595939265..
^Ashdown, Lance; Kyte, Tom (February 2010). Oracle Database Concepts 11g Release 2 (11.2). et al. Oracle Corporation. Retrieved 2010-04-14. A database schema is a logical container for data structures, called schema objects. Examples of schema objects are tables and indexes..
^Oracle Database Concepts 10g Release 2 (10.2)Part Number B14220-02. Retrieved 2012-11-26. A schema is a collection of logical structures of data, or schema objects. A schema is owned by a database user and has the same name as that user. Each user owns a single schema. Schema objects can be created and manipulated with SQL..
^Ashdown, Lance; Kyte, Tom (February 2010). Oracle Database Concepts 11g Release 2 (11.2). et al. Oracle Corporation. Retrieved 2010-04-14. Other types of objects are also stored in the database and can be created and manipulated with SQL statements but are not contained in a schema. These objects include database users, roles, contexts, and directory objects..
暂无