|
|
按照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的集合。
|
|
|
按照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的集合。
|
分享到:
相关推荐
当我们谈论数据库的Catalog与Schema时,源码和工具的角色也很重要。数据库系统的源码中,会包含处理Catalog和Schema的模块,这些模块负责读取、更新和维护Catalog中的信息。开发者可以通过阅读这些源码来了解数据库...
在Eclipse中,XML Schema(XSD)是用于定义XML文档结构的重要工具,它提供了验证XML文件正确性的规则。然而,有时在Eclipse中编辑XML文件时,可能会遇到没有自动提示或验证的问题,这通常是由于Eclipse未能正确关联...
例如,在一个书目XML文档的Schema中,`<catalog>`和`<book>`元素可能分别被定义为`catalogtype`和`elementtype`这两种类型,这些类型在Schema文档的其他部分会被详细定义。 XML Schema还提供了注解(annotation)...
3. **关联XML文件和Schema**:在XML文件中,通过`xsi:schemaLocation`或`xmlns:xs`属性将XML文件与Schema关联起来。例如: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
XSD(XML Schema Definition)是另一种用于描述XML文档结构的规范,相比DTD,它提供了更强大的功能和表达能力。XSD允许定义数据类型、使用命名空间、设置约束条件等。XSD文件可以更精确地控制元素和属性的值,如数字...
jPDL4Schema 校验 jPDL(Java Process Definition Language)是一种流程定义语言,由 jBPM(Java Business Process Management)开发。jPDL 用于描述业务流程,并以 XML 文件的形式存储。在 jBPM3 中,需要两个文件...
标题 "org.jibx.schema.org.oasis_open.committees.entity.release._1_0.catalog-1.0.6.zip" 暗示我们正在处理一个与Java相关的开源项目,它可能涉及XML Schema(XSD)和数据绑定框架JiBX。 JiBX是一个强大的工具,...
例如,`sql_catalog`包含了临时表、数据类型、提交类型、存储方式、字符集、对象列表、对象类型、SQL类型、事务、版本、schema等元素。此外,还有`sql_trans`用于管理事务状态,`sql_column`表示列信息,`sql_index`...
XMLCatalog是一种机制,它存储了URI(统一资源标识符)与本地路径的映射关系,这样当解析XML文档时,解析器可以找到对应的DTD或XSD文件,而无需在网络上搜索。这有助于提高解析速度,同时允许离线工作。 在Eclipse...
《Python库NTI.zope_catalog-3.0.0:构建高效索引与查询的工具》 在Python的开发世界中,有一款名为`nti.zope_catalog`的库,它在3.0.0版本中提供了强大的后端索引和查询功能。此库主要针对那些需要高效数据检索和...
Eclipse dubbo Multiple ...add->catalog entry ->file system 选择刚刚下载的文件路径 修改key值和配置文件的http://code.alibabatech.com/schema/dubbo/dubbo.xsd 相同 回到项目,左击配置文件xml 选择validate
mongoose-schema-export --excludeModels=Catalog,PrintJob --excludeFields=__v --cwd=main/src/app/id --pattern=**/*.model.js --format=drawio --output=drawio.xml 选项: -f, --format Output format. ...
- **Meerdere schema’s in één database**: 如有多个数据库模式,需要适当地在ReportNet中配置。 - **Query Items aanpassen naar het gewenste Usage formaat**: 可能需要调整查询元素以符合ReportNet的使用格式...
Hibernate通过XML文件将Java对象与数据库表进行绑定,使得开发人员可以更加便捷地处理数据库操作。 在给出的`<hibernate-mapping>`标签内,我们看到了一个类`com.hibernate.model.SystemClassInfo`的映射,它对应...
Java JSON Schema和Hyper-Schema生成器。 当前,它基于v4草案。 支持Java 8日期和时间API。 最新发布 < groupId>com.github.reinert</ groupId> < artifactId>jjschema < version>1.16 简单的操作方法 假设...
@Table(name="",catalog="",schema="") - 可选,通常和@Entity 配合使用,只能标注在实 体的 class 定义处,表示实体对应的数据库表的信息。 属性: name - 可选,表示表的名称,默认地,表名和实体名称一致,只有在...
下载一个dubbo.xsd文件windows->preferrence->xml->xmlcatalog add->catalog entry ->file system 选择刚刚下载的文件路径 修改key值和配置文件的http://code.alibabatech.com/schema/dubbo/dubbo.xsd 相同 保存即可...
如果表名与实体类名不同,或者需要指定数据库的 Catalog 和 Schema,就需要使用这个注解。 3. **@Id**: 必须的注解,它定义了实体类中的主键属性。每个实体只能有一个主键属性。`@Id` 通常放在 getter 方法之前,...
Java 程序使用 JPA 注解可以实现对象关系映射(ORM),使得 Java 应用程序能够与关系数据库进行交互。JPA(Java Persistence API)提供了多种注解来定义实体类与数据库表之间的映射关系。 @Table 注解 @Table 注解...