乐趣区

关于数据库:数据库中的-Catalog-和-Schema

依照 SQL 规范的解释,在 SQL 环境下 Catalog 和 Schema 都属于抽象概念,能够把它们了解为一个容器或者数据库对象命名空间中的一个档次,次要用来解决命名抵触问题。从概念上说,一个数据库系统蕴含多个 Catalog,每个 Catalog 又蕴含多个 Schema,而每个 Schema 又蕴含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个 Schema,而该 Schema 又必然属于一个 Catalog,这样咱们就能够失去该数据库对象的齐全限定名称从而解决命名抵触的问题了;例如数据库对象表的齐全限定名称就能够示意为 Catalog 名称.Schema 名称. 表名称 。这里还有一点须要留神的是,SQL 规范并不要求每个数据库对象的齐全限定名称是惟一的,就象域名一样,如果有须要,每个 IP 地址都能够领有多个域名。

从实现的角度来看,各种数据库系统对 Catalog 和 Schema 的反对和实现形式千差万别,针对具体问题须要参考具体的产品说明书,比较简单而罕用的实现形式是应用数据库名作为 Catalog 名,应用用户名作为 Schema 名,具体差异可见下表。

供应商 Catalog 反对 Schema 反对
Oracle 不反对 Oracle User ID
MySQL 不反对 数据库名

最初一点须要留神的是 Schema 这个概念,在 SQL 环境下的含意与其在数据建模畛域中的含意是齐全不同的。 在 SQL 环境下,Schema 是一组相干的数据库对象的汇合,Schema 的名字为该组对象定义了一个命名空间 ,而在数据建模畛域,Schema(模式)示意的是用形式语言形容的数据库的构造;简略来说,能够这样了解,数据建模所讲的 Schema(也就是元数据)保留在 SQL 环境下相应 Catalog 中一个 Schema(名叫 DEFINITION_SCHEMA)下的表中,同时能够通过查问该 Catalog 中的另一个 Schema(名叫 INFORMATION_SCHEMA)下的视图而获取,具体细节不再赘述。

参考
  • ISO/IEC 9075-2:2003 – Database Language SQL (SQL-2003)
  • Database-specific Catalog and Schema Considerations
退出移动版