- 數據庫系統原理及MySQL應用教程
- 李輝等編著
- 1707字
- 2020-10-23 14:25:02
1.2 數據庫系統特點
通過前面的學習可知,數據處理的中心問題是數據管理。隨著計算機硬件和軟件的發展,數據管理經歷了人工管理階段、文件系統階段和數據庫系統階段三個發展階段。數據庫技術正是應數據管理任務的需要而產生、發展的。與人工管理和文件系統相比,數據庫系統特點主要有以下幾個方面。
1.數據結構化
數據庫在描述數據時不僅要描述數據本身,還要描述數據之間的聯系。在文件系統中,盡管記錄內部已有了某些結構,但記錄之間沒有聯系。數據庫系統實現了整體數據的結構化,這是數據庫的主要特征之一,也是數據庫系統與文件系統的本質區別。在數據庫系統中,數據不再針對某一應用,而是面向全組織,具有整體的結構化。
2.數據共享性高,冗余度低,易擴充
數據庫系統從整體角度描述數據,數據不再面向某個應用而是面向整個系統,因此,數據可以被多個用戶、多個應用共享使用。數據共享可以大大減少數據冗余,節約存儲空間。數據共享還能夠避免數據之間的不相容性與不一致性。
數據中相容性指的是表示同一事實的兩個數據應相同,否則就不相容或者滿足某一約束關系的一組數據不應該發生互斥,否則就不相容。比如:同一個人不能有兩個性別。
所謂數據的不一致性,是指數據的矛盾性、不相容性。產生數據不一致的原因主要有以下三種:一是由于數據冗余造成的;二是由于并發控制不當造成的;三是由于各種故障、錯誤造成的。
第一種情況的出現往往是由于重復存放的數據未能進行一致性地更新造成的。例如教師工資的調整,如果人事處的工資數據已經改動了,而財務處的工資數據未改變,就會產生矛盾的工資數。
第二種情況是由于多用戶共享數據庫,而更新操作未能保持同步進行而引起。例如,在飛機票訂購系統中,如果不同的兩個購票點同時查詢某張機票的訂購情況,而且分別為顧客訂購了這張機票,就會造成一張機票分別賣給兩名顧客的情況。這是由于系統沒有進行并發控制,所以造成了數據的不一致性。
第三種情況下,當由于某種原因(如硬件故障或軟件故障)而造成數據丟失或數據損壞,要根據各種數據庫維護手段(如轉存、日志等)和數據恢復措施將數據庫恢復到某個正確的、完整的、一致性的狀態下。
3.數據獨立性高
數據獨立性包括數據的物理獨立性和數據的邏輯獨立性。物理獨立性是指用戶的應用程序與存儲在磁盤上的數據庫中的數據是相互獨立的。也就是說,數據在磁盤上的數據庫中的存儲是由DBMS管理的,用戶程序不需要了解,應用程序要處理的只是數據的邏輯結構,這樣當數據的物理存儲改變了,而應用程序卻不用改變。
邏輯獨立性是指用戶的應用程序與數據庫的邏輯結構是相互獨立的,也就是說,數據的邏輯結構改變了,用戶程序可以不變。數據與程序的獨立,把數據的定義從程序中分離出去,加上數據的存取又由DBMS負責,從而簡化了應用程序的編制,大大減少了應用程序的維護和修改。
4.數據由DBMS統一管理和控制
數據由DBMS統一管理和控制,用戶和應用程序通過DBMS訪問和使用數據庫。數據庫的共享是并發的共享,即多個用戶可以同時存取數據庫中的數據,甚至可以同時存取數據庫中的同一數據。為此,DBMS還必須提供以下幾方面的數據控制功能:
(1)數據的安全性(Security)保護
數據的安全性是指保護數據以防止不合法的使用造成數據的泄密和破壞。使每個用戶只能按規定,對某些數據以某些方式進行使用和處理。
(2)數據的完整性(Integrity)檢查
數據的完整性指數據的正確性、有效性和相容性。完整性檢查將數據控制在有效的范圍內,或保證數據之間滿足一定的關系。
(3)并發(Concurrency)控制
當多個用戶的并發進程同時存取、修改數據庫時,可能會發生相互干擾而得到錯誤的結果,或使得數據庫的完整性遭到破壞,因此,必須對多用戶的并發操作加以控制和協調。
(4)數據庫恢復(Recovery)
計算機系統的硬件故障、軟件故障、操作員的失誤,以及故意的破壞會影響數據庫中數據的正確性,甚至造成數據庫部分或全部數據的丟失。DBMS必須具有將數據庫從錯誤狀態恢復到某一已知的正確狀態(也稱為完整狀態或一致狀態)的功能,這就是數據庫的恢復功能。
注:數據庫、數據庫管理系統、數據庫系統是三個不同的概念。數據庫強調的是相互關聯的數據;數據庫管理系統強調的是管理數據庫的系統軟件;而數據庫系統強調的是基于數據庫技術的計算機系統。
- Advanced Splunk
- Dynamics 365 for Finance and Operations Development Cookbook(Fourth Edition)
- MySQL數據庫管理實戰
- Node.js+Webpack開發實戰
- 精通JavaScript+jQuery:100%動態網頁設計密碼
- Leap Motion Development Essentials
- 前端架構:從入門到微前端
- Hands-On Natural Language Processing with Python
- 快人一步:系統性能提高之道
- C語言程序設計
- Swift語言實戰晉級
- Mockito Essentials
- Python應用與實戰
- Java自然語言處理(原書第2版)
- Visual C++程序設計全程指南