1.什么是schema?
定義:
A schema is a collection of database objects (used by a user.). Schema objects are the logical structures that directly refer to the database’s data. A user is a name defined in the database that can connect to and access objects. Schemas and users help database administrators manage database security.
也就是說,schema是一個邏輯概念,是數(shù)據(jù)庫對象的集合,數(shù)據(jù)庫對象包括:tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
“我們可以把Database看作是一個大倉庫,倉庫分了很多很多的房間,Schema就是其中的房間,一個Schema代表一個房間,Table可以看作是每個Schema中的床,Table(床)被放入每個房間中,不能放置在房間之外,那豈不是晚上睡覺無家可歸了,然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一樣,數(shù)據(jù)庫中存儲數(shù)據(jù)的基本單元是Table,現(xiàn)實中每個倉庫放置物品的基本單位就是床, User就是每個Schema的主人,(所以Schema包含的是Object,而不是User),user和schema是一一對應的,每個user在沒有特別指定下只能使用自己schema(房間)的東西,如果一個user想使用其他schema(房間)的東西,那就要看那個schema(房間)的user(主人)有沒有給你這個權限了,或者看這個倉庫的老大(DBA)有沒有給你這個權限了。換句話說,如果你是某個倉庫的主人,那么這個倉庫的使用權和倉庫中的所有東西都是你的(包括房間),你有完全的操作權,可以扔掉不用的東西從每個房間,也可以放置一些有用的東西到某一個房間,你還可以給每個User分配具體的權限,也就是他到某一個房間能做些什么,是只能看(Read-Only),還是可以像主人一樣有所有的控制權(R/W),這個就要看這個User所對應的角色Role了?!薄跃W(wǎng)絡
2.什么是表空間?
在oracle中,數(shù)據(jù)庫是由表空間來組成的,而表空間里面是具體的物理文件—數(shù)據(jù)文件。我們可以創(chuàng)建數(shù)據(jù)庫并為其指定各種表空間。
本質(zhì)上是一個或多個數(shù)據(jù)文件的集合。
3.總結(jié)
數(shù)據(jù)庫由表空間來組成,而Schema是各種數(shù)據(jù)庫對象的集合,用戶可以通過Schema來訪問表等等這些數(shù)據(jù)庫對象,而我們查詢的時候通常是沒有通過Schema.對象的方式訪問,是因為當沒有指明該表屬于哪一個Schema中的,系統(tǒng)就會自動給我們在表上加上缺省的Schema名,缺省的Schema名就是用戶名。
mysql里innodb才有表空間的概念,但是它是全局的,也就是說,所有數(shù)據(jù)庫都用這個表空間。