Catalog与Schema

2024-04-18 02:32
文章标签 schema catalog

本文主要是介绍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的集合。

 
 

    按照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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913534

相关文章

MySQL数据类型和Schema优化(二)

MySQL数据类型和Schema优化 MySQL合适的数据类型日期和时间类型(datetime、timesamp)整数类型实数类型(float\double\decimal)字符串类型(Varchar、Char) Schema设计缓存表和汇总表 MySQL 良好的逻辑设计与物理设计是高性能的基石,应该根据具体业务需求的查询语句来设计schema,这往往需要权衡各种因素。 比如

Spring源码学习--使用XML Schema文档对XML实例文档校验

文章摘要 在实际开发中读取xml文档的时候,一般都需要先校验,如果使用Sun的XML相关软件包会令你云里雾里。W3C这块的XML相关的规范相当的多,这也是导致XML处理器起来费劲的主要原因。如果xml对应的xsd文档已经定义好,则可以之间复用下面代码对xml文档格式和内容是否合法进行验证。 一、xsd校验xml工具类 import javax.xml.parsers.SA

JAX-WS - 通过xjc命令把Schema生成Java

一、说明     1、使用示例 D:\Works\WebServices\TestXml\src>xjc -d D:\Works\WebServices\TestXml\src -verbose user.xsd     2、常用参数         -d dirName     : 指定生成的文件的存放路径         -p pkgName     : 指定目标包

通过 GitHub Actions 执行数据库 Schema 变更工作流

原文地址 https://www.bytebase.com/docs/tutorials/github-ci/ 教程库:https://github.com/bytebase/github-action-example 开发者们喜欢将 Schema 变更脚本与应用程序代码一起保存在 Git 中,这样变更脚本就能像应用程序代码一样接受审核和版本控制,但仍需将变更脚本手动粘贴到 SQL 客户端,或

java操作phoenix查询指定table_schema中的数据

原因:     1.phoenix映射hbase表的时候,如果hbase表是存放在某个命名空间下面的话,phoenix创建表的时候必须创建table_schema以后在取创建表,然后才能映射成功 解决方法:         1.如果用./sqlline.py 命令去启动的话,访问schema中的表数据的时候要先使用use <table_schema>命令先指定特定的schema,然后在去访问

IDEA创建MAVEN项目卡在Generating project in Batch mode以及解决 No archetype found in remote catalog警告问题

解决步骤 1.本地仓库要有archetype-catalog-3.1.2.jar 的jar包 注意:本地仓库jar包的获取可以通过修改settings.xml文件中的mirror从阿里云中加载 网上教程很多 就不赘述了。但是如果修改了setting.xml文件,记得在本地仓库下载完成后将其修改还原。 2.要有archetype-catalog.xml 文件 这个文件的下载,因为被墙的原因下载

Avro Schema格式

Avro Schema格式 Avro是一个数据序列化系统,主要用于支持大批量数据交换的应用。 特点: 支持二进制序列化方式,可以便捷、快速的处理大量数据;动态语言有好,Avro提供的机制使动态语言可以方便的处理Avro数据 1.Avro Schema结构 {"type":"record","name":"aaa","namespace":"bbb","fields":[{"name":"

openGuass——表空间、数据库、Schema详解

目录 一、表空间 二、数据库 三、模式:Schema 四、database schema table之间的关系 五、表 六、分区表 七、索引 八、视图 九、序列 十、同义词 十一、约束 一、表空间 自带了两个表空间:pg_default和pg_global。查看命令:\db 默认表空间pg_default:用来存储非共享系统表、用户表、用户表index、临时表

XML(3)——认识Schema

背景:最近发现自己的时间有点不够用,学习到的东西很多,可是总结的时间少得可怜,常常是学习完过好长一段段时间才有机会去总结。这不,这个XML视频两个星期前就看完了,现在才做总结,唉,时间呀……。这个Schema又是一个新的名词,但和XML有联系,也算是旧知识了吧。 一、定义 描述XML文档的结构; 是基于XML的DTD替代者; Schema也可称为 XSD(XML Schema D

在MySQL中基本认为schema和数据库相同,也就是说schema的名称和数据库的实例的名称相同,一个数据库有一个schema。

在SQL环境下,schema就是数据库对象的集合,所谓的数据库对象也就是常说的表,索引,视图,存储过程等。 在schema之上的,就是数据库的实例,也就是通常create databases获得的东西。也就是说一个schema 实例 可以有多个schema, 可以给不同的用户创建不同的schema,并且他们都是在同一数据库实例下面。 在MySQL中基本认为schema和数据库相同,也就是