电竞比分网-中国电竞赛事及体育赛事平台

分享

數(shù)據(jù)庫(kù)Schema兩種含義

 Jimmy Booker 2012-04-24
數(shù)據(jù)庫(kù)Schema兩種含義
2010-09-01 17:07
數(shù)據(jù)庫(kù)Schema有兩種含義,一種是概念上的Schema,指的是一組DDL語(yǔ)句集,該語(yǔ)句集完整地描述了數(shù)據(jù)庫(kù)的結(jié)構(gòu)。還有一種是物理上的 Schema,指的是數(shù)據(jù)庫(kù)中的一個(gè)名字空間,它包含一組表、視圖和存儲(chǔ)過(guò)程等命名對(duì)象。物理Schema可以通過(guò)標(biāo)準(zhǔn)SQL語(yǔ)句來(lái)創(chuàng)建、更新和修改。例 如以下SQL語(yǔ)句創(chuàng)建了兩個(gè)物理Schema:

    create schema SCHEMA_A;
create table SCHEMA_A.CUSTOMERS(ID int not null,……);

    create schema SCHEMA_B;
create table SCHEMA_B.CUSTOMERS(ID int not null,……);

簡(jiǎn)單的說(shuō):就是一個(gè)數(shù)據(jù)庫(kù)用戶所擁有的數(shù)據(jù)庫(kù)的對(duì)象。  
比如scott用戶建立了表,索引,視圖,存儲(chǔ)過(guò)程等對(duì)象,那么這些對(duì)象就構(gòu)成了schema   scott

數(shù)據(jù)庫(kù)schema與catalog簡(jiǎn)介

    按照SQL標(biāo)準(zhǔn)的解釋,在SQL環(huán)境下Catalog和Schema都屬于抽象概念,可以把它們理解為一個(gè)容器或者數(shù)據(jù)庫(kù)對(duì)象命名空間中的一個(gè)層次,主要 用來(lái)解決命名沖突問(wèn)題。從概念上說(shuō),一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)包含多個(gè)Catalog,每個(gè)Catalog又包含多個(gè)Schema,而每個(gè)Schema又包含多個(gè)數(shù) 據(jù)庫(kù)對(duì)象(表、視圖、字段等),反過(guò)來(lái)講一個(gè)數(shù)據(jù)庫(kù)對(duì)象必然屬于一個(gè)Schema,而該Schema又必然屬于一個(gè)Catalog,這樣我們就可以得到該 數(shù)據(jù)庫(kù)對(duì)象的完全限定名稱從而解決命名沖突的問(wèn)題了;例如數(shù)據(jù)庫(kù)對(duì)象表的完全限定名稱就可以表示為:Catalog名稱.Schema名稱.表名稱。這里 還有一點(diǎn)需要注意的是,SQL標(biāo)準(zhǔn)并不要求每個(gè)數(shù)據(jù)庫(kù)對(duì)象的完全限定名稱是唯一的,就象域名一樣,如果喜歡的話,每個(gè)IP地址都可以擁有多個(gè)域名。

    從實(shí)現(xiàn)的角度來(lái)看,各種數(shù)據(jù)庫(kù)系統(tǒng)對(duì)Catalog和Schema的支持和實(shí)現(xiàn)方式千差萬(wàn)別,針對(duì)具體問(wèn)題需要參考具體的產(chǎn)品說(shuō)明書(shū),比較簡(jiǎn)單而常用的實(shí)現(xiàn)方式是使用數(shù)據(jù)庫(kù)名作為Catalog名,使用用戶名作為Schema名,具體可參見(jiàn)下表:

表1 常用數(shù)據(jù)庫(kù)

供應(yīng)商

Catalog支持

Schema支持

Oracle

不支持

Oracle User ID

MySQL

不支持

數(shù)據(jù)庫(kù)名

MS SQL Server

數(shù)據(jù)庫(kù)名

對(duì)象屬主名,2005版開(kāi)始有變

DB2

指定數(shù)據(jù)庫(kù)對(duì)象時(shí),Catalog部分省略

Catalog屬主名

Sybase

數(shù)據(jù)庫(kù)名

數(shù)據(jù)庫(kù)屬主名

Informix

不支持

不需要

PointBase

不支持

