Catalog与Schema

按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题。从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表、视图、字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突的问题了;例如数据库对象表的完全限定名称就可以表示为:Catalog名称.Schema名称.表名称。这里还有一点需要注意的是,SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名。

从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,针对具体问题需要参考具体的产品说明书,比较简单而常用的实现方式是使用数据库名作为Catalog名,使用用户名作为Schema名,具体可参见下表:

表1 常用数据库


供应商


Catalog支持


Schema支持


Oracle


不支持


Oracle User ID


MySQL


不支持


数据库名


MS SQL Server


数据库名


对象属主名,2005版开始有变


DB2


指定数据库对象时,Catalog部分省略


Catalog属主名


Sybase


数据库名


数据库属主名


Informix


不支持


不需要


PointBase


不支持


数据库名

最后一点需要注意的是Schema这个单词,它在SQL环境下的含义与其在数据建模领域中的含义是完全不同的。在SQL环境下,Schema是一组相关的数据库对象的集合,Schema的名字为该组对象定义了一个命名空间,而在数据建模领域,Schema(模式)表示的是用形式语言描述的数据库的结构;简单来说,可以这样理解,数据建模所讲的Schema<也就是元数据>保存在SQL环境下相应Catalog中一个Schema<名叫DEFINITION_SCHEMA>下的表中,同时可以通过查询该Catalog中的另一个Schema<名叫INFORMATION_SCHEMA>下的视图而获取,具体细节不再赘述。

另外我结合MySQL官方的MySQL administrater数据库管理工具理解一下所谓的schema,catalog:

点击那个catalogs,下面就出来了所有的database。想了一下,我这样来总结:

数据库:指的是说MySQL(或者说Oracle等)

schema: 指的是说当偶create database caiceclb时,caiceclb就是一个schema

catalog: 指的是所有的database目录,就像上图显示的那样,将MySQL原来的(mysql,infomation_schema)及后来新建的的database的集合。

时间: 2024-10-03 03:59:38

Catalog与Schema的相关文章

Table configuration with catalog null, schema null错误的一个原因

我在进行Mybatis调试时出现了下面的警告提示: Generation Warnings Occured Table configuration with catalog null, schema null, and table 表名 did not resolve to any tables Mybatis generator操作没有产生结果. 多处找资料发现在我的 generatorConfig.xml文件中: <jdbcConnection driverClass="com.mys

数据库-----catalog与schema简介

在SQL环境下Catalog和Schema都属于抽象概念,主要用来解决命名冲突问题 一个数据库系统包含多个Catalog,每个Catalog包含多个Schema,每个Schema包含多个数据库对象(表.视图.字段等) 如数据库对象表的全限定名可表示为:Catalog名.Schema名.表名 SQL标准并不要求每个数据库对象的完全限定名称是唯一的,就象域名一样,如果喜欢的话,每个IP地址都可以拥有多个域名 从实现的角度来看,各种数据库系统对Catalog和Schema的支持和实现方式千差万别,比较

2016.7.12 Table configuration with catalog null, schema public, and table globalpage did not resolve to any tables(疑)

在eclipse中运行mybatis的generator插件时,出现如下错误提示: Generation Warnings Occured:Table configuration with catalog null, schema public, and table globalpage did not resolve to any tables. 虽然不知道为什么,但是去掉public就OK了??? 去掉再运行就没有错误了.

数据库 schema与catalog

数据库schema与catalog简介 按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要 用来解决命名冲突问题.从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数 据库对象(表.视图.字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该 数据库对象的完全限定名

Catalog &amp; Schema

按照SQL标准的解释,在SQL环境下Catalog和Schema都属于抽象概念,可以把它们理解为一个容器或者数据库对象命名空间中的一个层次,主要用来解决命名冲突问题.从概念上说,一个数据库系统包含多个Catalog,每个Catalog又包含多个Schema,而每个Schema又包含多个数据库对象(表.视图.字段等),反过来讲一个数据库对象必然属于一个Schema,而该Schema又必然属于一个Catalog,这样我们就可以得到该数据库对象的完全限定名称从而解决命名冲突的问题了:例如数据库对象表的

sql-schema与catalog

schema: 指的是说当偶create database caiceclb时,caiceclb就是一个schema catalog: 指的是所有的database目录,就像上图显示的那样,将MySQL原来的(mysql,infomation_schema)及后来新建的的database的集合. catalog,数据库名,schema,表名,服务器的本地名称.数据库名.dbo.表名 schema: 指的是说当用户create database ****时,****就是一个schema catal

JPA注解catalog

Table Table用来定义entity主表的name,catalog,schema等属性. 元数据属性说明: name: 表名catalog: 对应关系数据库中的catalog,如果在entitybean中设置此属性,将在表名前面加上catalog指定的值,注意catalog的值一定是数据库的名称,不然会生成的sql语句回报找不到表的错误.schema:对应关系数据库中的schemaUniqueConstraints:定义一个UniqueConstraint数组,指定需要建唯一约束的列   

JPA学习笔记(3)——JPA注解

Entity Table Id GeneratedValue Basic Column Transient Temporal @Entity @Entity 标注用于实体类声明语句之前.指出该Java 类为实体类,将映射到指定的数据库表. @Table 当实体类与其映射的数据库表名不同名时须要使用 @Table 标注说明,该标注与 @Entity 标注并列使用,置于实体类声明语句之前,可写于单独语句行.也可与声明语句同行. @Table 标注的经常使用选项是 name.用于指明数据库的表名 @T

Spring中常用的注解(@Entity,@Table,@Column,@Repository,@Service)

当项目变得比较大的时候,如何还使用hbm.xml文件来配置Hibernate实体就会变得比较复杂.这里Hibernate提供了Annotation注解方式,使得Hibernate的映射文件变得很方便管理了. 这里简单介绍Hibernate的Annotation注解 一.声明实体 @Entity 对实体注释.任何Hibernate映射对象都要有这个注释 @Table 声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe),目录(Catalog)和schema的名字.该注释不是必须的,