『壹』 如何學習資料庫知識
要說資料庫,一般以SQL Server作為入門的學科,它適合中小型項目開發,而現在比較流行於大型開發的有:
Oracle
現在具有企業大型軟體的絕對佔有率
DB2 在以IBM服務的公司以及單位(中國銀行)
MySql 相對不是很正式的開發,使用MySql
當然還有一些:Access(桌面資料庫),FoxPro(中國教育),Informix的資料庫系統.
剛開始入門的時候可以找點視頻教程來學習,視頻教程一般講得比較好,但不要企圖於通過它達到比較高的水平。然後要學會將自己所知道的去實踐,多實踐。當覺得實踐到一定程度而沒有什麼沖勁了,就去學習理論,當覺得理論知識需要發揮的時候就去實踐,時間的周期不一定,沒有什麼定論,但自己的時間安排需要定論就可以了。
我一直都認為在計算機行業要學會一門技術太簡單了,但如果要把技術發揮到一定程度就有難處了,一定程度是什麼意思,就是把技術如何發揮到具體的業務之中,會動腦筋去思考,而把技術作為相對次要的東西了。
資料庫的DBA人員需要兼有系統分析員和運籌學的業務素質。在技術上講,我個人認為資料庫的前續學科是「數據結構」。
我現在剛學SQL Server一段時間,就自己的感想談談:
1.資料庫是非常快的數據處理程序,其內在的本質依舊是"文件".因為
Windows操作系統管理機制就有:磁碟、文件、目錄。Linux的方式只有文件。所以資料庫重本質的角度來說是一種平台軟體,是將文件翻譯成邏輯語言的軟體,成為我們軟體程序數據交換的中心,為什麼那,一個很重要的原因就是「快」,還有就是「安全」、「集成」等等。因為以前的語言程序要處理數據要編寫大量演算法十分麻煩而且很容易出錯等等。大家就想到集成了。。。。。
2.其實,要談到操作資料庫,簡單的就太簡單了,但是資料庫最難的不是操作,而是在資料庫的設計上。一個大型程序設計者肯定是一個資料庫的高手,因為大型程序要死板地去完成它是非常困難和不理智也是不安全不穩定的,我們要充分利用自己所有的能力去挖掘其數據之間的奧秘,然後體系化資料庫結構,相當於在資料庫中如何層次化地建立數據結構。將需求中的矛盾事物改變成可以相互融合的。
我說的資料庫操作簡單是指一般操作,如果難的操作還是有點技術的,但還是難不到那裡去。下面我把我的一個小資料庫程序給你看看:(下面這個程序已經建立資料庫library,然後用dbo用戶建立了表relatBook,並將表的第一個欄位設置為「主鍵」PK)
該程序想說的第一點是:程序按照標准用戶寫入法則寫入。
另外就是在執行多個操作的時候每一步驟的操作我們都必須為其設置錯誤的回滾操作。所以程序前兩個段落都是一樣的,在插入的時候故意出現異常,看第1和第3個語句是否能成功執行。
從上面看出點什麼沒有,你我執行了三個操作,第一個操作是肯定成功的,第二個是肯定失敗的,第三個跟在後面,那麼你想一想第一個和第三個操作能插入資料庫中嗎?我這個程序沒有什麼意義,但只是未了說明問題。
答案是:不能。
為什麼不能,這是SQL所支持的「事務」外完成的,這是技術問題,沒有什麼的,會了大家都會。為什麼要這樣做那,那才是要學習的前提。你想一想如果你建立了一個地區的帳物管理系統,當一個單位向另外一個單位轉帳的時候,需要執行兩個操作就是將一邊的信息刷掉,一邊的信息添加上去,而當執行一半的時候出現了某種異常中斷,比如高優先順序的搶占,伺服器重起、停電。當時你知道有多少人在訪問你的伺服器,那要造成多大的資料庫信息丟失,甚至於導致資料庫的查詢的嚴重失敗。那麼我就知道需要上面知識的支持了。
3.為什麼說上面的東西都很簡單那,因為只要你會,那就可以了,而設計方面的東西是永遠不是那麼簡單的,永遠帶有創新和追求,沒有最高的境界。
就一個十分常見的問題,如何在資料庫中配合好人員、角色、許可權、類別、級別、可操作性這幾者的關系,如果是沒有經驗的人直接上手可能會亂來(我們最早也是這樣的)。有經驗的人也會設計一段時間,而且隨著軟體復雜性的增加,其資料庫的這幾者之間的復雜性就越來越復雜。所以大型軟體是非常難的。就一個很簡單的例子,在很多的網站中,有上百的欄目信息,而每一個欄目間又保持獨立。圖片的位置和圖片的信息都是動態更新的。某些網站的可操作性都以樹型結構提供,而樹型結構的子樹類別和和葉子都是不重復而不錯誤。而且其層數都是動態的。有些人給我說可以通過前台的判定語句來執行樹型結構的生成,但我問了一個問題,如果是一個郵政編碼系統,有幾十萬個郵政編碼你在前台要寫多少個case語句,而且每一次要遍歷一次已經生成的樹,還有用前台的case語句編寫出來的樹型結構其二級子樹全部「定死」,而且樹型結構的層樹也被定死。這不是完全動態級別的網站。為以後對網站的維護帶來麻煩。
總之,資料庫是一門入門容易卻達到高手很難的學科,通過不斷在失敗中吸取經驗,才能得到一些書籍上無法學會的東西,那才是真正的高手。也就是說,學技術是很快的,要會將技術運用於實際的業務分析,才可以成為一個自我型的DBA,而不是一個簡單的程序員。