- Oracle實用教程
- 鄭阿奇編著
- 4670字
- 2018-12-30 10:28:28
1.1 數據庫基本概念
1.1.1 數據庫與數據庫管理系統
1.數據庫
數據庫(DB)是存放數據的倉庫,只不過這些數據存在一定的關聯,并按一定的格式存放在計算機上。從廣義上講,數據不僅包含數字,還包括文本、圖像、音頻和視頻等。
例如,把一個學校的學生姓名、課程、學生成績等數據有序地組織并存放在計算機內,就可以構成一個數據庫。因此,數據庫是由一些持久的、相互關聯的數據集合組成,并以一定的組織形式存放在計算機的存儲介質中。數據庫是事務處理、信息管理等應用系統的基礎。
2.數據庫管理系統
數據庫管理系統(DBMS)是管理數據庫的系統,它按一定的數據模型組織數據。DBMS應提供如下功能。
(1)數據定義功能:可定義數據庫中的數據對象。
(2)數據操縱功能:可對數據庫表進行基本操作,如插入、刪除、修改、查詢等。
(3)數據的完整性檢查功能:保證用戶輸入的數據應滿足相應的約束條件。
(4)數據庫的安全保護功能:保證只有賦予權限的用戶才能訪問數據庫中的數據。
(5)數據庫的并發控制功能:使多個應用程序可在同一時刻并發地訪問數據庫的數據。
(6)數據庫系統的故障恢復功能:數據庫運行出現故障時,系統進行數據庫恢復,以保證數據庫可靠運行。
(7)在網絡環境下訪問數據庫的功能。
(8)提供方便、有效的存取數據庫信息的接口和工具。編程人員通過程序開發工具與數據庫的接口編寫數據庫應用程序。數據庫系統管理員(DBA,DataBase Administrator)通過提供的工具對數據庫進行管理。
數據、數據庫、數據庫管理系統與操作數據庫的應用程序,加上支撐它們的硬件平臺、軟件平臺和與數據庫有關的人員一起構成了一個完整的數據庫系統。圖1.1描述了數據庫系統的構成。
自20世紀70年代關系數據模型提出后,商用數據庫系統迅速采用了這種模型,涌現出很多性能優良的關系數據庫管理系統(RDBMS)。
目前,商品化的數據庫管理系統以關系型數據庫為主導產品,技術比較成熟。主流的關系型數據庫管理系統包括Oracle、SQL Server、DB 2、Sybase、Informix和Ingres等,小型的關系型數據庫管理系統包括MySQL、Access、Visual FoxPro等。

圖1.1 數據庫系統的構成
1.1.2 數據模型
數據庫管理系統根據數據模型對數據進行存儲和管理,采用的數據模型主要有:層次模型、網狀模型和關系模型。
(1)層次模型:以樹形層次結構組織數據。圖1.2為某學校按層次模型組織的數據示例。

圖1.2 某學校按層次模型組織的數據示例
(2)網狀模型:每一個數據用一個節點表示,每個節點與其他節點都有聯系,這樣,數據庫中的所有數據節點就構成了一個復雜的網絡。圖1.3為按網狀模型組織的數據示例。

圖1.3 按網狀模型組織的數據示例
(3)關系模型:以二維表格(關系表)的形式組織數據庫中的數據。從用戶觀點看,關系模型由一組關系組成,每個關系的數據結構是一個規范化的二維表。所以一個關系數據庫就是由若干個表組成的。
例如,在描述學生信息時使用的“學生”表,涉及的主要信息有:學號、姓名、性別、出生時間、專業、總學分、備注。表1.1描述了一些學生的信息。
表格中的一行稱為一個記錄;一列稱為一個字段,每列的標題稱為字段名。如果給每個關系表取一個名字,則有 n 個字段的關系表的結構可表示為:關系表名(字段名1,…,字段名n)。通常把關系表的結構稱為關系模式。
表1.1 “學生”表

