- Visual FoxPro程序設(shè)計
- 寧愛軍 滿春雷
- 2882字
- 2019-11-06 14:33:02
1.1 數(shù)據(jù)庫系統(tǒng)簡介
1.1.1 數(shù)據(jù)、信息、數(shù)據(jù)處理、數(shù)據(jù)管理
1.數(shù)據(jù)
數(shù)據(jù)是指存儲在某種媒體上能夠被識別的物理符號序列,用于描述信息。數(shù)據(jù)包括數(shù)值型數(shù)據(jù)和非數(shù)值型數(shù)據(jù)。數(shù)值型數(shù)據(jù)以數(shù)字表示信息。非數(shù)值型數(shù)據(jù)以符號及其組合來表示信息,如文本、圖形、圖像、聲音、視頻等。
2.信息
信息是客觀世界事物的存在方式與運(yùn)動狀態(tài)的綜合,用于反映客觀世界的狀態(tài)。數(shù)據(jù)和信息既相互聯(lián)系又相互區(qū)別。信息是數(shù)據(jù)的內(nèi)涵,是對數(shù)據(jù)的語義解釋;而數(shù)據(jù)則是信息的具體表現(xiàn)形式,是信息的符號表示或載體。
3.數(shù)據(jù)處理
數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,其基本操作包括數(shù)據(jù)的收集、整理、存儲、加工、分類、維護(hù)、排序、檢索和傳輸?shù)取?shù)據(jù)處理的目的是從大量的原始數(shù)據(jù)中抽取和推導(dǎo)出有價值的信息,以作為行為和決策的依據(jù)。
4.數(shù)據(jù)管理
數(shù)據(jù)管理是指對數(shù)據(jù)的分類、組織、編碼、存儲、查詢和維護(hù)等操作,是數(shù)據(jù)處理的中心環(huán)節(jié)。數(shù)據(jù)管理技術(shù)的優(yōu)劣直接影響數(shù)據(jù)處理的效率。人們研制出通用高效又方便使用的管理軟件,高效地管理數(shù)據(jù)。數(shù)據(jù)庫技術(shù)正是按此目標(biāo)研究、發(fā)展并完善起來的。
1.1.2 數(shù)據(jù)管理發(fā)展的3個階段
在應(yīng)用需求的不斷推動下,隨著計算機(jī)硬件、軟件技術(shù)的發(fā)展,數(shù)據(jù)管理技術(shù)經(jīng)歷了人工管理、文件系統(tǒng)和數(shù)據(jù)庫系統(tǒng)3個階段。
1.人工管理階段
20世紀(jì)50年代中期以前是人工管理階段。此階段計算機(jī)主要用于科學(xué)計算。在硬件方面,外部存儲器只有磁帶、卡片和紙帶等,還沒有磁盤等直接存取的存儲設(shè)備。在軟件方面,還沒有操作系統(tǒng)和數(shù)據(jù)管理軟件。人工管理階段的應(yīng)用程序和數(shù)據(jù)之間的關(guān)系如圖1-1所示。
人工管理階段的數(shù)據(jù)管理具有如下特點(diǎn):
(1)數(shù)據(jù)不能長期保存。用戶把應(yīng)用程序和數(shù)據(jù)一起輸入內(nèi)存,應(yīng)用程序?qū)?shù)據(jù)進(jìn)行處理、輸出結(jié)果。任務(wù)完成后,數(shù)據(jù)隨著應(yīng)用程序一起從內(nèi)存被釋放。
(2)沒有專用的數(shù)據(jù)管理軟件。數(shù)據(jù)由應(yīng)用程序自己管理,每個應(yīng)用程序不僅要規(guī)定數(shù)據(jù)的邏輯結(jié)構(gòu),而且要設(shè)計物理結(jié)構(gòu),包括數(shù)據(jù)的存儲結(jié)構(gòu)、存取方法和輸入方式等,因此,程序員的負(fù)擔(dān)很重。
(3)數(shù)據(jù)不共享。數(shù)據(jù)是面向程序的,一組數(shù)據(jù)只對應(yīng)一個程序,數(shù)據(jù)不能由多個應(yīng)用程序共享。多個應(yīng)用程序即使涉及某些相同的數(shù)據(jù),也必須各自定義,因此,程序之間有大量的冗余數(shù)據(jù)。
(4)數(shù)據(jù)與程序不具有獨(dú)立性。程序依賴于數(shù)據(jù),如果數(shù)據(jù)的類型、格式或輸入/輸出方式等邏輯結(jié)構(gòu)或物理結(jié)構(gòu)發(fā)生變化,必須修改應(yīng)用程序。

圖1-1 人工管理階段應(yīng)用程序和數(shù)據(jù)之間的關(guān)系
2.文件系統(tǒng)階段
20世紀(jì)50年代后期至60年代中期,為文件系統(tǒng)階段。在該階段,計算機(jī)應(yīng)用范圍逐步擴(kuò)大,不僅用于科學(xué)計算,還大量用于信息管理。在硬件方面,已有了磁盤、磁鼓等直接存取的存儲設(shè)備;在軟件方面,出現(xiàn)了高級語言和操作系統(tǒng),操作系統(tǒng)中有了專門的數(shù)據(jù)管理軟件,一般稱為文件系統(tǒng)。在文件系統(tǒng)階段,應(yīng)用程序和數(shù)據(jù)之間的關(guān)系如圖1-2所示。

圖1-2 文件系統(tǒng)階段應(yīng)用程序和數(shù)據(jù)之間的關(guān)系
文件系統(tǒng)階段的數(shù)據(jù)管理具有如下特點(diǎn):
(1)數(shù)據(jù)以文件的形式長期保存。數(shù)據(jù)以文件的組織方式,保存在計算機(jī)的存儲設(shè)備上,可以被多次使用。應(yīng)用程序可以對文件進(jìn)行查詢、修改和增刪等操作。
(2)由文件系統(tǒng)管理數(shù)據(jù)。文件系統(tǒng)進(jìn)行數(shù)據(jù)的存取,實(shí)現(xiàn)“按文件名訪問,按記錄存取”。應(yīng)用程序按照文件名存取文件,不關(guān)心數(shù)據(jù)的物理存儲(存儲位置、存儲結(jié)構(gòu)等)細(xì)節(jié),從而提高了應(yīng)用程序的開發(fā)效率。
(3)程序與數(shù)據(jù)之間有一定獨(dú)立性。應(yīng)用程序和數(shù)據(jù)之間具有“設(shè)備獨(dú)立性”,即當(dāng)改變存儲設(shè)備時,不必改變應(yīng)用程序。程序員也不必過多考慮數(shù)據(jù)存儲的物理細(xì)節(jié),而將精力集中于算法設(shè)計上,從而大大減少了維護(hù)程序的工作量。
與人工管理階段相比,文件系統(tǒng)階段對數(shù)據(jù)的管理有了很大的進(jìn)步,但仍存在一定缺陷:
(1)數(shù)據(jù)共享性差,冗余度大,易造成數(shù)據(jù)不一致。各數(shù)據(jù)文件之間沒有有機(jī)聯(lián)系,一個文件基本對應(yīng)一個應(yīng)用程序,文件仍然是面向應(yīng)用的。當(dāng)不同應(yīng)用程序所使用的數(shù)據(jù)具有共同部分時,也必須分別建立自己的數(shù)據(jù)文件,數(shù)據(jù)不能共享。同時,由于相同數(shù)據(jù)的重復(fù)存儲、各自管理,不但浪費(fèi)磁盤空間,同時也容易造成數(shù)據(jù)的不一致。
(2)數(shù)據(jù)獨(dú)立性差。在文件系統(tǒng)階段,盡管程序與數(shù)據(jù)之間有一定的獨(dú)立性,但是這種獨(dú)立性主要是指設(shè)備獨(dú)立性,還未能徹底體現(xiàn)用戶觀點(diǎn)下的數(shù)據(jù)邏輯結(jié)構(gòu)獨(dú)立于數(shù)據(jù)外部存儲器的物理結(jié)構(gòu)。一旦改變數(shù)據(jù)的邏輯結(jié)構(gòu),仍然必須修改相應(yīng)的應(yīng)用程序。而當(dāng)應(yīng)用程序發(fā)生變化時,也必須相應(yīng)地修改文件的數(shù)據(jù)結(jié)構(gòu)。
3.數(shù)據(jù)庫系統(tǒng)階段
從20世紀(jì)60年代后期開始,為數(shù)據(jù)庫系統(tǒng)階段。此階段,計算機(jī)廣泛用于數(shù)據(jù)管理,數(shù)據(jù)量急劇增加,文件系統(tǒng)無法適應(yīng)開發(fā)應(yīng)用系統(tǒng)的需要。與此同時,硬件方面出現(xiàn)了大容量、快速存取的磁盤,計算機(jī)存取大量數(shù)據(jù)成為可能。
在應(yīng)用程序和數(shù)據(jù)庫之間,通過數(shù)據(jù)庫管理系統(tǒng)(DataBase Management System,DBMS)來管理數(shù)據(jù),數(shù)據(jù)仍然以文件的形式存儲。與文件系統(tǒng)不同,數(shù)據(jù)庫管理系統(tǒng)把所有應(yīng)用程序使用的數(shù)據(jù)匯集在一起,并以記錄為單位存儲起來,便于應(yīng)用程序查詢和使用。在數(shù)據(jù)庫系統(tǒng)階段,應(yīng)用程序和數(shù)據(jù)之間的關(guān)系如圖1-3所示。

圖1-3 數(shù)據(jù)庫系統(tǒng)階段應(yīng)用程序和數(shù)據(jù)之間的關(guān)系
與人工管理和文件系統(tǒng)相比,數(shù)據(jù)庫系統(tǒng)階段的數(shù)據(jù)管理具有如下特點(diǎn):
(1)數(shù)據(jù)結(jié)構(gòu)化。數(shù)據(jù)結(jié)構(gòu)化是數(shù)據(jù)庫與文件系統(tǒng)的根本區(qū)別。文件系統(tǒng)中的文件之間不存在聯(lián)系,從總體上看,其數(shù)據(jù)是沒有結(jié)構(gòu)的。在數(shù)據(jù)庫系統(tǒng)中,將各種應(yīng)用的數(shù)據(jù)按一定的結(jié)構(gòu)形式(即數(shù)據(jù)模型)組織到一個結(jié)構(gòu)化的數(shù)據(jù)庫中,數(shù)據(jù)庫中的數(shù)據(jù)不再僅僅針對某個應(yīng)用,而是面向整個應(yīng)用系統(tǒng),不僅數(shù)據(jù)內(nèi)部是結(jié)構(gòu)化的,整體也是結(jié)構(gòu)化的。數(shù)據(jù)模型不僅描述了數(shù)據(jù)本身,也描述了數(shù)據(jù)間的聯(lián)系。
(2)數(shù)據(jù)共享性高,冗余度低。數(shù)據(jù)庫系統(tǒng)從整體角度看待和描述數(shù)據(jù),所有用戶的數(shù)據(jù)都包含在數(shù)據(jù)庫中。不同用戶、不同應(yīng)用可以同時存取數(shù)據(jù)庫中的數(shù)據(jù),每個用戶或應(yīng)用只使用數(shù)據(jù)庫中的一部分?jǐn)?shù)據(jù),同一數(shù)據(jù)可供多個用戶或應(yīng)用共享,從而減少了不必要的數(shù)據(jù)冗余,節(jié)省了存儲空間,避免了數(shù)據(jù)之間的不相容性和不一致性。
(3)數(shù)據(jù)獨(dú)立性高。數(shù)據(jù)獨(dú)立性把數(shù)據(jù)的定義從程序中分離出去,數(shù)據(jù)的存取由數(shù)據(jù)庫管理系統(tǒng)負(fù)責(zé),從而簡化了應(yīng)用程序的編制,大大降低了應(yīng)用程序的維護(hù)工作負(fù)擔(dān)。
(4)有統(tǒng)一的數(shù)據(jù)控制功能。數(shù)據(jù)庫由數(shù)據(jù)庫管理系統(tǒng)來統(tǒng)一管理,并提供4個方面的數(shù)據(jù)控制功能:并發(fā)性控制、完整性控制、安全性控制、可恢復(fù)性控制。并發(fā)性控制允許多個用戶同時操作數(shù)據(jù)庫中的數(shù)據(jù);完整性控制保證數(shù)據(jù)的正確性;安全性控制可以防止非法用戶存取數(shù)據(jù);可恢復(fù)性控制是系統(tǒng)出現(xiàn)故障時,可將數(shù)據(jù)恢復(fù)到最近某個時刻的正確狀態(tài)。
1.1.3 新型數(shù)據(jù)庫系統(tǒng)
自20世紀(jì)80年代中期以來,數(shù)據(jù)庫技術(shù)與其他領(lǐng)域的技術(shù)相結(jié)合,出現(xiàn)了數(shù)據(jù)庫的許多新分支。例如,與網(wǎng)絡(luò)技術(shù)相結(jié)合出現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)庫,與分布式處理技術(shù)相結(jié)合出現(xiàn)了分布式數(shù)據(jù)庫,與面向?qū)ο蠹夹g(shù)相結(jié)合出現(xiàn)了面向?qū)ο髷?shù)據(jù)庫,與人工智能技術(shù)相結(jié)合出現(xiàn)了知識庫、主動數(shù)據(jù)庫,與并行處理技術(shù)相結(jié)合出現(xiàn)了并行數(shù)據(jù)庫,與多媒體技術(shù)相結(jié)合出現(xiàn)了多媒體數(shù)據(jù)庫。此外,針對不同應(yīng)用領(lǐng)域出現(xiàn)了工程數(shù)據(jù)庫、實(shí)時數(shù)據(jù)庫、空間數(shù)據(jù)庫、地理數(shù)據(jù)庫、統(tǒng)計數(shù)據(jù)庫、時態(tài)數(shù)據(jù)庫等多種數(shù)據(jù)庫及相關(guān)技術(shù)。
- C++ Builder 6.0下OpenGL編程技術(shù)
- Python爬蟲開發(fā):從入門到實(shí)戰(zhàn)(微課版)
- R語言編程指南
- 人臉識別原理及算法:動態(tài)人臉識別系統(tǒng)研究
- 深入淺出Android Jetpack
- PLC編程及應(yīng)用實(shí)戰(zhàn)
- Python機(jī)器學(xué)習(xí):手把手教你掌握150個精彩案例(微課視頻版)
- Spring快速入門
- HTML5 APP開發(fā)從入門到精通(微課精編版)
- Java網(wǎng)絡(luò)編程實(shí)戰(zhàn)
- Unity&VR游戲美術(shù)設(shè)計實(shí)戰(zhàn)
- ExtJS Web應(yīng)用程序開發(fā)指南第2版
- 編程改變生活:用Python提升你的能力(進(jìn)階篇·微課視頻版)
- Mapping with ArcGIS Pro
- SaaS攻略:入門、實(shí)戰(zhàn)與進(jìn)階