數據庫系統基本概念


數據

數據(data)是描述事物的符號記錄,具有多種表現形式,例如數字、文字、圖像、音頻和視頻等。數據在數據庫中的存在往往是有結構的,例如對於題目信息,一條題目記錄將會包含題目名稱、題干和題目分值等信息。

單純的數據並不能表現出確切的含義,往往需要有語義對該數據的含義和功能進行解釋。例如 36 這個數據可能是一本書的單價,也可能是一個班級的總人數,也有可能是某位同學某門課程的平時成績。由此可見如果沒有語義對數據的含義進行界定,數據本身能說明的事情是非常有限的。

數據庫的發展

數據庫的發展經歷了3個主要階段,分別是人工管理階段、文件系統階段和數據庫系統階段。

人工管理階段

人工管理階段在 20 世紀 50 年代中期以前,計算機主要用於科學計算,該階段的應用程序和數據的關系如下圖所示。

人工管理數據具有特點:

  1. 數據不保存:使用數據時才將數據輸入,用完也不對數據進行保存;
  2. 應用程序管理數據數據:數據的存儲和管理全部由應用程序自行設計,包括存儲的形式和讀寫的方式都要由程序員自行開發;
  3. 數據不共享:數據都是基於某個應用程序而存在的,一組數據不能被其他的程序訪問和使用;
  4. 數據不具有獨立性:數據只能依托於應用程序存在而不能獨立存在,數據的改動意味着對應的應用程序也需要做相應的改動。

文件系統階段

文件系統階段在 20 世紀 50 年代后期到 60 年代中期,這時硬件方面已有了磁盤等直接存取存儲設備,且操作系統中已經有文件系統來管理數據處,該階段的應用程序和數據的關系如下圖所示。

用文件系統管理數據具有如下特點:

  1. 數據可以長期保存:數據長期保留在外存上反復被操作;
  2. 由文件系統進行數據管理:文件系統把數據組織成相互獨立的數據文件,並且能夠對文件進行管理和讀寫。

文件系統的缺點有:

  1. 數據共享性差,冗余度大:文件中的數據仍然是依托於具體的應用程序,當不同的應用程序仍然不能共享相同的數據;
  2. 數據獨立性差:數據依賴於具體應用程序,因此當數據的存儲形式和讀寫方式發生改變時,應用程序需要做對應的修改。

數據庫系統階段

數據庫系統階段在 20 世紀 60 年代后期以來,硬件方面已有大容量磁盤且價格下降,軟件的開發成本增加,數據的開放性提升。數據規模量激增,尤其是到現在已經進入了大數據時代,不經每時每刻都產生大量數據,新的形式的數據也不斷被創造。以文件系統作為數據管理手段顯然不能滿足應用的需求,統一管理數據的專門軟件系統—數據庫管理系統就被開發出來了。該階段的應用程序和數據的關系如下圖所示。

數據庫

數據是數據庫中存儲的基本對象,而數據庫(DB)就是存儲數據的倉庫。數據庫是長期存儲在計算機內、有組織的、可共享的大量數據的集合。數據庫中的數據按一定的數據模型組織、描述和儲存,具有較小的冗余度,較高的數據獨立性和可擴展性,可以被用戶共享。開發者往往會收集關於某個方面的大量數據存儲於數據庫中,當需要時從數據庫獲取數據進行加工處理。簡單地說,數據庫的 3 大基本特點為:永久存儲、有組織和可共享。

數據庫管理系統

數據庫管理系統(DBMS)是用於操作和管理數據庫的計算機基礎軟件,主要的功能是用於建立、使用和維護數據庫。DBMS 的一些功能說明如下:

  1. 定義數據:開發者可以用 DBMS 提供的數據庫定義語言(DDL),對數據庫存儲的數據對象的組成和結構進行定義;
  2. 組織、存儲和管理數據:DBMS將以某種存取方式,以某種文件結構存儲數據,通過合理的方式組織和管理數據以提高存取效率,並且提供多種讀取數據的方式滿足開發者在的各種需求;
  3. 操作數據:用戶通過DBMS可以對數據庫進行基本的增、刪、查、改的操作;
  4. 事務管理和運行管理:管理數據庫的建立、運用和維護等工作,以保證各項事務能夠正確運行,同時保證數據的安全性、完整性和並發使用。在發生錯誤時,對於系統和數據都有一定的恢復能力;
  5. 數據庫的建立和維護功能:包括數據庫初始數據的輸入、轉換功能,數據庫的轉儲、恢復功能,數據庫的重組織功能和性能監視、分析功能等。
  6. 其他功能:包括數據庫管理系統與網絡中其他軟件系統的通信功能.一個數據庫管理系統與另一個數據庫管理系統或文件系統的數據轉換功能,異構數據庫之間的互訪和互操作功能等。

數據庫系統