在關系表中,如果一個字段或幾個字段組合的值可唯一標識其對應記錄,則稱該字段或字段組合為碼。例如,學生的“學號”可唯一標識每一個學生,則“學號”字段為“學生”表的碼。有時一個表可能有多個碼,對于每一個關系表通常可指定一個碼為“主碼”,在關系模式中,一般用下橫線標出主碼。
設表1.1的名字為XSB,關系模式可表示為:XSB(學號,姓名,性別,出生時間,專業,總學分,備注)。
綜上所述,按關系模型組織的數據表達方式簡潔、直觀,插入、刪除、修改操作方便,而按層次、網狀模型組織的數據表達方式復雜,插入、刪除、修改操作復雜。因此,關系模型得到了廣泛應用,關系型數據庫管理系統成為了主流。Oracle正是支持關系數據模型的數據庫管理系統。
1.1.3 關系型數據庫語言
關系數據庫的標準語言是SQL(Structured Query Language,結構化查詢語言)。SQL語言是用于關系數據庫查詢的結構化語言,最早由Boyce和Chambedin在1974年提出,稱為SEQUEL語言。1976年,IBM公司的San Jose研究所在研制關系數據庫管理系統System R時將其修改為SEQUEL 2,即目前的SQL語言。1976年,SQL開始在商品化關系數據庫管理系統中應用。1982年,美國國家標準化組織ANSI確認SQL為數據庫系統的工業標準。SQL是一種介于關系代數和關系演算之間的語言,具有豐富的查詢功能,同時具有數據定義和數據控制功能,是集數據定義、數據查詢和數據控制于一體的關系數據語言。目前,有許多關系型數據庫管理系統支持SQL語言,如SQL Server、Access、Oracle、MySQL、DB 2等。
SQL語言的功能包括數據查詢、數據操縱、數據定義和數據控制四個部分。SQL語言簡潔、方便、實用,為完成其核心功能只用了6個動詞——SELECT、CREATE、INSERT、UPDATE、DELETE和GRANT(REVOKE)。作為關系數據庫的標準語言,它已被眾多商用數據庫管理系統產品所采用,成為應用最廣的關系數據庫語言。不過,不同的數據庫管理系統在其實踐過程中都對SQL規范做了某些編改和擴充。所以,實際上不同數據庫管理系統之間的SQL語言不能完全相互通用。例如,甲骨文公司的Oracle數據庫所使用的SQL語言是Procedural Language/SQL(簡稱PL/SQL),而微軟公司的SQL Server數據庫系統支持的是Transact-SQL(簡稱T-SQL)。
1.1.4 數據庫設計
數據庫設計是將業務對象轉換為數據表等數據庫對象的過程,是數據庫應用系統開發過程中首要的和基本的內容。
按照規范設計的方法,考慮數據庫及其應用系統開發全過程,將關系型數據庫的設計分為六個階段:需求分析、概念結構設計、邏輯結構設計、物理結構設計、數據庫實施和數據庫運行與維護。其中需求分析的任務是通過詳細調查現實世界要處理的對象,明確用戶的各種需求,然后在此基礎上確定系統的功能。數據庫實施、運行與維護的任務是在數據庫的結構設計完成后由數據庫管理員在DBMS上實現設計結果。這里具體介紹數據庫設計中的概念結構設計、邏輯結構設計和物理結構設計。
1.概念結構設計
通常,把每一類數據對象的個體稱為“實體”,而每一類對象個體的集合稱為“實體集”。例如,在管理學生所選課程的成績時,主要涉及“學生”和“課程”兩個實體集。
其他非主要的實體可以很多,例如,班級、班長、任課教師、輔導員等實體。把每個實體集涉及的信息項稱為屬性。就“學生”實體集而言,它的屬性有學號、姓名、性別、出生時間、專業、總學分和備注。“課程”實體集屬性有課程號、課程名、開課學期、學時和學分。
實體集“學生”和實體集“課程”之間存在“選課”的關系,通常把這類關系稱為“聯系”。通常將實體集及實體集之間聯系的圖稱為E-R模型。
E-R模型的表示方法為:
● 實體集用矩形框表示,矩形框內標注實體名;
● 實體集的屬性用橢圓框表示,框內標注屬性名,并用無向邊與其實體集相連;
● 實體集間的聯系用菱形框表示,聯系以適當的含義命名,名字寫在菱形框中,用無向邊將參加聯系的實體矩形框分別與菱形框相連,并在連線上標明聯系的類型,即1—1、1—n或m—n;
● 如果一個聯系有屬性,則這些屬性也要用無向邊與該聯系連接起來。
因此,E-R模型也稱為E-R圖。通常,關系數據庫的設計者使用E-R圖來對信息世界建模。從分析用戶項目涉及的數據對象及數據對象之間的聯系出發,到獲取E-R圖的這一過程稱為概念結構設計。
兩個實體集A和B之間的聯系可能是以下三種情況之一。
(1)一對一的聯系(1∶1)
A中的一個實體僅與B中的一個實體相聯系,B中的一個實體也僅與A中的一個實體相聯系。例如,“班級”與“正班長”這兩個實體集之間的聯系是一對一的聯系,因為一個班只有一個正班長,反過來,一個正班長只屬于一個班。“班級”與“正班長”兩個實體集的E-R模型如圖1.4所示。

圖1.4 “班級”與“正班長”實體集E-R模型
(2)一對多的聯系(1∶n)
A中的一個實體可以與B中的多個實體相聯系,而B中的一個實體僅與A中的一個實體相聯系。例如,“班級”與“學生”這兩個實體集之間的聯系是一對多的聯系,因為,一個班可有若干學生,反過來,一個學生只能屬于一個班。“班級”與“學生”兩個實體集的E-R模型如圖1.5所示。

圖1.5 “學生”與“班級”兩個實體集的E-R模型
(3)多對多的聯系(m∶n)
A中的一個實體可以與B中的多個實體相聯系,而B中的一個實體也可與A中的多個實體相聯系。例如,“學生”與“課程”這兩個實體集之間的聯系是多對多的聯系,因為一個學生可選修多門課程;反過來,一門課程可被多個學生選修,每個學生選修了一門課程以后都有一個成績。“學生”與“課程”兩個實體集的E-R模型如圖1.6所示。

圖1.6 “學生”與“課程”實體集間的E-R模型
2.邏輯結構設計
用E-R圖描述管理系統中實體集與實體集之間的聯系,目的是以E-R圖為工具設計關系模式,即確定應用系統所使用的數據庫應包含的表和表的結構。通常這一設計過程被稱為邏輯結構設計。
(1)(1∶1)聯系的E-R圖到關系模式的轉換
對于(1∶1)的聯系既可以單獨對應一個關系模式,也可以不單獨對應一個關系模式。
① 聯系單獨對應一個關系模式,則由聯系屬性、參與聯系的各實體集的主碼屬性構成關系模式,可選參與聯系的實體集的任何一方的主碼作為這個關系模式的主碼。
例如,圖1.4描述的“班級”(BJB)與“正班長”(BZB)實體集通過“屬于”(SYB)聯系的E-R模型可設計如下關系模式(下橫線表示該字段為主碼):
BJB(班級編號,院系,專業,人數)
BZB(學號,姓名)
SYB(學號,班級編號)
② 聯系不單獨對應一個關系模式,聯系的屬性及一方的主碼加入到另一方實體集對應的關系模式中。例如,圖1.4的E-R模型可設計如下關系模式:
BJB(班級編號,院系,專業,人數)
BZB(學號,姓名,班級編號)
或者
BJB(班級編號,院系,專業,人數,學號)
BZB(學號,姓名)
(2)(1∶n)聯系的E-R圖到關系模式的轉換
對于(1∶n)的聯系既可單獨對應一個關系模式,也可以不單獨對應一個關系模式。
① 聯系單獨對應一個關系模式,則由聯系的屬性、參與聯系的各實體集的主碼屬性構成關系模式,n端的主碼作為該關系模式的主碼。
例如,圖1.5描述的“班級”(BJB)與“學生”(XSB)實體集通過“屬于”(SYB)聯系的E-R模型可設計如下關系模式:
BJB(班級編號,院系,專業,人數)
XSB(學號,姓名,性別,出生時間,專業,總學分,備注)
SYB(學號,班級編號)
② 聯系不單獨對應一個關系模式,則將聯系的屬性及“1”端的主碼加入n端實體集對應的關系模式中,主碼仍為n端的主碼。
例如,圖1.5“班級”(BJB)與“學生”(XSB)實體集E-R模型可設計如下關系模式:
BJB(班級編號,院系,專業,人數)
XSB(學號,姓名,性別,出生時間,專業,總學分,備注,班級編號)
(3)(m∶n)聯系的E-R圖到關系模式的轉換
對于(m∶n)的聯系,單獨對應一個關系模式,該關系模式包括聯系的屬性、參與聯系的各實體集的主碼屬性,該關系模式的主碼由各實體集的主碼屬性共同組成。
例如,圖1.6描述的“學生”(XSB)與“課程”(KCB)實體集之間通過“選課”(CJB)的聯系可設計如下關系模式:
XSB(學號,姓名,性別,出生時間,專業,總學分,備注)
KCB(課程號,課程名稱,開課學期,學時,學分)
CJB(學號,課程號,成績)
關系模式CJB的主碼是由“學號”和“課程號”兩個屬性組合起來構成的一個主碼,一個關系模式只能有一個主碼。
3.物理結構設計
數據庫在物理設備上的存儲結構與存取方法稱為數據庫的物理結構,它依賴于給定的計算機系統。為一個給定的邏輯數據模型選取一個最適合應用環境的物理結構的過程,就稱為數據庫的物理結構設計。
數據庫的物理結構設計通常分為以下兩步:
(1)確定數據庫的物理結構,在關系數據庫中主要指存取方法和存儲結構;
(2)對物理結構進行評價,評價的重點是時間和空間效率。
- SPSS數據挖掘與案例分析應用實踐
- MySQL 8從入門到精通(視頻教學版)
- 微服務與事件驅動架構
- 匯編語言程序設計(第2版)
- 數據結構(Python語言描述)(第2版)
- 云計算通俗講義(第3版)
- MySQL數據庫管理與開發實踐教程 (清華電腦學堂)
- Hands-On Microservices with Kotlin
- Instant Ext.NET Application Development
- BIM概論及Revit精講
- 一塊面包板玩轉Arduino編程
- Mastering C++ Multithreading
- Couchbase Essentials
- R語言:邁向大數據之路(加強版)
- Clojure for Java Developers