標籤:

剛開始學習資料庫對資料庫概念一竅不通。?

剛開始接觸資料庫,對資料庫的概念比較空洞,我知道資料庫管理系統就是一款軟體,資料庫是什麼呢?書上說資料庫就是邏輯結構差不多數據的集合。我想資料庫能成為一門學科,那麼他和我們一般存儲的文件的方式肯定不一樣,同樣也是存儲的數據的工具,都存放在存儲器上,難道是在存儲器上專門有一塊地方是用來提供給資料庫存儲數據的嗎?這些問題是我看了一點書幻想出來的。真希望那位大神能為我解答一下什麼是資料庫,謝謝了。


其實題主把事情想複雜了,資料庫其實就是一個文件管理系統,只不過裡面有一些理論而已。

建議分以下幾個階段來學習:

第一階段:找本用於大學本科教育的資料庫教科書,安裝一個簡單點的DBMS(推薦sql server系列,其實access也夠了),基於示例資料庫中的數據,把書上的那些基礎SQL語句全都運行一遍,並理解掌握;

第二階段:明白啥是關係模式,掌握一些複雜的SQL語句,知道啥是存儲過程,然後知道如何在編程語言中連接資料庫,如何根據頂目需求增刪改數據……

一般來說,能夠到第二階段,就已經滿足職場絕大場合下的需要了。

第三階段:下載一個小型關係資料庫管理系統的源代碼,運行通過並理解,嘗試著自己去修改完善。


入門的確挺難,其他學科不也是一樣的么?

這裡給出兩點建議:

1、理論學習的時候可以自己思考,但不要在任何一點上太深入,因為很容易讓你停滯。可以不求甚解地讀,但要堅持讀完。再說了,讀一本書是不足以入門的,不能著急。

2、理論需要結合實際應用,同時找一套你感興趣的資料庫系統,比如 MySQL之類,照著官方手冊看,做安裝,做開發,一步步地實踐,將你理論上學到的概念一一印證。

以上是個人建議,我是這麼過來的。書讀到後面是越來越快,再後面就只用看目錄,每年跟進下官方新版本特性就好了。


我覺得你沒有理解「數據」的概念。你現在的觀念是「數據」和「文件」地位相同,可事實上,文件是由「數據」組成的。計算機內部的文件其實都是由一條條數據組成的,你看到的視頻、音頻等文件,實質上也是數據,只不過經過一些軟體的編譯之後,再以視頻、音頻的方式讓你接收。說以,你看,數據的直接作用對象是軟體,而不是用戶。但是,還有些數據是人要直接獲取,或者自己用軟體獲取的啊,這時就用到了資料庫。

舉個例子:

你負責你們學校的圖書館管理。現在只有一大堆書,你要把他們分類放在架子上,然後進行統計,哪本書放在哪個位置。這當然很簡單,你只需要把每本書放好之後,對應書名寫上位置,列張單子就可以了。有人來借書,只需要告訴你書名,你就能從單子上找到位置,讓他自己去取。可是後來圖書館書越來越多,你一個人每次都要從頭找很長時間才能找到,實在辛苦,怎麼辦呢?要是有個軟體替我找就好了,輸入書名,直接返回位置。這時,你那張單子就是一個資料庫,你需要的軟體就是資料庫管理軟體了。你的單子可能會是這樣的

書名 位置

《丹布朗全集》 1書架1排

《大數據時代》 3書架5排

《貓國物語》 4書架2排

《史蒂夫喬布斯傳》 1書架3排

《小王子》 5書架4排

..............

當然,你會說,這不是很簡單么?可不是啊。

繼續這個例子:

你的軟體很成功。有人給你說書名,你一下子就知道在哪裡了。但是你發現這樣不行,因為有時候同一本書被借走了,可是程序不知道,還是給出了位置,結果人家找不到。那怎麼辦呢?你想到以前你是在被接走的書後邊畫一個鉤,代表他已經被借走了,那軟體能不能也這麼做呢?可以啊,只需要在每本書後邊加一個標記位就好了,1代表還在,0代表被借走。於是你的資料庫變成了這樣。

書名 位置 狀態

《丹布朗全集》 1書架1排 1

《大數據時代》 3書架5排 0

《貓國物語》 4書架2排 1

《史蒂夫喬布斯傳》 1書架3排 0

《小王子》 5書架4排 1

《小王子》 5書架4排 0

..............

這樣你的資料庫就由原來的兩列變成了三列,一下子體積就增加了許多,比如說從100kb增加到120kb。你敏銳地意識到這樣不行,如果以後再有類似的情況出現,或者書太多了,那這個資料庫可能會飛速變大,那可不得了。怎麼辦?你看到有很多書,比如《小王子》,就由好幾本,在資料庫里是相同的幾行,完全沒有必要嘛,可以合併一下。可是不同一本書,有可能被借走了,也有沒被借走的,怎麼合併?很簡單,把狀態改成數量就可以了嘛。於是,你又修改了自己的資料庫。

書名 位置 數目

《丹布朗全集》 1書架1排 1

《大數據時代》 3書架5排 0

《貓國物語》 4書架2排 3

《史蒂夫喬布斯傳》 1書架3排 5

《小王子》 5書架4排 2

..............

