好吧,我也未能免俗,因為在公司的年終目標上寫了要學習Oracle,今天開始Oracle,給大家溫過知新一下吧!不會砸我把!~嘎嘎。
其實,說真的,我很不想寫理論這方面的,可是為了一個系列的完整性,我還是硬着頭皮寫吧。我會盡量用通俗化的口語來說那些比較生硬的專業術語,當然這里也有一些不嚴謹的地方,還請各位看官海涵。
好吧,剛開始其實和Oracle關系不大,都是數據庫的基礎知識,到第四部分才開始!~~~
---------------------本期目錄導航------------------
1.關系數據庫模型
1.1 關系數據庫中的一些術語
好吧,其實我第一次學習數據庫的時候,我特別的煩這些術語,本來很簡單的很容易懂的詞語,被他們整的。。。
二維表:就是一張表,比如我們打開excel,這里可以粗略的看成一個表的結構吧。所以說,關系的邏輯結構就是一個二維表。
關系(Relation):對應我們平時看見的一張表。
元組(Tuple):一個二維表里的一行
屬性(Attribute):表中的一列
域(domain):屬性的取值范圍,比如一個屬性年齡,那么這個年齡的取值范圍在0到130,這就是一個域。
關鍵字或碼(key):也就是我們常說的主鍵,它能唯一的確定一個元組,也就是能唯一的確定一行。比如 學生號,那么它能確定學生姓名等等。
關系模式(Relation Schema):對關系的描述,比如關系名(屬性1,屬性2,屬性3...)
1.2關系操作
關系數據模型中常用的關系操作:查詢(Query)、插入(Insert)、刪除(delete)和更新(update)
關系操作中最重要的關系查詢操作:選擇(select)、投影(project)、連接(join)、除(divide)、並(union)、差(except)、交(intersection)以及笛卡爾積等等。
1.3關系的完整性
實體完整性:就是數據庫表格中的主鍵不能取空值;當屬性由屬性組(不止一個屬性)組成時,屬性組中的屬性均不能為空值。
參照完整性:關系模型中實體及實體間的聯系都是用關系來描述的。參照完整性則是相關聯的兩個表之間的約束,具體的說,就是從表中每條記錄外鍵的值必須是主表中存在的,因此,如果在兩個表之間建立了關聯關系,則對一個關系進行的操作要影響到另一個表中的記錄。
外鍵:如果有屬性關鍵字在一個表中是主關鍵字,那么這個屬性關鍵字被稱為另一個表的外鍵。外鍵表示了兩個關系之間的聯系。
如果一個屬性是參照性完整性,那么它的值只能是:
1.空值,表示沒有給它賦值
2.不是空值,那么必定在一個主表中的值范圍中
(解釋這個真累呀,呵呵~)
自定義完整性:實體完整性和參照系完整是每一個關系數據庫都必須要支持的完整性。那自定義就不必了,從字面上也可以看出,就是自己定義的意思。打個比方說,你有一個性別這個屬性,那么你可以只定義只能允許為“女”。這個號理解。
2.數據庫中的函數依賴
所謂函數依賴是指關系中一個或一組屬性的值可以決定其它屬性的值。函數依賴正象一個函數 y = f(x) 一樣,x的值給定后,y的值也就唯一地確定了。
2.1函數依賴的種類
2.1.1完全函數依賴和部分函數依賴
完全函數依賴:在一個關系中,若某個非主屬性數據項依賴於全部關鍵字稱之為完全函數依賴。
比如:有一個表,有如下屬性:學生ID,學生姓名,所修課程ID,課程名稱,成績
完全依賴:(學生ID,所修課程ID)→成績
成績既不能單獨依賴於學生ID,也不能單獨依賴於所修課程ID,因此成績完全函數依賴於關鍵字。
(學生ID,所修課程ID)→學生姓名
部分依賴:學生ID→學生姓名
學生姓名可以依賴於關鍵字的一個主屬性——學生ID,因此學生姓名部分函數依賴於(學生ID,所修課程ID)。
2.1.2 平凡函數依賴和非平凡函數依賴
平凡函數依賴:當關系中屬性集合Y是屬性集合X的子集時,存在函數依賴X→Y,即一組屬性函數決定它的所有子集,這種函數依賴稱為平凡函數依賴。
例如:在在關系學生課程表SC(學生號Sno,課程號 Cno,成績 Grade)中,
(Sno, Cno) → Sno ,(Sno, Cno) → Cno
非平凡函數依賴:當關系中屬性集合Y不是屬性集合X的子集時,存在函數依賴X→Y,則稱這種函數依賴為非平凡函數依賴。
例如:(Sno, Cno) → Grade
2.1.3 傳遞函數依賴
傳遞函數依賴:設X,Y,Z是關系R中互不相同的屬性集合,存在X→Y(Y !→X),Y→Z,則稱Z傳遞函數依賴於X。
例:關系S1(學號,系名,系主任)
學號 → 系名,系名 → 系主任,並且 系名 -\→ 學號,所以 學號 → 系主任 為傳遞函數依賴
3.數據庫的范式
好處:
① 減少數據冗余
②改進數據庫整體組織
③增強數據的一致性
④增加數據庫設計的靈活性
3.1 第一范式(1NF)
如果關系模式 R ,它的每個屬性分量都是一個不可分割的數據項,則稱 R 符合第一規范,記 R∈1NF
例子:
例子來源(以下同):數據庫范式——通俗易懂
3.2第二范式(2NF)
若 R∈1NF 且每個非主屬性完全依賴於碼(也就是主鍵),則稱 R∈2NF
例子:
那怎么辦呢?
3.3 第三范式(3NF)
第三范式(3NF):符合2NF,並且,消除傳遞依賴
例子:
OK ,一般來說,了解范式,能做到第三范式就很好了。如果還需要進一步了解的話,可以看下面的博客:
四。Oracle應用系統結構
4.1 單磁盤獨立主機結構
這種是最簡單、也是最常用的結構。該結構就只有一台計算機,並且使用一個硬盤。我們現在用的基本都是這個哦!~
它只有一個數據庫服務(DBMS)、一個數據庫結構(數據庫文件),並且這些數據文件都存儲在一個物理磁盤上。
4.2 多磁盤獨立主機結構
它也只有一台計算機,但是該計算機應用了多個硬盤。
這樣子可以減少數據庫的鏈接數量,減少數據文件的磁盤I/O。
如果在這個磁盤上采用磁盤鏡像技術(RAID,獨立磁盤冗余陣列技術),則所有數據庫文件在每個硬盤上都有完整的備份,任何一個此胖發生故障后,都能由鏡像磁盤代替其工作,並可對其進行維修、恢復,提高了硬件的可靠性。
而且,處理一個事物可能需要多個文件的信息是很普遍的事情,所以在這個多磁盤結構中,還可以將數據庫文件分別存放在不同的硬盤中,以便減少數據庫文件之間的競爭數量,從而提高數據庫的性能。
4.3 Oracle 客戶/服務器系統結構(C/S)
在C/S結構模式中,所有的數據集中存儲在服務器中,數據處理由服務器完成,通常來說采用硬件資源配置比較高的機器作為服務器,使用配置比較低的作為客戶機。
服務器與客戶端之間通過專用的網絡連接,一般為局域網或企業內部網。
Oracle使用SQL*Net 在客戶端與服務器之間進行通信。
4.4 Oracle 瀏覽器/服務器系統結構(B/S)
如下為B/S 3層系統結構,在B/S的3層模型中,客戶端應用程序通常采用Web瀏覽器展示,所以客戶端也稱為瘦客戶。
在客戶機上沒有加載的程序代碼,所有的程序都存儲在web服務器上嗎。如果客戶端要訪問數據,則訪問請求通過網絡被發送到Web服務器,然后由Web服務器將請求傳遞到數據庫服務器,經過數據庫服務器處理的數據以HTML的格式在客戶端Web瀏覽器顯示。
4.5 Oracle 分布式數據庫系統結構
數據庫系統可按數據分布方式分為集中式數據庫系統和分布式數據庫系統。
集中式數據庫系統是將數據集中在一台計算機上面,而分布式數據庫系統是存放在有計算機網絡連接的不同計算機上面。如圖:
由上可知,分布式數據庫系統有以下幾部分組成:
局部數據庫管理系統:創建和管理局部數據庫,執行局部和全局應用的子查詢。
全局數據庫管理系統:協調各個局部數據庫管理系統,共同完成事物的執行,並保證全局數據庫執行的正確性和全局數據庫的完整性。
通信管理:實現分布在網絡中的各個數據庫之間的通信。
全局數字字典:存放全局概念模式。
局部數據庫:查詢全局數據庫信息。
Oracle在網絡環境中使用SQL*Net、Net8或Net8i 等進行客戶端與服務器、服務器與服務器之間的通信。在分布式數據庫中,各個服務器之間可以實現數據的實時、定時復制。通過Oracle的遠程數據復制選件、觸發器、快照等在多個不同地低於實現數據的遠程復制。
五。安裝Oracle 11g
這個很easy,這里不說明~~~網上很多教程。
不懂的點擊這里:Oracle 11g 安裝圖解
安裝完了之后,打開服務(在開始運行,打入 services.msc),看看下面三個進程是否在:
OracleDBConsoleorcl:是本地OEM控制。
Oracle<>TNSListener:堅挺程序服務。這個服務因為每台計算機的名字不同而不同。
OracleServiceORCL:Oracle 數據庫實例服務,是Oracle數據庫的主要服務。