數(shù)據(jù)庫(kù)名

    最后一點(diǎn)需要注意的是Schema這個(gè)單詞,它在SQL環(huán)境下的含義與其在數(shù)據(jù)建模領(lǐng)域中的含義是完全不同的。在SQL環(huán)境下,Schema是一組相關(guān)的 數(shù)據(jù)庫(kù)對(duì)象的集合,Schema的名字為該組對(duì)象定義了一個(gè)命名空間,而在數(shù)據(jù)建模領(lǐng)域,Schema(模式)表示的是用形式語(yǔ)言描述的數(shù)據(jù)庫(kù)的結(jié)構(gòu);簡(jiǎn) 單來(lái)說(shuō),可以這樣理解,數(shù)據(jù)建模所講的Schema<也就是元數(shù)據(jù)>保存在SQL環(huán)境下相應(yīng)Catalog中一個(gè)Schema<名叫 DEFINITION_SCHEMA>下的表中,同時(shí)可以通過(guò)查詢?cè)揅atalog中的另一個(gè)Schema<名叫 INFORMATION_SCHEMA>下的視圖而獲取,具體細(xì)節(jié)不再贅述。

    另外我結(jié)合MySQL官方的MySQL administrater數(shù)據(jù)庫(kù)管理工具理解一下所謂的schema,catalog:


圖1 MySql

    點(diǎn)擊那個(gè)catalogs,下面就出來(lái)了所有的database。想了一下,我這樣來(lái)總結(jié):

    數(shù)據(jù)庫(kù):指的是說(shuō)MySQL(或者說(shuō)Oracle等)

    schema: 指的是說(shuō)當(dāng)偶create database caiceclb時(shí),caiceclb就是一個(gè)schema

    catalog: 指的是所有的database目錄,就像上圖顯示的那樣,將MySQL原來(lái)的(mysql,infomation_schema)及后來(lái)新建的的database的集合。

SQL Server 數(shù)據(jù)庫(kù) schema 一詞的不同含義

我相信一些人在進(jìn)入精彩的SQL Server世界時(shí),有一些數(shù)據(jù)庫(kù)的專業(yè)術(shù)語(yǔ)可能會(huì)導(dǎo)致一些概念的混淆。一個(gè)例子就是"schema"這個(gè)詞的變化。

一般來(lái)說(shuō),schema 是指數(shù)據(jù)庫(kù)表的組織和定義,它們同其它表的關(guān)系以及它們所包含的列。通俗點(diǎn)說(shuō),它就是數(shù)據(jù)庫(kù)的設(shè)計(jì)。

在SQL Server 2000中,schema 是指數(shù)據(jù)庫(kù)中的對(duì)象的擁有關(guān)系(表、視圖、存儲(chǔ)過(guò)程等),它稍微區(qū)別于定義一詞。對(duì)數(shù)據(jù)庫(kù)對(duì)象的擁有關(guān)系是非常重要的,因?yàn)閷?duì)象擁有者是被嚴(yán)格賦予權(quán)限 的。如果擁有關(guān)系在對(duì)象創(chuàng)建的過(guò)程中,沒(méi)有被定義,那么對(duì)象的默認(rèn)擁有者就是數(shù)據(jù)庫(kù)的擁有者。在schema中叫"dbo"。

在SQL Server 2000中,大部分情況下用戶和架構(gòu)的擁有關(guān)系是一樣的。而在 SQL Server 2005, 數(shù)據(jù)庫(kù)對(duì)象架構(gòu)被賦予了一個(gè)新的定義,叫“schema”。在這種情況下, schema 就是服務(wù)于邏輯對(duì)象組的物理數(shù)據(jù)庫(kù)對(duì)象。對(duì) .NET 開(kāi)發(fā)者來(lái)說(shuō),它和命名空間的概念非常像。而擁有關(guān)系則被從最重要的概念中分離出來(lái),變得更有彈性和可伸縮性。

Database object schemas are a great addition to SQL Server and in many ways is more consistent with the original definition of a schema than it's SQL Server 2000 counterpart.數(shù)據(jù)庫(kù)對(duì)象架構(gòu)已經(jīng)成為SQL Server 的非常重要的一部分,很多情況下,它相比于SQL Server 2000中的概念來(lái)說(shuō),與初始的架構(gòu)定義顯得更一致。

作者: Johnm

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多