你想,這回完整了吧。突然發現,不對,之前你把書安排在書架上時是固定位置的,有一天學校不知出於什麼目的,要從圖書館清空一本書,比如說是《小王子》。你說清空就清空唄,我把它從資料庫刪除不就完了。可是很久之後你查看書架時發現有一個位置總是空的,一開始你以為是哪裡的書被借走了,後來發現原來就是《小王子》清空後剩下的空位。這是怎麼回事?原來,你把《小王子》從資料庫刪除之後,他對應的位置也從資料庫里刪除了,所以已經嚴重依賴軟體管理圖書館的你根本忘了還有這個位置的存在。你想,是了,書本跟所在的位置是對應的,但是書的其他信息,比如書的數目就跟位置沒什麼關係嘛,而且這個位置跟那本書的關係也不是死的,是會變得嘛,所以不能這麼建資料庫。於是你把原來的資料庫分成了三個

【一】

書名 位置

《丹布朗全集》 1書架1排

《大數據時代》 3書架5排

《貓國物語》 4書架2排

《史蒂夫喬布斯傳》 1書架3排

《小王子》 5書架4排

..............

【二】

書名 數目

《丹布朗全集》 1

《大數據時代》 0

《貓國物語》 3

《史蒂夫喬布斯傳》 5

《小王子》 2

..............

【三】

位置 是否為空

1書架1排 否

3書架5排 否

4書架2排 否

1書架3排 否

5書架4排 否

..............

這樣,你的程序會先從資料庫【二】中讀取是否還有書,有的話就從資料庫【一】里讀取書的位置。而你,也可以從資料庫【三】里查看那些書架是空的,再跟資料庫【一】【二】對比,看是不是因為書被借走才空了。就這樣,你不斷豐富、修改自己的資料庫,使它十分完善。可是在這期間,你覺得很累,因為每有一個功能需求你就要修改自己的軟體,有時候資料庫並不需要改動,可是軟體實在太難改了,怎麼辦?最好的辦法是,別人都可以自己寫程序來讀取我的資料庫,那怎麼做呢?很簡單,你做了幾個資料庫的介面,別人的軟體只要通過這個介面就能讀取你的資料庫內容了,而你,只需要用自己的軟體維護資料庫就行了。這時你覺得這樣做不妥,要是別人都能讀我的資料庫,萬一誰改動了哪裡我都不知道,這怎麼辦?聰明的你很快想到,許可權管理啊,只要讓他們只能看,不能改不就完了么?而且你還設了密碼,只有知道密碼的軟體,才能讀你的數據。於是經過很長時間發展,你的【圖書館管理系統】已經很成熟了。

你很自豪,經常跟別人吹牛逼說你的系統有多好,你有一個朋友,在其他學校和你做同樣的工作,想把你的系統移植到他那裡。你說可以啊,就費了很大功夫去幫他也做了一個這樣的系統。這可把你累的不輕,你想這要是每個人都要我去這麼干,那可受不了,怎麼辦?簡單,你把你的系統進行了精改,可以應用到每一個需要它的地方去,每一個管理員都可以自己設定資料庫的內容、格式、關係等等內容,還有一個標準的管理程序來管理這些數據。你把這個系統叫做【數據管理系統】,然後讓別人使用。大家只需要學會怎麼用這個軟體,自己就能建立資料庫了,你的工作就減輕了很多。你沒事了,閑了下來,突然覺得自己太虧了,為什麼自己這麼辛苦做的東西別人拿走就用呢?不公平。於是再有人向你要軟體的時候,你開始收錢。雖然大家怨聲載道,但還是花錢來買,你一下子賺了很多錢。

突然,不知道從哪裡冒出一個小子來,也推出一個這樣的系統,比你的還好,還便宜。而他的是在你的基礎之上加以改進的。你很憤怒,但也很懊悔,自己怎麼就沒想到改進一下子呢?於是你做了兩件事,第一找了律師控告那個小子,第二你找了幾個朋友幫你一起改進你的軟體。你們天天在一起開會討論,久而久之,大家說不如這樣吧,咱們成立一個公司,這樣就由公共的辦公地點了,而且大家利益相關,都能盡心儘力。於是你們的公司成立了,又推出了更好的【資料庫系統】,此時市場上也出現了其他的類似的公司。隨著計算能力增強,各行業規模擴大,數據越來越多,有越來越多的人開始學習研究這個問題,你被邀請去大學講課。

再後來,數據深入到人類生活的各個方面,體量更是以不可想想的速度增長,你擔憂的事情出現了,人類終於開始覺得要容不下這些數據了。於是人們刪除了那些舊的數據,輔以更新新的數據。這時你發現,原來數據是活的,它不是定死在硬碟里的。

越來越多的人通過數據意識到人類某些行為方式之間的關係,很多數據變得越來越重要開始四處售賣,人們的生活也隨之發生了翻天覆地的變化,終於,人類迎來了大數據時代。

哎呀,感覺腦洞開的有點大了。。。。。。。


按書上的教程自己建幾張表,插入幾條數據,再查詢出來,就能很快理解了。


前人寫了那麼多資料庫的書都是來解答你的問題的。


推薦閱讀:

如何系統學習 MySQL?
個人網站,資料庫如何設計存儲富文本文章比較好?
想真正從基礎到深入地學習資料庫,但是市面上的數據過多,有什麼好的書籍,網站嗎?
Android 開發中為什麼很少使用 JSON 存儲數據?
如何從零寫一個kv資料庫?

TAG:資料庫 |