- 從零開始學SQL Server
- 桂穎等編著
- 266字
- 2018-12-27 12:57:31
第1篇 數據庫入門
第1章 SQL Server 2005數據庫基礎
數據庫(Database)技術是按照數據結構來組織、存儲和管理數據的倉庫,它可以追溯到五十年前雷明頓蘭德公司的Univac I計算機推出的一種一秒鐘可以輸入數百條記錄的磁帶驅動器。后來,隨著信息技術的不斷發展和數據膨脹引起的需要,數據庫技術有了長足的發展。為了讓大家更加深入地了解數據庫技術,本書將介紹比較實用的數據庫軟件——SQL Server 2005。SQL Server 2005簡單實用,市場占有率高,非常適合計算機初學者及數據庫研究者深入學習。本章的主要內容如下:
? 走進數據庫的世界,初步認識數據庫。
? 數據庫的成長歷程,對數據庫的發展大概了解。
? 數據庫應用系統的開發步驟。
1.1 數據庫的世界
數據庫從誕生至今已經歷經五十多年,在這段時間數據庫發生了巨大變化。人們對數據庫并沒有統一的定義,在此我們僅列舉兩個比較著名的定義來闡述數據庫的實質及功能。定義一, J.Martin曾經給數據庫下了一個比較完整的定義,其表述如下:數據庫是存儲在一起的相關數據的集合,這些數據是結構化的,無有害的或不必要的冗余,并為多種應用服務;數據的存儲獨立于使用它的程序;對數據庫插入新數據,修改和檢索原有數據均能按一種公用的和可控制的方式進行。當某個系統中存在結構上完全分開的若干個數據庫時,則該系統包含一個“數據庫集合”。定義二,所有的信息,不論其是以印刷形式、計算機存儲單元形式,還是其他形式存在,都應視為“數據庫”(此定義為伯尼爾公約議定書專家委員會的觀點)。數據庫具有如下特點:
? 實現了數據共享:數據的共享包含所有用戶可同時存取數據庫中的數據,也包括用戶通過接口使用數據庫,數據的共享可以有效節省存儲空間,避免數據間的不一致情況。
? 有效減少數據冗余:由于數據庫實現了數據共享,從而并非每個用戶各自建立文件,因此可以減少大量重復數據,減少了數據冗余,維護了數據的一致性。
? 數據的獨立性比較高:數據的獨立性包括數據庫中數據庫的邏輯結構和應用程序,彼此是相互獨立的,并且數據物理結構變化并不影響數據邏輯結構。
? 數據實現了集中控制:在文件管理方式中,數據處于一種分散狀態,不同用戶或同一用戶在處理不同文件時各文件毫無關系。但是數據庫可以對數據進行集中控制和管理,并通過數據模型表示各數據的組織和其中的關系。
? 確保了數據的安全性和可靠性:數據的安全性和可靠性主要表現在如下幾個方面:
可以防止數據丟失、錯誤更新等。
確保了數據的有效性、正確性。
數據庫管理系統提供了一套成熟的方法,可以及時發現故障并且修復,從而保證數據免遭破壞。
下面簡要介紹與數據庫技術密切相關的幾個概念。
1.1.1 信息
信息是信息論中的一個術語,常常把消息中有意義的內容稱為信息。1948年,美國數學家、信息論的創始人香農在題為“通訊的數學理論”的論文中指出:“信息是用來消除隨機不定性的東西”。1948年,美國著名數學家、控制論的創始人維納在《控制論》一書中,指出:“信息就是信息,既非物質,也非能量。”信息是客觀世界在人們頭腦中的反映。
信息的特征主要包括以下幾個方面:
? 信息的內容是關于客觀事物或思想方面的知識。
? 信息是有用的。
? 信息能夠在空間和時間上被傳遞。
? 信息需要一定的形式表示。
1.1.2 數據
數據是承擔信息的物理符號,是數據庫中存儲的基本對象。數據包括“型”和“值”,“型”代表數據的結構,“值”代表數據的具體取值。因此,一條數據受數據類型和取值范圍的約束。例如,在學生信息統計單中,我們普遍感興趣的是學生的姓名、性別、年齡、聯系方式等,因此我們在數據中可以存入如下信息:王明,男,24,13892843459。
這條數據向我們闡述了如下信息:學生姓名王明,性別男,年齡24歲,手機號為13892843459。前面的姓名,性別等為“型”,而后面的王明,男等數據表述了“值”。
1.1.3 數據管理
數據管理是數據處理的基礎工作,是指利用計算機和軟件技術對數據進行收集、存儲、處理和應用的過程。數據管理的工作包括3個內容:組織和保存數據、進行數據維護、提供數據查詢和數據統計功能。隨著計算機技術的發展,數據管理經歷了人工管理、文件系統、數據庫系統3個發展階段。在數據庫系統中所建立的數據結構,更充分地描述了數據間的內在聯系,便于數據修改、更新與擴充,同時保證了數據的獨立性、可靠性、安全性與完整性,減少了數據冗余,近而提高了數據共享程度及數據管理效率。
1.1.4 數據庫管理系統
數據庫管理系統(Data Base Management System,DBMS)是提供數據庫管理的軟件系統,它由一組計算機程序組成,管理并控制數據資源的使用。數據庫管理系統是數據庫系統的核心,為用戶提供組織和存儲數據、獲取和維護數據的功能。其具體功能如下。
? 數據庫定義功能:數據庫管理系統提供數據定義語言(DDL,Data Definition Language),用戶可以方便地定義數據庫結構,包括外模式、內模式等的定義,并且包括數據庫、表等對象的定義。
? 數據操縱功能:數據庫管理系統在提供數據定義語言的同時還提供了數據操縱語言(Data Manipulation Language,DML),用戶可以通過數據操縱語言實現數據庫的基本操縱,如實現對數據庫的檢索、插入、刪除和修改等。
? 數據庫的運行管理:數據庫在建立、運行和維護時由DBMS進行管理、控制,以保證數據的安全性、完整性、多用戶對數據的并發使用及發生故障后的系統恢復。
? 數據庫的建立和維護功能:主要包括數據庫數據批量載入、數據庫的轉儲、介質故障的恢復、數據庫的重組織、性能監視與分析等。
? 除此之外,數據庫管理系統還包括DBMS與網絡中其他軟件系統的通信功能、數據庫的重組織功能、性能監視和分析功能等。
1.1.5 數據庫系統
數據庫系統(DBS,Data Base System)是指由數據庫及其管理軟件組成的系統。一個數據庫系統應由計算機硬件、數據庫、數據庫管理系統、數據庫應用系統和數據庫管理員組成。
數據庫系統具體以下性能:①能夠保證數據的獨立性。②冗余數據少,數據共享程度高。③系統的用戶接口簡單,用戶容易掌握,使用方便。④能夠確保系統運行可靠,出現故障時能迅速排除;能夠保護數據不受非授權者訪問或破壞;能夠防止錯誤數據的產生,一旦產生也能及時發現。⑤有重新組織數據的能力,能改變數據的存儲結構或數據存儲位置,以適應用戶操作特性的變化,改善由于頻繁插入、刪除操作造成的數據組織零亂和時空性能變壞的狀況。⑥具有可修改性和可擴充性。⑦能夠充分描述數據間的內在聯系。
1.2 數據庫的成長歷程
數據庫的發展歷史可以追溯到五十年前,那時數據管理比較簡單。通過大量的分類、比較和表格繪制的機器運行數百萬穿孔卡片來進行數據的處理,運行結果在紙上打印出來。隨著數據庫技術的發展,數據庫越來越不可缺少。至今,數據庫技術的發展大致經歷了3個階段:
? 人工管理階段(20世紀40年代中期到50年代中期)。
? 文件系統階段(20世紀50年代末期到60年代中期)。
? 數據庫系統階段(20世紀60年代末期到現在)。
1.2.1 人工管理階段
人工管理階段大約在20世紀40年代中期至50年代中期,其是使用匯編語言進行操縱,外存只有卡片、紙帶、磁帶及磁盤(1956年IBM生產出第一個磁盤驅動器—— the Model 305 RAMAC)等,這個時期的數據處理方式為數據批處理。其特點如下:
? 數據不進行保存,數據用完就撤走。
? 沒有專門的數據管理軟件,因此這個時期程序員的負擔很重。
? 數據不共享。
? 只有程序的概念,數據具有不獨立性。
? 數據面向應用程序,無法相互利用,相互參照,因此程序間會產生大量冗余數據。
人工管理階段的示意圖,如圖1-1所示。