數據庫系統(DBS)是由數據庫、數據庫管理系統、應用程序和數據庫管理員(DBA)組成的,用於存儲、管理、處理和維護數據的系統。數據庫提供數據的存儲功能,數據庫管理系統提供數據的組織、存取、管理和維護等基礎功能,數據庫應用系統根據應用需求使用數據庫,數據庫管理員負責全面管理數據庫系統。

數據庫系統有如下特點:

  1. 數據結構化
    在文件系統中,文件中的記錄內部具有結構,但是當應用程序使用其中的數據時還是要經過處理,開發的負擔就被加重了。數據結構化后,數據和數據之間就不是彼此分裂的孤島,數據之間的關系變得清晰。這就要求在描述數據時不僅要描述數據本身,還要描述數據之間的聯系。同時開發者並不需要對數據做復雜的處理,需要使用時把數據查出來即可,並不需要為不同的數據寫做不同的處理方式。例如對於在線做題程序,題目集的數據可以用如下方式結構化。
  2. 共享性高、冗余度低
    數據不再依托於某個應用而存在,數據可以被多個用戶、多個應用共享使用。數據共享可以大大減少數據冗余,節約存儲空間。
  3. 數據獨立性高
    數據獨立性包括數據的物理獨立性和邏輯獨立性。物理獨立性是指用戶的應用程序與數據庫中數據的物理存儲是相互獨立的,也就是說應用程序不需要知道數據在存儲介質中如何存在,只需要再邏輯上對數據進行使用。類似於 DAO 模式,我們不需要去關心底層究竟發生了什么,只需要調用對應的接口實現功能就行。
    邏輯獨立性是指用戶的應用程序與數據庫的邏輯結構是相互獨立的。也就是說數據的邏輯結構改變時用戶程序也可以不變。
  4. 統一管理和控制
    數據庫的共享將會帶來數據庫的安全隱患,且當多個用戶訪問數據庫時會帶來並發控制問題。對於數據的安全性,數據庫管理系統保護數據以防止不合法使用造成的數據泄密和破壞。對於數據的的完整性,能檢查數據的完整性指數據的正確性、有效性和相容性,將數據控制在有效的范圍內。對於並發,同時數據庫系統對多用戶的並發操作加以控制和協調。對於恢復功能,具有將數據庫從錯誤狀態恢復到某一已知的正確狀態的功能。

SQL 和數據庫語言

SQL

SQL 是結構化查詢語言,是一種數據庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系數據庫系統。結構化查詢語言是高級的非過程化編程語言,允許用戶在高層數據結構上工作,且 SQL 語句的編寫具有很高的靈活性。它不要求用戶指定對數據的存放方法,也不需要用戶了解具體的數據存放方式,可以使用相同的結構化查詢語言作為數據輸入與管理的接口。

SQL 具有如下特點:

  1. 專門為數據庫而生:SQL 可以獨立完成數據庫生命周期中的全部活動;
  2. 高度非過程化:用戶不需要知道數據庫具體以什么形式存在,也不需要知道具體的讀寫方式,僅需要使用 SQL 語句操作數據庫即可;
  3. 面向集合的操作方式:SQL 進行增、刪、查、改的基本操作時,都是基於對元組的集合的操作實現的;
  4. 自含式、嵌入式語言:用戶可以在 CMD 下使用 SQL 操作數據庫,也能夠嵌入到高級語言程序中使用。
  5. 語言簡潔:SQL 語言語言十分簡潔,語法簡單,易學易用。

數據庫語言

數據庫語言分為 6 種,分別是:

  1. 數據查詢語言(DQL):DQL用於從表中獲得數據,DQL語句也稱為“數據檢索語句”,用來搜索數據庫里面的數據。SELECT可以說是SQL用得最多的操作了,其他和常用的子句有 WHERE,ORDER BY,GROUP BY 等,可以使 SQL 語句滿足更多情況下的需求。
  2. 數據操作語言(DML):DML稱為動作查詢語言,其語句用於對數據庫的表進行增、刪、改的操作,SQL中分別是 INSERT,UPDATE 和 DELETE 語句。
  3. 事務處理語言(TPL):TPL的語句能確保被DML語句影響的表的所有行及時得以更新。
  4. 數據控制語言(DCL):用於確定單個用戶和用戶組對數據庫對象的訪問。
  5. 數據定義語言(DDL):用於在數據庫中創建新表或刪除表,為表加入索引,為表創建或刪除列等。
  6. 指針控制語言(CCL):用於對一個或多個表單獨行的操作。

宿主語言

在數據庫技術中,編寫應用程序的語言仍然是例如 C、Java 等高級語言,這些語言被稱為宿主語言(或主語言,Host Language)。為了使程序員編程時既可以使用數據庫語言又可使用常規的程序設計語言,數據庫系統需要把數據庫語言嵌入到宿主語言中。

參考資料

《數據庫系統概論(第5版)》,王珊 薩師煊 編著,高等教育出版社
百度百科:結構化查詢語言


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM