- SQL Server 2008數據庫應用技術(第二版)
- 楊云 譚冬平
- 3632字
- 2019-10-25 18:01:00
1.2 數據庫系統概述
1.2.1 數據庫的概念
數據庫、數據庫管理系統和數據庫系統是數據庫技術中常用的基本術語,下面簡單介紹。
1.數據庫
數據庫(DataBase,DB)是指長期存儲在計算機內,按一定數據模型組織存儲、可共享的數據集合。它可以供各種用戶共享,具有最小冗余度和較高的數據獨立性。
2.數據庫管理系統
數據庫管理系統(DataBase Management System,DBMS)是用戶和操作系統之間的數據管理軟件。它使用戶方便地定義數據和操縱數據,并能夠保證數據的安全性、完整性、多用戶對數據的并發使用及發生故障后的數據恢復。其功能如下:
①數據定義功能。數據庫管理系統具有專門的數據定義語言(Data Description Language,DDL),用戶可以方便地創建、修改、刪除數據庫及數據庫對象。
②數據操縱功能。數據庫管理系統提供數據操縱語言(Data Manipulation Language,DML),可以實現對數據庫中數據的檢索、插入、刪除和修改等操作。
③數據庫運行管理功能。數據庫運行過程中,由數據庫管理系統統一控制管理,以保證數據的安全性、完整性。當多個用戶同時訪問相同數據時,由數據庫管理系統進行并發控制,以保證每個用戶的運行結果都是正確的。
④數據庫的維護功能。它包括數據庫初始數據的輸入、轉換功能,數據庫的轉儲、恢復功能,數據庫的重組織功能和性能監測、分析功能,等等。這些功能通常由一些實用程序完成。
總之,數據庫管理系統是用戶和數據庫之間的交互界面,在各種計算機軟件中,數據庫管理系統軟件占有極其重要的位置。用戶只需通過它就可以實現對數據庫的各種操作與管理。數據庫管理系統在計算機層次結構中的地位如圖1-5所示。

圖1-5 DBMS在計算機層次結構中的地位
目前,廣泛應用的大型網絡數據庫管理系統有SQL Server、DB2、Oracle、Sybase等,常用的桌面數據庫管理系統有Visual FoxPro、Access等。
3.數據庫系統
數據庫系統(DataBase System,DBS)是指在計算機系統中引入數據庫后的系統,一般由數據庫、操作系統、數據庫管理系統、應用開發工具、應用系統、數據庫管理員、應用程序員和用戶構成。數據庫系統可用圖1-6表示。

圖1-6 數據庫系統
其中,數據庫管理員、應用程序員和用戶主要是指存儲、維護和檢索數據的各類使用者,主要有三類:
①最終用戶(End User,EU)。最終用戶是應用程序的使用者,通過應用程序與數據庫進行交互。
②應用程序員(Application Programmer,AP)。應用程序員是在開發周期內進行數據庫結構設計、完成應用程序開發的人員,通常多于1人,并保證程序在運行周期中功能和性能正確無誤。
③數據庫管理員(Database Administrator,DBA)。數據庫管理員對數據庫進行日常的管理,負責全面管理和控制數據庫系統,是數據庫系統中最重要的人員,其職責包括:設計與定義數據庫系統,幫助最終用戶使用數據庫系統;監督與控制數據庫系統的使用和運行;改進和重組數據庫系統,優化數據庫系統的性能;備份與恢復數據庫;當用戶的應用需求增加或改變時,對數據庫進行較大的改造,即重構數據庫。
1.2.2 數據庫系統的模式結構
在數據模型中有“型”(Type)和“值”(Value)的概念。型是對某一類數據的結構和屬性的說明,值是型的一個具體賦值。例如,學生人事記錄定義為(學號,姓名,性別,系別,年齡,籍貫)這樣的記錄型,而(900201,李明,男,計算機,22,江蘇)則是該記錄型的一個記錄值。
模式(Schema)是數據庫中全體數據的邏輯結構和特征的描述,它僅僅涉及型的描述,不涉及具體的值。模式的一個具體值稱為模式的一個實例(Instance)。同一個模式可以有很多實例。模式是相對穩定的,而實例是相對變動的。模式反映的是數據的結構及其關系,而實例反映的是數據庫某一時刻的狀態。
雖然實際的數據庫系統軟件產品種類很多,它們支持不同的數據模型,使用不同的數據庫語言,建立在不同的操作系統之上,數據存儲結構也各有不同,但從數據庫管理系統角度看,它們在體系結構上通常都具有相同的特征,即采用三級模式結構(微機上的個別小型數據庫系統除外),并提供二級映像功能。
1.數據庫系統的三級模式結構
數據庫系統的三級模式結構是指數據庫系統由外模式、模式和內模式三級構成,如圖1-7所示。