圖1.1 人工管理階段示意圖
1.2.2 文件系統階段
文件系統階段出現在20世紀50年代末到60年代中期,其主要標志為計算機中有了專門管理數據庫的軟件——操縱系統。此階段磁盤、磁鼓等計算機直接存儲的外存設備的出現推動了軟件技術的發展,而操作系統的出現標志著數據管理步入一個新的階段。
在文件系統階段,數據以文件為單位存儲在外存,并且由操縱系統統一管理。文件的物理結構和邏輯結構彼此分離,數據和程序相互獨立。此階段的硬件包括磁盤、磁鼓等直接存儲的外存設備;軟件為操縱系統、高級語言,操縱系統中的文件系統是專門用于數據管理的軟件(DOS);文件關系階段對文件實行批處理、聯機實時處理。此階段的特點如下:
? 數據可長期保存。
? 通過文件系統管理數據。
? 數據共享性差,數據的組織是面向程序的,會出現大量冗余。
? 數據獨立性比較差。
文件系統階段示意圖,如圖1.2所示。

圖1.2 文件系統階段示意圖
1.2.3 數據庫系統階段
數據庫系統發生在20世紀60年代末到現在,這個事情計算機在數據管理領域普遍應用,并且人們對數據管理技術提出了更高的要求。由于硬件價格下降,因此大容量的磁盤存儲成為可能。數據庫系統對數據管理采用聯機實時處理方式。其特點主要表現在以下幾點:
? 面向企業或部門,以數據為中心組織數據,形成綜合性的數據庫,為其他應用共享。
? 數據結構化,同一個數據庫中的文件聯系緊密,在整體上也服從一定的結構形式。
? 數據共享性高,尤其在同一個數據庫中,因此冗余小,并且數據易修改、易擴充。
系統現有用戶或程序可以共享數據庫中的數據。
當系統需要擴充時,新用戶或新程序還可以共享原有的數據資源。
多用戶或多程序可以在同一時刻共同使用同一數據。
? 程序和數據獨立性高。
數據的物理獨立性(Physical Data Independence)指當數據的物理結構發生變化時,應用程序不需要修改也可以正常工作。
數據的邏輯獨立性(Logical Data Independence)是指當數據庫系統的數據全局邏輯結構改變時,它們對應的應用程序不需要改變仍可以正常運行。
對數據進行統一管理和控制(通過DBSM),提供了數據的安全性、完整性,以及并發控制和數據恢復。
數據的安全性控制是指保護數據庫,以防止不合法的使用造成數據泄漏、破壞和更改。
數據的完整性控制是指為保證數據的正確性、有效性和相容性,防止不符合語義的數據輸入或輸出所采用的控制機制。
數據的并發控制是指排除由于數據共享,即用戶并行使用數據庫中的數據時,所造成的數據不完整和系統運行錯誤問題。
數據恢復是通過記錄數據庫運行的日志文件和定期做數據備份工作,保證數據在受到破壞時,能夠及時使數據庫恢復到正確狀態。
1.2.4 數據庫發展歷程和研究方向
從數據庫技術發展的過程可以看到,數據庫學科的發展和數據庫軟件產業的發展是緊密結合并相互促進的。三十多年來由于進行了扎實的基礎研究,使數據庫技術具有了堅實的理論基礎,形成了一門研究范圍廣泛的數據庫學科。
1.數據庫發展歷程
1951年雷明頓蘭德(Remington Rand Inc.)的Univac系統使用磁帶和穿孔卡片作為數據存儲,從而引發了數據管理的革命。
1961年,美國通用電氣公司Bachman等人在1961年開發成功的IDS(Integrated DataStore)是最早出現的網狀DBMS,這個DBMS也是第一個數據庫管理系統——集成數據存儲(Integrated DataStore IDS),奠定了網狀數據庫的基礎。
1970年,IBM的研究員E.F.Codd博士在刊物《Communication of the ACM》上發表了一篇名為“A Relational Model of Data for Large Shared Data Banks”的論文,提出了關系模型的概念,奠定了關系模型的理論基礎。
1974年,IBM的Ray Boyce和Don Chamberlin將Codd關系數據庫12條準則的數學定義以簡單的關鍵字語法表現出來,里程碑式地提出了SQL(Structured Query Language)語言。
1986年,ANSI把SQL作為關系數據庫語言的美國標準,同年公布了標準SQL文本。
2.未來發展趨勢
隨著信息管理內容的不斷擴展,出現了豐富多樣的數據模型(如層次模型、網狀模型、關系模型、面向對象模型、半結構化模型等),新技術也層出不窮(如數據流、Web數據管理、數據挖掘等)。數據庫在信息集成、數據流管理、傳感器數據庫技術、半結構化數據與XML數據管理、網格數據管理、DBMS自適應管理等方面都有所發展,并且對數據庫領域研究方向的發展趨勢有深遠影響。
1.3 數據庫應用系統的開發步驟
數據庫應用系統可以分為兩大類:一類是以數據為中心的應用系統,其中心任務在于對數據的采集、整理和存儲工作上;另一類是以處理為中心的應用系統,其重點是使用數據,包括數據的插入、查詢、統計等工作。一般企業的數據應用系統屬于后者,數據庫應用系統的開發一般要經過以下幾個時期和階段,如圖1.3所示。

圖1.3 數據庫應用系統開發過程
1.3.1 項目規劃期
項目規劃期的主要任務為分析問題規劃、對項目進行系統必要性分析和可行性分析。
1.問題規劃
在收集整理相關資料的基礎上,要確定將建立的數據庫系統與周邊的關系,對系統定位,其規模、地位、功能都需要作全面的論證。
規劃人力資源調配。對參與開發和維護的管理人員、技術人員提出要求并對其素質作出評估。對系統的開發、運行、維護的成本作出估算,預測系統效益的期望值。
2.需求分析階段
(1)需求信息的采集。需求信息的采集一般以機構設計和業務活動為主干線,從高層到中層到底層逐漸展開。
(2)需求信息的分析整理。對收集到的信息要做分析整理工作。數據流圖(DFD,Data Flow Diagram)是業務流程及業務中數據聯系的形式描述。數據字典(DD,Data Dictionary)詳細描述系統中的全部數據。數據字典包括數據項、數據組項、數據流、數據存儲等部分。
(3)評審需求信息。開發過程中的每一個階段都要經過評審,確認任務是否全部完成,避免或糾正工作中出現的錯誤和疏漏。
1.3.2 項目開發時期
1.概念模型設計
概念模型不依賴于具體的計算機系統,它是純粹反向信息需求的概念結構。設計概念模型時常用的方法為ER圖方法。用設計好的ER圖再附以相應的說明書可作為階段成果。
2.邏輯設計
邏輯設計階段的主要目標是把概念模型轉換為具體計算機上數據庫管理系統所支持的結構數據模型。
邏輯設計的輸入要素包括概念模型、用戶需求、約束條件、選用的數據庫管理系統的特性。
邏輯設計的輸出信息包括數據庫管理系統可處理的模式和子模式、應用程序設計指南、物理設計指南。
3.物理設計
物理設計是對給定的邏輯數據模型配置一個最合適應用環境的物理結構。物理設計的輸入要素包括模式和子模式、物理設計指南、硬件特性、OS和數據庫管理系統的約束、運行要求等。
數據設計的步驟如下:
(1)存儲記錄結構。設計綜合分析數據存儲要求和應用需求,設計存儲記錄格式。
(2)存儲空間分配。從提高系統性能方面考慮,應將設計好的存儲記錄作為一個整體,合理地分配物理存儲區域。盡可能充分利用物理順序特點,把不同類型的存儲記錄指派到不同的物理群中。
(3)訪問方法的設計。一個訪問方法包括存儲結構和檢索機構兩部分。存儲結構限定了在訪問存儲記錄時可以使用的訪問路徑;檢索機構定義了每個應用實際使用的訪問路徑。
(4)物理設計的性能評價。其主要評價性能包括查詢響應時間和存儲空間、開銷、效率。
4.程序編制與調試
在邏輯數據庫結構確定以后,應用程序設計的編制就可以開始了。程序模塊代碼通常先在模擬的環境下初步調試,然后再進行聯合調試。聯合調試的工作主要包括:
(1)設計并建立數據庫結構。根據邏輯設計和物流設計的結果,用DBMS提供的數據語言(DDL)編寫數據庫的源模式,經編譯得到目標模式,執行目標模式即可建立時間的數據庫結構。
(2)調試運行數據庫結構建立后,裝入實驗數據,使數據庫進入調試運行階段。調試分為3個步驟:模塊測試,用于測試程序的每個模塊是否有錯誤;組裝測試,用于測試模塊之間的接口是否正確;確定測試,用于測試整個軟件系統是否滿足用戶功能性要求。常用的測試方法分為白盒測試和黑盒測試兩種,其設計的測試用例是不同的。
? 白盒測試:又稱結構測試或邏輯驅動測試。“白盒”測試將測試對象看做是一個完全透明化的盒子,測試人員可以利用程序內部的邏輯結構及相關的信息來設計或選擇測試用例。因此白合測試主要考慮的是測試用例對程序內部邏輯的覆蓋程度,而不考慮程序的功能。
? 黑盒測試:又稱為功能測試、數據驅動測試或黑箱測試。在這種測試方法中,程序對測試人員是完全不透明的。測試者不考慮程序的內部結構和特性,只根據程序的需求規格說明中的程序功能或程序的外部特性來設計程序的測試用例。
測試后,應完成“測試報告”。該報告要說明測試的對象、測試數據的選擇、測試結果是否符合預期結果。如果發現問題,要經過調試找出錯誤原因并及時予以改正。
5.運行和維護時期
本階段的主要任務是軟件維護。軟件維護是修改軟件系統在使用過程中發現的隱含錯誤,擴充用戶在使用過程中提出的新功能要求,其目的是維護軟件系統的正常運行。此階段的主要工作是:
? 維護數據庫的安全性和完整性。按照制定的安全規范和故障恢復規范,在系統的安全出現問題時,及時調整授權和更改密碼。及時發現系統運行時出現的錯誤,迅速修改,確保系統正常運行。把數據庫的備份和轉儲作為日常的工作,一旦發生故障,立即使用數據庫的最新備份予以恢復。
? 監察系統的性能。運用DBMS提供的性能監察與分析工具,不斷地監控系統的運行情況。當數據庫的存儲空間或響應時間等性能下降時,立即進行分析找出原因,并及時采取措施改進。例如,可通修改某些參數、整理碎片、調整存儲結構或重新組織數據庫等方法,使數據庫系統保持高效率、正常的運作。
? 擴充系統的功能。在維持原有系統功能和性能的基礎上,適應環境和需求的變化,采納用戶的合理意見,對原有系統進行擴充,增加新的功能。
需要說明的是,軟件聲明周期雖然按瀑布模型可以劃分為若干階段,但在實際運用中各階段不可能按照理想狀態劃分。隨著開發過程的不斷發展,相鄰階段之間充滿回溯、反復和交叉的過程。
1.4 本章小結
本章從數據庫開發人員的角度,對數據庫的基礎知識、基本原理進行了介紹,使讀者對數據庫有大概了解。并且對數據庫的成長歷程作了簡單介紹,使讀者了解數據庫的由來與發展。最后介紹了數據庫應用系統的開發步驟,使讀者明白作為數據庫開發人員,首先必須了解客戶的應用需求,明確數據庫系統的實體、屬性和聯系的基本情況,建立數據流圖。本章介紹的關系數據庫相關理論及數據庫系統開發的一般過程,都是為具體的數據庫軟件SQL Server 2005編程做準備,為讀者深入掌握SQL Server 2005奠定基礎。
1.5 習題
1.簡述數據庫的特點。
2.簡述數據庫的發展歷程。
3.簡述數據庫應用系統的開發步驟。
4.簡述信息的概念。
5.數據管理工作的3個內容包括哪些?