回覆列表
  • 1 # 使用者7962913190884

    資料庫這個東西,就是一個數據管理的系統級軟體。從資料庫軟體及其應用的設計需求來看,應該滿足資料管理、系統軟體、資源管理、資料訪問方法、計算處理、程式設計介面等。所以:

    既然是資料管理,那麼就必然服從資料結構的一般原理。既然是系統級軟體,那麼必然服從軟體設計的一般原理。既然資料是一種計算機資源,那麼必定服從資源管理的一般原理。既然有資料訪問,那麼必然有資料訪問的空間鄰近性和時間鄰近性。既然是一種計算,那麼必然服從一種計算模式(不同的資料結構,計算模式不同)。既然提供了一種語言,那麼必然服從語言設計的一般規律(哲學理念)。既然資料元素之間有關係,那麼必然要提供描述這種關係的方式。

    好象就這麼多吧,如果資料結構、作業系統、離散數學、軟體工程等幾門基礎課程功底好點,稍微點撥一下,然後就可以透過專案自學了。

    ---------------------------------------------------------------------------------------------

    1、一般資料庫分為三~四門課程:資料庫概論,資料庫應用和資料庫原理,外加一門資料庫課程設計。不過,其它課程也很重要。

    2、從整體上看,資料庫是一種針對資料管理需求的特定的計算機系統。先要了解一下背景。有幾個方面,一個數據管理的需要,一個是底層硬體的特性,一個是資料結構,一個是系統級軟體的設計。事實上,資料庫和資料結構,有另外一個相同的說法,資料的管理和處理。然後,資料庫幾乎總是在塊裝置(磁碟)上。

    3、資料庫有兩條路徑,一個是從應用開始學,一個是從理論開始學。當然,最後應該能夠把理論、應用結合起來,並且穿插學術研究和專案實踐的歷史發展及其背景。

    4、從應用來看,資料庫是為了滿足是資料的統一管理的需求。為了滿足這個要求,資料庫必須向用戶提供資料型別的定義方法、資料的操作方法、資料的一致性的保障。

    5、從使用的角度來說,首先就是要掌握如何運用資料型別的定義方法、資料的操作方法來管理資料,並且在使用過程中,遵守一些必要的資料管理的規範。因此,根據專案,建立資料庫、資料表、選擇恰當的資料型別、遵守相關的規範。在這個過程中,掌握E-R圖這個工具,對專案中的資料進行分析,即提取實體、實體的屬性、實體的關係。

    6、建庫建表之後,就要掌握相關的資料操作方法和資料庫內建的程式語言(儲存過程),解決具體的問題。

    7、由於資料是儲存於外存中的(不考慮記憶體資料庫),根據計算機組成原理,我們知道,外存I/O效能是系統瓶頸。在一個給定的外存裝置的條件下,如何提高資料庫的效能?所以,我們就要根據應用的特性,合理地進行設計。這個時候,就涉及到資料結構了。

    8、我們知道,資料結構的儲存結構,影響到資料操作的效能。對於外存中的資料,為了提高系統的效能,多采用索引結構,以加快資料項的定位。有的索引結構,寫效能優於讀效能,或者讀效能優於寫效能。因此,我們應該進行分析,哪一張表的哪一列應該建立什麼樣的索引。

    9、在資料存在多張表的情況下,為了進一步提高系統的效能,我們還要推算資料表的多表操作時的I/O情況,依此最佳化資料表的索引設定。通常,我們分析多表操作中的關係演算過程,對多表操作的關係演算過程進行最佳化。

    10、某些實際應用(事務處理)要求資料操作是原子性的(類似於作業系統的PV操作),所以,資料庫必須支援事務處理的要求,要不所有的資料操作全部成功,要不所有的資料全部保持原始狀態。

    11、資料庫應用基本上是多使用者應用,所以,資料庫必須支援併發性。按照作業系統,我們知道,資料也是一種資源。所以,必須對資源的訪問進行控制,也就是資源鎖和互斥鎖。

    12、當事務處理和併發控制結合在一起時,事情就變得複雜起來。再加上系統性能的考慮,也就有了悲觀鎖和樂觀鎖。

    13、系統級軟體,往往採用分層設計。同樣地,資料庫也採用分層設計理念,類似於計算機網路等其它資訊系統。

    (修改中)

    14、再次強調一下,資料庫,實際上就是一種特殊的資料結構。回憶一下,抽象資料型別,我們利用抽象資料型別描述現實世界中的資料,資料元素之間的關係,資料的操作。我們要給出抽象資料型別的邏輯結構和儲存結構。

    15、當然,由於資料庫是分層設計,所以儲存結構和邏輯結構是位於不同的層次。資料結構的邏輯結構對應了資料庫的資訊世界,資料結構的儲存結構對應了資料庫的機器世界。

    16、對於CRUD,可謂是非常眼熟,資料結構的最常見的操作。

    17、既然是一種資料結構,那麼,資料庫的操作也具有時間開銷和空間開銷。時間開銷和空間開銷,是資料庫操作的時間複雜度和空間複雜度。

    18、因此,即使作為一個普通的應用層開發人員,也應該對資料庫的底層有所瞭解,以降低資料庫操作的時間開銷和空間開銷。

    19、SQL的設計理念,我記得知乎還是哪裡有一個高手回答過。作為一門語言,有其哲學理念。理解其設計理念,有助於我們掌握這門語言。對於語言理解不深,就不拋磚引玉了。

    20、在邏輯上,庫-表-行-列-項,構成一種層次結構。資料庫的資料,固然是一種資料結構,但是,為了進行管理,也設計了一種邏輯上的層次管理方法。有點象檔案系統的層次結構——目錄和檔案結構,當然是在邏輯上的層面。比如庫—表—行—列—項。每一種具體的資料庫,它們的具體設計方案不同。

    21、在分層設計中,有一種獨有的概念,檢視。檢視是一種邏輯上的概念,是一種對錶進行操作的結果。這個結果是一個虛擬的表,並不存在於物理儲存空間。

    22、在分層設計中,為了提高系統的效能,因此也設計了特定的cache方案。

    23、資料庫中的資料是一種資源,根據作業系統中的程序互斥和同步的原理,在併發訪問時,就會因為同時訪問資源而導致各種問題。

    24、此外,從系統的角度來說,還應該提供安全。

    25、對於最佳化,主要是指關係代數的最佳化,也就是儘可能減少時間開銷和空間開銷。

    嗯。好象如果其它課程學得好,資料庫也就這點東西了。

  • 中秋節和大豐收的關聯?
  • DNF繼戰法強殺隊友之後,首個能合法殺死隊友的傀儡師上線,你會去玩嗎?