圖1-7 數據庫系統的三級模式
(1)模式
模式又稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。它是數據庫系統模式結構的中間層,不涉及數據的物理存儲細節和硬件環境,與具體的應用程序、所使用的應用開發工具及高級程序設計語言無關。
實際上模式是數據庫在邏輯級上的視圖。一個數據庫只有一個模式。數據庫模式以某一種數據模型為基礎,統一綜合地考慮了所有用戶的需求,并將這些需求有機地結合成一個邏輯整體。定義模式時不僅要定義數據的邏輯結構(例如,數據記錄由哪些數據項構成,數據項的名字、類型、取值范圍等),而且要定義與數據有關的安全性、完整性要求,定義這些數據之間的聯系。
(2)外模式
外模式又稱子模式或用戶模式,是數據庫用戶(包括應用程序員和最終用戶)看見和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。它通常是模式的子集。
一個數據庫可以有多個外模式。由于它是各個用戶的數據視圖,如果不同的用戶在應用需求、看待數據的方式、對數據保密的要求等方面存在差異,則他們的外模式描述就是不同的。即使對模式中的同一數據,在外模式中的結構、類型、長度、保密級別等都可以不同。另一方面,同一外模式也可以為某一用戶的多個應用系統所使用,但一個應用程序只能使用一個外模式。
外模式是保證數據庫安全性的一個有力措施。每個用戶只能看見和訪問所對應的外模式中的數據,數據庫中的其余數據對他們來說是不可見的。
(3)內模式
內模式又稱存儲模式,是數據物理結構和存儲結構的描述,是數據在數據庫內部的表示方式。例如,記錄的存儲方式是順序存儲、按照B樹結構存儲還是按Hash方法存儲,索引按照什么方式組織;數據是否壓縮存儲,是否加密;數據的存儲記錄結構有何規定等。一個數據庫只有一個內模式。
2.數據庫系統的二級映像
數據庫系統的三級模式是對數據的3個抽象級別,它把數據的具體組織留給DBMS管理,使用戶能邏輯地抽象處理數據,而不必關心數據在計算機中的具體表示方式與存儲方式。而為了能夠在內部實現這3個抽象層次的聯系和轉換,數據庫系統在這三級模式之間提供了二級映像:外模式/模式映像和模式/內模式映像。正是這二級映像保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性。
模式描述的是數據的全局邏輯結構,外模式描述的是數據的局部邏輯結構。對應于同一個模式可以有任意多個外模式。對于每一個外模式,數據庫系統都有一個外模式/模式映像,它定義了該外模式與模式之間的對應關系。這些映像定義通常包含在各自外模式的描述中。當模式改變時(例如,增加新的數據類型、新的數據項、新的關系等),由數據庫管理員對各個外模式/模式的映像作相應改變,可以使外模式保持不變,從而使應用程序不必修改,保證了數據的邏輯獨立性。
數據庫中只有一個模式,也只有一個內模式,所以模式/內模式的映像是唯一的,它定義了數據全局邏輯結構與存儲結構之間的對應關系。例如,說明邏輯記錄和字段在內部是如何表示的。該映像定義通常包含在模式描述中。當數據庫的存儲結構改變了(例如,采用了更先進的存儲結構),由數據庫管理員對模式/內模式映像作相應改變,可以使模式保持不變,從而保證了數據的物理獨立性。
1.2.3 數據庫系統的特點
數據庫系統的主要特點包括數據結構化、數據共享和數據獨立性,以及統一的數據控制功能。
1.數據結構化
數據庫中的數據是以一定的邏輯結構存儲的,這種結構是由數據庫管理系統所支持的數據模型決定的。數據庫系統不僅可以表示事物內部各數據項之間的聯系,而且可以表示事物與事物之間的聯系。只有按照一定結構組織和存儲的數據,才便于對它們實現有效的管理。
2.數據共享
數據共享是數據庫系統最重要的特點。數據庫中的數據能夠被多個用戶、多個應用程序所共享。此外,由于數據庫中的數據被集中管理和統一組織,因而避免了不必要的數據冗余。
3.數據獨立性
在數據庫系統中,數據與程序基本上是相互獨立的,其相互依賴的程度已大大減小。對數據結構的修改將不會對程序產生大的影響。反過來,對程序的修改也不會對數據產生大的影響。
4.統一的數據控制
數據庫系統必須提供必要的數據安全保護措施,主要包括:
①安全性控制。數據庫系統提供了安全措施,使得只有合法用戶才能進行其權限范圍內的操作,防止非法操作造成數據的破壞或泄密。
②完整性控制。數據的完整性包括數據的正確性、有效性和相容性。數據庫系統可以提供必要的手段來保證數據庫中的數據在處理過程中始終符合其事先規定的完整性要求。
③并發操作控制。對數據的共享將不可避免地出現對數據的并發操作,也就是說,多個用戶或者多個應用程序同時使用同一個數據庫、同一個數據庫表或者同一條記錄。如果不加以控制將導致相互干擾而出現錯誤的結果,使得數據的完整性遭到破壞,所以必須對并發操作進行控制協調。一般采用數據鎖定的方法來處理并發操作,當某個用戶訪問并修改某個數據時,應先將該數據鎖定,當這個用戶完成對此數據的寫操作之后消除鎖定,然后才允許其他的用戶訪問此數據。
- Greenplum:從大數據戰略到實現
- SQL Server 2016 數據庫教程(第4版)
- 信息系統與數據科學
- 新型數據庫系統:原理、架構與實踐
- Learning JavaScriptMVC
- Oracle高性能自動化運維
- OracleDBA實戰攻略:運維管理、診斷優化、高可用與最佳實踐
- Starling Game Development Essentials
- 科研統計思維與方法:SPSS實戰
- Hadoop大數據開發案例教程與項目實戰(在線實驗+在線自測)
- Hadoop集群與安全
- MySQL技術內幕:SQL編程
- Mastering LOB Development for Silverlight 5:A Case Study in Action
- 深入理解InfluxDB:時序數據庫詳解與實踐
- Access 2010數據庫程序設計實踐教程