1、關系型資料庫
使用資料庫的主要目的是存儲和處理資料。
1.1 資料庫管理系統
資料庫管理系統(DBMS):控制資料庫中資料的存儲、組織和檢索。
資料庫應用(database application):通過DBMS通路和操作資料庫中的資料。
資料庫管理系統的早期類型:
Hierarchical database -- 資料組織在樹狀結構中,類似于檔案系統,記錄之間是一對多的關系;
network database -- 與前種類型相似,不同的是:記錄之間是多對多的關系。
這兩種資料庫中的資料都是預先定義好的,并且缺乏資料定義和查詢語言。
1.2 關系模型(Relational Model)
E.F.Codd在他1970年發表的論文《大型共享資料庫資料的關系模型》中, 定義了一個基于數學集合理論的關系模型。 目前,最廣泛接受的資料庫模型就是關系模型。關系型資料庫就是基于這種模型的。
關系模型三要素:關系資料結構、關系操作和關系完整性限制。
關系是一個元組的集合。 一個元組 是一些屬性值的無序的集合。
表是一個關系的二維表示, 關系由行 (元組) 和列 (屬性) 的形式構成。表中的每一行具有相同的列集。 關系資料庫是一個将資料存儲在關系 (表)中的資料庫。
1.3 關系資料庫管理系統(RDBMS)
RDBMS是基于關系模型的,實作了關系模型的三要素,并且區分下面兩種操作:
邏輯操作 -- 資料庫應用或使用者通過SQL語句對資料庫進行操作;
實體操作 -- 接到SQL指令之後,由RDBMS決定如何實作。
也就是說資料庫應用或使用者隻需要在邏輯層面上進行操作資料,不用關心資料到底是如何存儲的。
Oracle資料庫是關系資料庫管理系統,并且進行了擴充,實作了面向對象的特性。
1.4 Oracle資料庫曆史
2、模式對象
RDBMS的特點之一,是實體資料存儲與邏輯資料結構的獨立性。 在 Oracle 資料庫中,資料庫模式(database schema)是邏輯資料結構或模式對象(schema object)的集合。 資料庫模式由一個資料庫使用者擁有,并與使用者名具有相同的名稱。
其中,最重要的模式對象是表(table)和索引(index)。
2.1 表
表描述的是現實世界的實體,比如:員工。表的定義包含:表名,列名和資料類型等。
比如:員工表是員工資訊的集合。每一列辨別員工的一個屬性(例如,員工姓名),每一行代表一個員工。
另外,可以為表中的列設定規則(完整性限制)。比如,NOT NULL限制用來強制某列中必須有值。
2.2 索引
索引是在一列或多列上建立的可選資料結構。某些情況下,使用索引可以提高資料檢索的性能。
3、資料通路
3.1 Structured Query Language (SQL)
SQL 是一種基于集合的聲明性語言,提供一個到關系資料庫(如 Oracle 資料庫)的接口。
3.2 PL/SQL and Java
PL/SQL 是 Oracle SQL的過程化擴充。
4、事務管理
4.1 事務(Transactions)
事務是一個邏輯、 原子的工作單元,它包含一條或多條SQL 語句。一個事務中的所有SQL語句要麼全部成功,要麼全部失敗,不能存在其它情況。
最簡單的例子,就是轉賬的例子。比如A給B轉賬100元,至少包含兩個操作:
1)從A的賬戶中減去100元;
2)從B的賬戶中增加100元。
這兩個操作是一個整體,必須同時成功。
4.2 資料并發(Concurrency)
資料并發:多個使用者同時通路相同的資料。
對于多使用者RDBMS,控制資料并發是非常重要的。
管理并發的其中一種方法,就是讓使用者等待。但過多的等待會影響資料庫的性能。
Oracle 資料庫使用鎖來控制對資料的并發通路。
4.3 資料一緻性(Consistency)
在Oracle資料庫中,每個使用者必須看到資料的一緻視圖,包括使用者自己的事務以及其他使用者已送出的事務所做出的更改。
Oracle 資料庫始終強制執行語句級讀取的一緻性,保證單個查詢所傳回的資料是已送出的,并與某個時間點一緻。
資料庫也可以為整個事務中的所有查詢提供讀一緻性,這叫事務級讀一緻性。在這種情況下,事務中的每一個語句看見的都是同一個時間點的資料,這個時間點也就是事務開始之時。
5、Oracle資料庫架構
5.1 資料庫和執行個體
Oracle資料庫服務(database server)包含一個資料庫(database)和至少一個資料庫執行個體(instance):
資料庫 -- 一些存放在磁盤上的檔案,用于存儲資料。
資料庫執行個體 -- 管理資料庫檔案的記憶體結構,包含共享記憶體區SGA和一組背景程序。執行個體可以獨立于資料庫檔案而存在。

5.2 資料庫存儲結構
1)實體存儲結構包含:
資料檔案 -- 存放資料庫的資料
控制檔案 -- 存放資料庫的實體結構,包含資料庫庫名稱和資料檔案的名稱和位置
線上重做日志檔案 -- 記錄資料庫資料的變化
2)邏輯存儲結構包含:
資料塊(Data block) -- 最小的存儲機關和I/O機關。
擴充區(Extent) -- 最小的配置設定機關,包含一組邏輯上連續的資料塊。
段(Segment) -- 為使用者對象 (表或索引)、復原資料、或臨時資料等配置設定的一組擴充區。
表空間(Tablespace) -- 資料庫由表空間組成,每個表空間至少包含一個資料檔案。
5.3 資料庫執行個體結構
1)Oracle資料庫程序包含:
用戶端程序
背景程序
伺服器程序 -- 處理用戶端程序發送的請求
2)執行個體記憶體結構包含:
System Global Area (SGA) -- 共享記憶體結構
Program Global Areas (PGA) -- 伺服器程序和背景程序程序私有的記憶體結構
疑問:用戶端程序和伺服器程序也是執行個體的一部分???
5.4 應用和網絡架構
1)應用架構
應用架構是指一個資料庫應用程式連接配接到 Oracle 資料庫的計算環境。最常見的兩種資料庫體系結構是用戶端/伺服器體系結構和多層體系結構。
Oracle 資料庫可以在傳統的多層環境或 SOA 環境中扮演一個 Web 服務提供者的角色。
2)網絡架構
Oracle 網絡服務(Net Service)是資料庫與網絡通信協定之間的接口, 它對分布式處理和分布式資料庫很有用。
Oracle網絡服務的元件:
Oracle Net -- 在資料庫應用和資料庫服務之間建立并維護網絡會話。
Oracle Net Listener -- 監聽并管理資料庫應用(用戶端)發來的連接配接請求。
Oracle提供了兩種處理用戶端請求的架構:
專用伺服器架構
共享伺服器架構