Schema是多個邏輯結構資料的集合,這些邏輯結構資料又稱作schema objects,例如Table及Store Procedure就是schema object的一種。
每個使用者都擁有一個所屬的schema,且schema名稱與使用者名稱相同。例如使用者名稱為john,則所擁有的schema名稱也叫做john,且使用者建立的物件是建立在schema下。例如john建立了一個employee資料表,則其實為john.employee,而另一使用者bill也建立了一個employee資料表,則其實為bill.employee,schema是命名空間,john.employee和bill.employee是屬於不同的資料表。
簡單來說,schema是指一個使用者可以存取的資料庫物件的集合。在Oracle當使用者被建立時也同時建立了這個使用者的schema。
Schema objects可使用SQL建立及操作,種類如下
- Clusters
- Database links
- Database triggers
- Dimensions
- External procedure libraries
- Indexes and index types
- Java classes, Java resources, and Java sources
- Materialized views and materialized view logs
- Object tables, object types, and object views
- Operators
- Sequences
- Stored functions, procedures, and packages
- Synonyms
- Tables and index-organized tables
- Views
而以下為不包含在schema的其他objects
- Contexts
- Directories
- Profiles
- Roles
- Tablespaces
- Users
Schema objects是邏輯的資料儲存結構,與硬碟中資料庫的實體檔案沒有一對一的關係。Oracle會將一個schema object儲存在資料庫的一個tablespace。每一個schema object的資料在實體上是被儲存在tablespace的一個或多個的datafiles中。
Schema和tablespace之間沒有對應關係,一個tablespace中會有來自多個不同schema的objects,而一個schema下的objects會被放在不同的tablespaces
下圖說明Schema objects, Tablespaces和Datafiles間的關係。
沒有留言:
張貼留言