數庫基礎概念
數據庫系統(tǒng)
數據是數據庫中存儲的基本對象,是描述事物的符號記錄。
數據的種類:文本、圖形、圖像、音頻、視頻
數據庫DB:是長期存儲在計算機內,有組織的、可以共享的大量數據的集合。
數據庫的基本特性:
數據按一定的數據模型組織、描述和存儲;
可為各種用戶共享;
冗余度較?。?br>
數據獨立型較高;
易擴展。
數據庫系統(tǒng)DBS:是一個采用了數據庫技術,有組織、動態(tài)地存儲大量相關數據,方便多用戶訪問的計算機系統(tǒng)。其由下面四個部分組成:
數據庫(統(tǒng)一管理、長期存儲在計算機內的,有組織的相關數據的集合)
硬件(構成計算機系統(tǒng)包括存儲數據所需的外部設備)
軟件(操作系統(tǒng)、數據庫管理系統(tǒng)及應用程序)
人員(系統(tǒng)分析和數據庫設計人員、應用程序員、最終用戶、數據庫管理員DBA)
數據管理系統(tǒng)DBMS的功能
實現(xiàn)對共享數據有效的組織、管理和存取。
包括數據定義、數據庫操作、數據庫運行管理、數據的存儲管理、數據庫的建立和維護等。
三級模式-兩級映像

