日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

数据库 schema与catalog

發布時間:2023/12/13 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 数据库 schema与catalog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫schema與catalog簡介

按照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>下的視圖而獲取,具體細節不再贅述。

SQL Server 數據庫 schema 一詞的不同含義

我相信一些人在進入精彩的SQL Server世界時,有一些數據庫的專業術語可能會導致一些概念的混淆。一個例子就是"schema"這個詞的變化。

一般來說,schema 是指數據庫表的組織和定義,它們同其它表的關系以及它們所包含的列。通俗點說,它就是數據庫的設計。

簡單來說,就是一個用戶擁有的數據庫的對象,比如用戶Ender建立了的表,視圖,存儲過程等數據庫對象,那就構成了schema ender。

在SQL Server 2000中,schema 是指數據庫中的對象的擁有關系(表、視圖、存儲過程等),它稍微區別于定義一詞。對數據庫對象的擁有關系是非常重要的,因為對象擁有者是被嚴格賦予權限 的。如果擁有關系在對象創建的過程中,沒有被定義,那么對象的默認擁有者就是數據庫的擁有者。在schema中叫"dbo"。

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

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.數據庫對象架構已經成為SQL Server 的非常重要的一部分,很多情況下,它相比于SQL Server 2000中的概念來說,與初始的架構定義顯得更一致。

schema是對一個數據庫的結構描述。在一個關系型數據庫里面,schema定義了表、每個表的字段,還有表和字段之間的關系。

catalog是由一個數據庫實例的元數據組成的,包括基本表,同義詞,索引,用戶等等,相當于數據庫的索引。

在一個數據庫中可以有多個應用的數據表,這些不同應用的表可以放在不同的schema之中,同時,每一個schema對應一個用戶,不同的應用可以以不同的用戶連接數據庫,這樣,一個大數據庫就可以根據應用把其表分開來管理。
不同的schema之間它們沒有直接的關系,不同的shcema之間的表可以同名,也可以互相引用(但必須有權限),在沒有操作別的schema的操作根權下,每個用戶只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的數據(即schema用戶自己的數據)。

catalog,數據庫名,schema,表名,
服務器的本地名稱.數據庫名.dbo.表名

DBO是每個數據庫的默認用戶,具有所有者權限,即DbOwner

通過用DBO作為所有者來定義對象,能夠使數據庫中的任何用戶引用而不必提供所有者名稱。
比如:你以User1登錄進去并建表Table,而未指定DBO,
當用戶User2登進去想訪問Table時就得知道這個Table是你User1建立的,要寫上User1.Table,如果他不知道是你建的,則訪問會有問題。
如果你建表時把所有者指給了Dbo,則別的用戶進來時寫上Dbo.Table就行了,不必知道User1。
不光表是如此,視圖等等數據庫對象建立時也要如此才算是好。

建表、存儲過程、視圖等數據庫對象時,其對應的所有者是創建它的用戶。則除了該用戶其他登錄用戶要引用這些東東時,都要加上前綴,很是麻煩。而且,程序因此易出錯,你查來查去問題確出在這,浪費你時間。

schema: 指的是說當用戶create database ****時,****就是一個schema

catalog:指的是所有的database目錄,將MySQL原來的(mysql,infomation_schema)及后來create database ****創建的的database的集合。

schema:

在一個數據庫中可以有多個應用的數據表,這些不同應用的表可以放在不同的schema之中,同時,每一個schema對應一個用戶,不同的應用可以以不同的用戶連接數據庫,這樣,一個大數據庫就可以根據應用把其表分開來管理。
不同的schema之間它們沒有直接的關系,不同的shcema之間的表可以同名,也可以互相引用(但必須有權限),在沒有操作別的schema的操作根權下,每個用戶只能操作它自己的schema下的所有的表。不同的schema下的同名的表,可以存入不同的數據(即schema用戶自己的數據。

catalog: 指的是所有的database目錄

兩者關系:

從概念上說,一個數據庫系統包含多個 Catalog,每個Catalog又包含多個Schema,而每個Schema又包含多個數據庫對象(表、視圖、字段等),反過來講一個數據庫對象必然屬于一個Schema,而該Schema又必然屬于一個Catalog,這樣我們就可以得到該數據庫對象的完全限定名稱從而解決命名沖突的問題了;例如數據庫對象表的完全限定名稱就可以表示為:Catalog名稱.Schema名稱.表名稱。這里還有一點需要注意的是,SQL標準并不要求每個數據庫對象的完全限定名稱是唯一的,就象域名一樣,如果喜歡的話,每個IP地址都可以擁有多個域名

在Oracle中,一個用戶就是一個Schema,表都是建立在Schema中的,也可以理解為每個用戶擁有不同的表。一個用戶想訪問另外一個用戶,也就是另外一個schema的表的時候,可以用 username.tablename的形式來訪問,完全不需要分布式事務。


當你在 SQL Server 里面, 使用 create database 創建一個數據庫以后。
你可以不必額外的去創建 schema,因為 SQL Server 會 自動的創建一個 名字叫 dbo 的 schema

SQL/MX Catalogs

An SQL/MX catalog is a named logical object that contains descriptions of a set of
schemas. You can access SQL/MX objects with the three-part name of the actual
object.

A catalog is owned by the user ID that created it, though catalog ownership does not
imply authorization over schemas or objects in that catalog, and any user can drop an
empty catalog, regardless who the catalog owner is. Each of the schemas described in
a catalog has an owner. A catalog can contain multiple schemas, each possibly owned
by a different user. A catalog cannot contain other catalogs. Any user on a node can
create a catalog on that node. The catalog’s owner has the authority to register and
unregister the catalog.

SQL/MP Catalogs

An SQL/MP catalog is a set of tables and indexes that describe SQL objects. Tables in
the set are called catalog tables and NonStop SQL/MP creates them, along with their
indexes, when you execute a CREATE CATALOG statement. Each catalog resides on
its own Guardian subvolume, and the name of that subvolume is also the name of the
catalog.
A catalog name has the form: [
ode .][$ volume .] subvol

Each node on which NonStop SQL/MP is used has one special catalog called the
system catalog and might have many other catalogs. Each table, view, index, partition,
collation, or catalog table located on a node must be described in a catalog on the
same node. For more information.


來自為知筆記(Wiz)

總結

以上是生活随笔為你收集整理的数据库 schema与catalog的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。