数据库schema与catalog简介
来源:互联网 发布:php删除数组元素 编辑:程序博客网 时间:2024/06/06 00:12
按照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:
图1 MySql
点击那个catalogs,下面就出来了所有的database。想了一下,我这样来总结:
数据库:指的是说MySQL(或者说Oracle等)
schema: 指的是说当偶create database caiceclb时,caiceclb就是一个schema
catalog: 指的是所有的database目录,就像上图显示的那样,将MySQL原来的(mysql,infomation_schema)及后来新建的的database的集合。
- 数据库 schema 与 catalog 简介
- 数据库schema与catalog简介
- 数据库-----catalog与schema简介
- 数据库schema与catalog简介
- 数据库-----catalog与schema简介
- 数据库中schema与catalog简介
- 数据库schema与catalog
- 数据库schema与catalog的理解
- 数据库schema、catalog
- Catalog与Schema
- Catalog与Schema
- 数据库CATALOG跟SCHEMA的意思
- Schema Catalog
- Catalog & Schema
- 什么是schema和catalog
- Catalog和Schema
- Database catalog and schema
- Creating the Recovery Catalog Schema
- 黑马程序员_String类
- Cocos2dx物理引擎碰撞检测总结
- T-SQL查询进阶--详解公用表表达式(CTE)
- WCF 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
- 讲一个历史上真实存在过,数学家们花了好多年才解出来的数学题
- 数据库schema与catalog简介
- sed命令详解
- Maven常用命令
- c语言中的重定向符号<与>总结
- gcc
- Xcode升级了6.3 出现的警告:Auto property synthesis will not synthesize property
- Android之自动显示软键盘
- Spring security入门
- SVN项目检出报错