oracle學習入門系列之六
模式
上篇咱們學習記錄了ORACLE數據庫中的數據庫結構、內存結構和進程等,篇幅 蛤蟆感覺偏多了。這次要休整下,每次筆記不宜太多,不然與書籍有何區別。我們要保證的是每次做記錄都能所有收獲所有提升。
上次中我們從總體上把握了下ORACLE系統結構,這次開始我們將涉及到ORACLE數據庫的具體方方面面了。本次就從模式對象入手。
老規矩,先來兩個問題:
a) 什麼事模式
b) 為什麼需要
搞清楚這兩個問題即可。
本人郵箱:[email protected]
微信公眾號:HopToad
歡迎各界交流
在學模式對象前,必須先講下用戶的概念。
我們知道在創建數據庫的時候會讓我輸入SYS用戶和SYSTEM用戶的密碼,這兩個用戶是系統管理員。這兩個賬戶由於權力很大,所以一般創建完數據庫後,都會自己再創建一些用戶,如:xiaoming,xiaohong,xiaogang等等。這些我們創建的就是用戶,那和模式是什麼關系呢?
模式的定義是這樣的,模式,schema,是指屬於特定用戶的數據庫對象集合。So,這個定義來看模式的定義是基於用戶之上的,沒有用戶就沒有模式之說。不過,很多ORACLE技術人員都會將用戶和模式替換,盡管他們是不同的事物。
一般實際情況是這樣的,當我們部署數據庫應用的時候,要用到很多的對象,如表、索引、觸發器、約束等等,而這些對象最後是要歸屬給某個用戶的,比如xiaoming。那麼我們就擁有一個叫做xiaoming 的模式也叫schema. 模式是個邏輯結構。
ORACLE在創建一個用戶的同時會創建一個同名的模式,所以schema和用戶是一一對應的。
我們在訪問數據庫的時候有時候需要指定訪問那個schema,比如select * from scott.emp;
這個就是訪問scott模式中的emp表,如果不加scott,模式就是訪問用戶缺省模式的schema了。
這就是oracle的用戶和模式,user 和 schema.
終於搞明白了什麼是schema,那我們來說說為什麼需要schema。
繼續往下走。
很多事情我不光光要知道概念是什麼,也要知道為什麼需要它。這樣我們會記得更牢,並產生興趣,也會促使我們做出改變和創新。
為什麼需要模式呢,我們知道用戶是需要密碼才能登陸的,而模式和用戶是一一對應的,那麼對了,這個是處於安全考慮的。
想想用戶小明有個表叫做工資,小紅也有個表叫做工資;他們的表各自屬於他們自己的schema. 如果小明沒有訪問小紅schema的權限,那麼小明是不能看到小紅的工資表的,小紅也同理。此處我們需要知道訪問其他模式是需要權限的。
除了安全之外,還有一個方面就是整體管理方面。如果沒有schema,小紅有一個工資表,小明一個工資表,明天來了個小剛也一個工資表那不是亂套了麼。有個schema,那就方便了,小紅的工資表屬於小紅這個schema。(如果你說他們的工資表分別屬於他們各自的用戶啊,這樣辯也沒錯,不過你這個想法提煉一下不就是schema概念了麼?)
這篇筆記甚是舒服,下篇見。