按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突的问题了;例如数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称。这里还有一点需要注意的是,SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。
从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:
最后一点需要注意的是Schema这个单词,它在SQL环境下的含义与其在数据建模领域中的含义是完全不同的。在SQL环境下,Schema是一组相关的数据库对象的集合,Schema的名字为该组对象定义了一个命名空间,而在数据建模领域,Schema(模式)表示的是用形式语言描述的数据库的结构;简单来说,可以这样理解,数据建模所讲的Schema<也就是元数据>保存在SQL环境下相应Catalog中一个Schema<名叫DEFINITION_SCHEMA>下的表中,同时可以通过查询该Catalog中的另一个Schema<名叫INFORMATION_SCHEMA>下的视图而获取,具体细节不再赘述。
参考资料:
1. ISO/IEC 9075-2:2003 - Database Language SQL (SQL-2003)
2. Database-specific Catalog and Schema Considerations
3. What is a Schema in SQL Server 2005?
分享到:
相关推荐
在数据库管理中,Catalog(目录)和Schema(模式)是两个非常重要的概念,它们构成了数据库组织和管理的基础。本文将深入探讨这两个概念,以及它们在实际应用中的作用。 首先,让我们来理解什么是Catalog。在数据库...
### GreenPlum数据库常用命令详解 #### 一、数据库启动:`gpstart` - **基本用法**:`gpstart` 是Greenplum数据库管理工具的一部分,主要用于启动Greenplum数据库集群。 - **常用参数**: - `-a`: 直接启动,不...
- `db2 catalog tcpip node remote server ostype` 编目一个TCP/IP节点,允许连接到远程数据库服务器。 - `db2 uncatalog node` 取消节点编目,移除不再需要的节点信息。 2. **数据库目录**: - `db2 list ...
首先,Catalog在MonetDB中扮演着至关重要的角色,它是数据库对象的元数据仓库,包含了关于数据库模式(schema)、表、列、索引、约束、函数以及事务等所有信息。`sql_catalog.h`文件中定义了各种数据结构,用于表示...
### DB2数据库导出方法详解 #### 一、引言 在DB2数据库管理系统中,进行数据迁移或备份是一项常见的任务。本文将详细介绍几种常用的DB2数据库导出方法及其应用场景,帮助用户根据自身需求选择最适合的操作方式。 ...
- `getImportedKeys(String catalog, String schema, String table)` 和 `getExportedKeys(String catalog, String schema, String table)`:分别用于获取外键引用(导入)和外键定义(导出)。 5. **构建DDL脚本*...
1. **数据库模式(Schema)和数据库名称(Catalog)**:SQL Server中,`schema`和`catalog`的概念与MySQL中的数据库概念不同。在MySQL中,一个数据库就是一个包含多个表的集合,而在SQL Server中,`schema`可以理解...
- `getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)`:返回表的索引信息,包括索引名、是否唯一、索引类型等。 4. **获取存储过程信息**: - `getProcedures...
`db2catalogtcpipnode<node_name>remote|ip_address>server|port_number>ostype|AIX|WIN95|NT|HPUX|SUN|MVS|OS400|VM|VSE|SCO|SGI|LINUX|DYNIX>` 通过这个命令,你可以将一个远程的DB2实例注册为本地系统的节点。这...
c#获取数据库中所有表名称的方法 在软件开发过程中,经常需要获取数据库中的所有表名称,以下总结了六种使用c#实现获取数据库中所有表名称的方法。 一、使用SQLDMO SQLDMO是操作SQL Server的理想方式,如果数据库...
Initial Catalog=Student;Integrated Security=SSPI"; SqlConnection connection = new SqlConnection(connectionString); ``` 上述代码定义了一个连接字符串,并创建了`SqlConnection`对象。连接字符串包含了...
在C#编程中,动态获取数据库中的所有查询和视图是一项关键任务,这通常涉及到数据库的元数据操作。本文将深入探讨如何利用C#来获取这些信息,特别是关于视图和存储过程的详细内容。 首先,我们需要连接到数据库。在...
cursor.execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'database_name'") tables = cursor.fetchall() for table in tables: old_name = table[0] new_name = old_name....
openGauss基本管理 ...每个数据库都有pg_catalog schema,它包含系统表、内置数据类型、函数、操作符。搜索路径(search_path)始终以pg_temp和pg_catalog这两个schema作为搜索路径顺序中的前两位。
* getTables(catalog, schema, tableNames, columnNames):返回表名与 tableNames 相符而且列名与 columnNames 相符的所有表的说明。 * getColumns(catalog, schema, tableName, columnName):返回指定表中的列信息...
- `getIndexInfo(String catalog, String schema, String table, boolean unique, boolean approximate)`:获取表的索引信息。 - `getPrimaryKeys(String catalog, String schema, String table)`:获取表的主键...
现在,你可以在SQL Server 2000中使用四部分名称(server_name.catalog.schema.object)来查询Oracle数据库中的数据。 需要注意的是,由于SQL Server和Oracle的数据类型可能存在差异,因此在执行跨数据库查询时可能...
例如,我们可以使用`sys.objects`(SQL Server)或`information_schema.tables`(大多数关系型数据库)来获取表的元数据。 ```csharp string query = "SELECT * FROM sys.objects WHERE type = 'U'"; SqlCommand ...
`@Table` 注解中可以包含 `schema` 和 `catalog` 属性来指定表所在的 schema 和 catalog。此外,还可以使用 `@UniqueConstraints` 来定义表的唯一约束。例如: ```java @Entity @Table(name="tbl_sky", ...