內模式:管理如何存儲物理的數據,對應具體物理存儲文件。
模式:又稱為概念模式,就是我們通常使用的基本表,根據應用需要將物理數據劃分成一張張表。
外模式:對應數據庫中的視圖這個級別,將表進行一定處理后在提供給用戶使用。
外模式-模式映像:是表和視圖之間的映射,存在于概念級和外部級之間,若表中數據發(fā)生了修改,只需要修改此映射而無需修改應用程序。
模式-內模式映像:是表和數據的物理存儲之間的映射,存在于概念級和內部級之間,若修改了數據存儲方式,只需要修改此映射而無需修改應用程序。
數據庫設計
需求分析:即分析數據存儲的要求,產出數據流圖、數據字典、需求說明書
概念結構設計:就是設計E-R圖,也即實體-屬性圖,與物理實現(xiàn)無關,說明有哪些實體,實體有哪些屬性。
邏輯結構設計:將E-R圖轉換成關系模式,即轉換成實際的表和表中的列屬性,這里要考慮很多規(guī)范化的東西。
物理設計:根據生成的表等概念,生成物理數據庫。
數據模型
關系模式是二維表的形式表示的實體-聯(lián)系模型,是將實體-聯(lián)系模型轉換而來的,經過開發(fā)人員設計的;
概念模型是從用戶的角度進行建模的,是現(xiàn)實世界到信息世界的第一抽象,是真正的實體-聯(lián)系模型
網狀模型表示實體類型及其實體之間的聯(lián)系,一個事物和另外幾個都有聯(lián)系,形成一張網。
面向對象模型是采用面向對象的方法設計數據庫,以對象為單位,每個對象包括屬性和方法,具有類和繼承等特點。
數據模型三要素:數據結構(所研究的對象類型的集合)、數據操作(對數據庫中各種對象的實例允許執(zhí)行的操作的結合)、數據的約束條件(一組完整性規(guī)則的集合)。
用E-R圖來描述概念數據模型,世界是由一組稱為實體的基本對象和這些對象之間的聯(lián)系構成的。
在E-R模型中,使用橢圓表示屬性(一般沒有)、長方形表示實體、菱形表示聯(lián)系,聯(lián)系的兩端要填寫聯(lián)系類型。
實體:客觀存在并可以相互區(qū)別的事務。可以是具體的人、事、物活抽象概念。如:人、汽車、圖書、賬戶、貸款。
弱實體和強實體:弱實體依賴于強實體的存在而存在。
實體集:具有相同類型和共享相同屬性的實體的集合,如學生、課程。
屬性:實體所具有的特性。
屬性分類:簡單屬性和復核屬性;單值屬性和多值屬性;NULL屬性;派生屬性。
域:屬性的取值范圍稱為該屬性的域。
碼(key):唯一標識實體的屬性集。
聯(lián)系:現(xiàn)實世界中事務內部以及事物之間的聯(lián)系,在E-R圖中反映為實體內部的聯(lián)系和實體之間的聯(lián)系。
聯(lián)系類型:一對一1:1、一對多1:N、多對多M:N。
關系模型中數據的邏輯結構是一張二維表,由行列組成。用表格結構表達實體集,用外鍵標識實體間的聯(lián)系。優(yōu)點:建立在嚴格的數學概念基礎上;概念單一、結構簡單、清晰,用戶易懂易用;存取路徑對用戶透明,從而數據獨立性、安全性好,簡化數據庫開發(fā)工作。缺點:由于存取路徑透明,查詢效率往往不如非關系數據模型。
E-R模型轉為關系模型:每個實體都對應一個關系模型;聯(lián)系分為三種:
1:1聯(lián)系中聯(lián)系可以放到任意的兩端實體中,作為一個屬性要保證1:1的兩端關聯(lián),也可以轉換為一個單獨的關系模式;
1:N聯(lián)系中聯(lián)系可以單獨作為一個關系模式,也可以在N端中加入1端實體的主鍵;
M:N聯(lián)系中聯(lián)系必須作為一個單獨的關系模式,其主鍵是M和N端的聯(lián)合主鍵。
E-R模型
關系模型
關系代數
并:結果是兩張表中所有記錄合并,相同記錄只顯示一次。
交:結果是兩張表中相同的記錄。
差:S1-S2結果是S1表中有而S2表中沒有的那些記錄。
笛卡爾積:S1S2,產生的結果包含S1和S2的所有屬性列,并且S1中每條記錄依次和S2中所有記錄組成一條記錄,最終屬性列為S1+S2屬性列,記錄數為S1S2記錄數。
投影:實際是按照條件選擇某關系模式中的某列,列也可以用數字表示。
選擇:實際是按照條件選擇某關系模式中的某條記錄。
自然連接:結果顯示全部的屬性列,但是相同屬性列只顯示一次,顯示兩個關系模式中屬性相同且值相同的記錄。
函數依賴
給定一個X,能唯一確定一個Y就稱為X確定了Y或者說Y依賴于X。例如Y=X*X函數。
函數依賴又可擴展以下兩種規(guī)則:
部分函數依賴:A可確定C,A、B也可以確定C,A、B中的一部分即A可以確定C,稱為部分依賴。
傳遞函數依賴:當A、B不等價時,A可以確定B,B可以確定C,則A可確定C是傳遞函數依賴,若A和B等價,則不存在傳遞直接就可確定C。
鍵與約束
超鍵:能唯一標識此表的屬性的組合。
候選鍵:超鍵中去掉冗余的屬性,剩余的屬性就是候選鍵。
主鍵:任選一個候選鍵即可作為主鍵。
外鍵:其他表中的主鍵。
主屬性:候選鍵內的屬性為主屬性,其他屬性為非主屬性。
實體完整性約束:即主鍵約束,主鍵值不能為空也不能重復。
參照完整性約束:即外鍵約束,外鍵必須是其他表中已經存在的主鍵的值,或者為空。
用戶自定義完整性約束:自定義表達式約束,如設定年齡屬性的值必須為0到150之間。
范式
第一范式:關系中的每一個分量必須是一個不分的數據項。通俗地說第一范式就是表中不允許有小表的存在。比如對于如下的員工表就屬于第一范式。
實例:用一個單一的關系模式學生來描述學校的教務系統(tǒng):學生()
第二范式:如果關系R屬于1NF且每一個非主屬性完全函數依賴于任何一個候選碼,則R屬于2NF。通俗地說2NF就是在1NF的基礎上表中的每一個非主屬性不會依賴復合主鍵中的某一個列。
第三范式:在滿足1NF的基礎上,表中不存在非主屬性對碼的依賴傳遞。
BC范式BCNF是指在第三范式的基礎上進一步消除主屬性對于碼的部分函數依賴和傳遞依賴,通俗的來說就是在每一種情況下,每一個依賴的左邊決定因素必然包含候選鍵。
模式分解
范式之間的轉換一般都是通過拆分屬性即模式分解,將具有部分函數依賴和傳遞依賴的屬性分離出來,來達到進一步步優(yōu)化,一般分為以下兩種:
保持函數依賴分解:對于關系模型R,有依賴F,若對R進行分解,分解出來的多個關系模式,保持原來的依賴集不變,則為保持函數依賴的分解。另外注意要消除掉冗余依賴。
并發(fā)控制
事務:由一系列組成,這些操作要么全做,要不么全不做,擁有如下四種特性:
原子性(操作):要么全做要么全不做。
一致性(數據):事務發(fā)生后數據是一致的,例如銀行轉賬,不會存在A賬戶轉出,但是B賬戶沒有收到的情況。
隔離性(執(zhí)行):任一事務的更新操作直到其成功提交的整個過程對其他事務都是不可見的,不同事務之間是隔離的,互不干涉。
持續(xù)性(改變):事務操作的結果是持續(xù)性的。
事務是并發(fā)控制的前提條件,并發(fā)控制就是控制不同的事務并發(fā)執(zhí)行,提高系統(tǒng)效率,但是并發(fā)控制中存在下面三個問題:
1、丟失更新:事務1對數據A進行了修改并寫回,事務2也對A進行修改并寫回,此時事務2寫回的數據就會覆蓋事務1寫回的數據,就丟失了事務1對A的更新。即數據A的更新會被覆蓋。
2、不可重復讀:事務2讀A,而后事務1對輸數據A進行了修改并寫回,此時若事務2在讀數據A,發(fā)現(xiàn)數據不對。即一個事務重復讀A兩次,會發(fā)現(xiàn)數據A有誤。
3、讀臟數據:事務1對數據A進行了修改后,事務2讀數據A,而后事務1回滾,數據A恢復了原來的值,那么事務2對數據A做的事是無效的,讀到了臟數據。
封鎖協(xié)議
X鎖是排它鎖(寫鎖)。若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其他事務都不能在對A加任何類型的鎖,直到T釋放A上的鎖。
S鎖是共享鎖(讀鎖)。若事務T對數據對象A加上S鎖,則只允許T讀取A,但不能修改A,其他事務只能對A加S鎖(也技能讀不能修改),直到T釋放A上的S鎖。
共分為三級封鎖協(xié)議如下:
一級封鎖協(xié)議:事務在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。可解決丟失更新問題。
二級封鎖協(xié)議:一級封鎖協(xié)議的基礎上加上事務T在讀數據R之前必須先對其加S鎖,讀完后即可釋放S鎖??山鉀Q丟失更新,讀臟數據問題。
三級封鎖協(xié)議:一級封鎖協(xié)議加上事務T在讀取數據R之前先對其加S鎖,直到事務結束后釋放??山鉀Q丟失更新、讀臟數據、數據重復讀問題。
數據庫新技術
數據庫安全
| 措施 | 說明 |
|---|---|
| 用戶標識和鑒定 | 最外層的安全保護措施,可以使用用戶賬戶、口令和隨機數檢驗等方式 |
| 存取控制 | 對用戶進行授權,包括操作類型(如查找、插入、刪除、修改等動作)和數據對象(主要是數據范圍)的權限 |
| 密碼存儲和傳輸 | 對遠程終端信息用密碼傳輸 |
| 視圖的保護 | 對視圖進行授權 |
| 審計 | 使用一個專用文件或數據庫,自動將用戶對數據庫的所有操作記錄下來 |
| 故障關系 | 故障原因 | 解決方法 |
|---|---|---|
| 事務本身的可預期故障 | 本身邏輯 | 在程序中預先設置rollback語句 |
| 事務本身的不可預期故障 | 算術溢出、違反存儲保護 | 由DBMS的恢復子系統(tǒng)通過日志,撤銷事務對數據庫的修改,回退到事務初始狀態(tài) |
| 系統(tǒng)故障 | 系統(tǒng)停止運轉 | 通常使用檢查點法 |
| 介質故障 | 外存被破壞 | 一般使用日志重做業(yè)務 |
靜態(tài)轉儲:即冷備份,指在轉儲期間不允許對數據庫進行任何存取、修改操作;優(yōu)點是非??焖俚膫浞莘椒?、容易歸檔(直接物理復制操作);
缺點是只能提供到某一時間點上的恢復,不能做其他工作,不能按表或用戶恢復。
動態(tài)轉儲:即熱備份,在轉儲期間允許對數據庫進行存取、修改操作,因此轉儲和用戶事務可并發(fā)執(zhí)行;缺點是不能出錯,否則后果嚴重,若熱備份不成功,所得結果幾全部無效。
完全備份:備份所有數據。
差量備份:僅備份上一次完全備份之后變化的數據。
增量備份:備份上一次備份之后變化的數據。
日志文件:在事務處理過程中,DBMS把事務開始、事務結束以及對數據庫的插入、刪除和修改的每一次操作寫入日志文件。一旦發(fā)生故障,DBMS的恢復子系統(tǒng)利用日志文件撤銷事務對數據庫的改變,回退到事務的初始狀態(tài)。
分布式數據庫
局部數據庫位于不同的物理位置,使用一個全局DBMS將所有局部數據庫聯(lián)網管理,這就是分布式數據庫。
分片模式
水平分片:將表中水平的記錄分別存放在不同的地方。
垂直分片:將表中垂直的列值分別存放在不同的地方。
分部透明性
分片透明性:用戶或應用程序不需要知道邏輯上訪問的表具體是如何分塊存儲的。
位置透明性:應用程序不關心數據存儲物理位置的改變。
邏輯透明性:用戶或應用程序無需知道局部使用的是哪種數據模型。
復制透明性:用戶或應用程序不關心復制的數據從何而來。
數據倉庫
數據倉庫是一個面向主題的、集成的、非易失的,且隨時間變化的數據集合,用于支持管理決策。
面向主題:按照一定的主題域進行組織的。
集成的:數據倉庫中的數據是在對原有分散的數據庫數據抽取、清理的基礎上經過系統(tǒng)加工、匯總和整理得到的,必須消除源數據中的不一致性,以保證數據倉庫內的信息是關于整個企業(yè)的一致的全局信息。
相對穩(wěn)定的:數據倉庫的數據主要供企業(yè)決策分析之用,所涉及的數據操作主要是數據查詢,一旦某個數據進入數據倉庫以后,一般情況下將被長期保留,也就是數據倉庫中一般有大量的查詢操作,但修改和刪除操作很少,通常只需要定期的加載、劇新。
原映歷史變化:數據倉庫中的數據通常包含歷史信息,系統(tǒng)記錄了企業(yè)從過去某一時點(如開始應用數據倉庫的時點)到目前的各個階段的信息,通過這些信息,可以對企業(yè)的發(fā)展歷程和未來趨勢做出定量分析和預測。
數據倉庫的結構通常包含四個層次:
1、數據源:是數據倉庫系統(tǒng)的基礎,是整個系統(tǒng)的數據源泉。
2、數據的存儲和管理:是整個數據倉庫系統(tǒng)的核心。
3、OLAP(聯(lián)機分析處理)服務器:對分析需要的數據進行有效集成,按多維模型組織,以便進行多角度、多層次的分析、并發(fā)趨勢。
4、前端工具:主要包括各種報表工具、查詢工具、數據分析工具、數據挖掘工具以及各種基于數據倉庫或數據集市的應用開發(fā)工具。
B1系統(tǒng)主要包括數據預處理、建立數據倉庫、數據分析和數據展現(xiàn)四個主要階段。
1、數據預處理是整合企業(yè)原始數據的第一步,它包括數據的抽取(Extraction)、轉換(Transformation)和加載(Load)三個過程(ETL過程);
2、建立數據倉庫則是處理海量數據的基礎;
3、數據分析是體現(xiàn)系統(tǒng)智能的關鍵,一般采用聯(lián)機分析處理(OLAP)和數據挖掘兩大技術,聯(lián)機分析處理不僅進行數據匯總/聚集,同時還提供切片、切塊、下鉆、上卷和旋轉等數據分析功能,用戶可以方便地對海量數據進行多維分析。數據挖掘的目標則是挖掘數據背后隱藏的知識,通過關聯(lián)分析、聚類和分類等方法建立分析模型,預測企業(yè)未來發(fā)展趨勢和將要面臨的問題;
4、在海量數據和分析手段增多的情況下,數據展現(xiàn)則主要保障系統(tǒng)分析結果的可視化。
反規(guī)范化技術
◆反規(guī)范化技術:規(guī)范化設計后,數據庫設計者希望犧牲部分規(guī)范化來提高性能。
◆采用反規(guī)范化技術的益處:降低連接操作的需求,降低外碼和索引的數目,還可能減少表的數目,能夠提高查詢效率。
可能帶來的問題:數據的重復存儲,浪費了磁盤空間;可能出現(xiàn)數據的完整性問題,為了保障數據 的一致性,增加了數據維護的復雜性,會降低修改速度。
◆具體方法:
(1)增加冗余列:在多個表中保留相同的列,通過增加數據冗余減少或避免查詢時的連接操作。
(2)增加派生列:在表中增加可以由本表或其它表中數據計算生成的列,減少查詢時的連接操作并避免計算或使用集合函數。
(3)重新組表:如果許多用戶需要查看兩個表連接出來的結果數據,則把這兩個表重新組成一個表來減少連接而提高性能。
(4)水平分割表:根據一列或多列數據的值,把數據放到多個獨立的表中,主要用于表數據規(guī)模很大、表中數據相對獨立或數據需要存放到多個介質上時使用。
(5)垂直分割表:對表進行分割,將主鍵與部分列放到一個表中,主鍵與其它列放到另一個表中,在查詢時減少1/0次數。
大數據
特點:大量化、多樣化、價值密度低、快速化