數據庫重要概念簡述

數據庫系統的三級模式

模式:概念模式或邏輯模式,一個數據庫只有一個概念模式。

外模式,:子模式, 一個數據庫可以有多個外模式。

內模式,: 存儲模式, 一個數據庫只有一個內模式。

數據庫的二級映像功能:

外模式/模式映像,對應於同一個模式可以有任意多個外模式。

模式/內模式映像, 數據庫中只有一個模式,也只有一個內模式,所以模式/內模式映像是唯一的。


範式

關係數據庫有六種範式: 1NF > 2NF > 3NF > BCNF > 4NF > 5NF

滿足最低要求的範式是1NF。一般說來,數據庫只需滿足3NF就行了。越高的範式數據庫的冗餘度就越低。

1NF 第一範式:無重複的列

2NF 第二範式:符合1NF,並且有主鍵,非主鍵字段依賴主鍵

3NF 第三範式:符合2NF,並且非主鍵屬性不能相互依賴

BCNF 符合3NF, 並且主屬性不依賴於主屬性

4NF 第四範式:符合3NF,並且要求把同一表中的多對多的關係刪除

5NF 第五範式:符合4NF,並且將表分割成儘可能小的塊,爲了排除在表中所有的冗餘

 
聚集索引和非聚集索引

索引系統多采用平衡樹B-Tree。

聚集索引中的鍵值的邏輯順序決定了表中的相應行的物理順序。

非聚集索引中索引的邏輯順序與磁盤上行的物理存儲順序不同。

羣集索引通常比非羣集索引快

僅在將得到高級別選擇行的列上放置非聚集索引。

所有的數據操作語言(DML insert, update, delete, select)語句可以通過索引獲益,但是插入刪除和更新會因爲索引而變慢。索引有助於查詢的查找過程,但是任何修改數據的行爲將有額外的工作要做。(除了實際數據外,還要維護索引)

索引會佔用空間。

僅當索引中的第一類和查詢相關時才使用索引。

索引的負面影響和它的正面影響一樣多—瞭解爲什麼建立索引,以及爲什麼只建立需要的索引。

索引可爲非結構化的XML數據提供結構化的數據性能,但是要記住,和其他索引一樣,這會涉及系統開銷。

第一,對於那些在查詢中很少使用或者參考的列不應該創建索引

第二,對於那些只有很少數據值的列也不應該增加索引。

第三,對於那些定義爲text, image和bit數據類型的列不應該增加索引。

第四,當修改性能遠遠大於檢索性能時,不應該創建索引。

 

事務

使用事務,可以確保需要發生的事情作爲一個單元發生,或者什麼也不做。

ACID: 原子性,一致性,隔離性和持久性。

事務三種模型: 隱式事務(每一條數據操作語句)、顯式事務、自動事務。

併發操作可以帶來數據的不一致性:丟失更新,讀髒數據,不可重複讀,產生幽靈數據。

 
Join

數據庫常見的join方式有三種:inner join、left outter join、right outter join(還有一種full join,因不常用)

inner join:將兩表中符合on條件的所有記錄都找出來。

Left outter join: 將左表的所有記錄列出,右表中只要符合on條件的,與左表記錄相拼合,不符合條件的,填以null值。

right outter join: 將右表的所有記錄列出,左表中只要符合on條件的,與右表記錄相拼合,不符合條件的,填以null值。

 

避免不一致性的方法和技術就是併發控制。最常用的併發控制技術是封鎖技術。

基本的封鎖類型有兩種 : 排它鎖(Exclusive Locks,簡稱X鎖,寫鎖) 和共享鎖(Share Locks,簡稱S鎖,讀鎖)。

X鎖:用於不更改或不更新數據的操作(只讀操作),如SELECT 語句。

S鎖:用於數據修改操作,例如 INSERT、UPDATE 或 DELETE。確保不會同時同一資源進行多重更新。

sqlserver中還有更新鎖,意向鎖(意向共享鎖,意向排他鎖,共享意向排他鎖),模式鎖(模式修改鎖,模式穩定性鎖定),批量更新鎖。

 

避免死鎖的方法:

按相同的順序使用對象;使食物儘可能簡短並且在一個批處理中;儘可能使用簡短並且在一個批處理中;進可能使用最低的事務隔離級別;在同一事務中不允許無限度的終端(用戶交互,批處理分離);在控制環境中,使用綁定連接;

 
故障恢復方法

基本原理:建立數據冗餘, 數據轉儲和日誌文件

防止介質故障,可以數據庫鏡像

數據庫高可用性可以採用雙機熱備(分主從active/standby, 互備active/active)和多點集羣技術。

 

存儲過程

存儲在數據庫中的完成特定功能的SQL語句集,可以通過名字帶參數調用執行。

 
觸發器

特殊的存儲過程,通過事件(增刪改)進行觸發而被執行的。其在表中數據發生變化是自動強制執行。

常見的有兩種:after(for) 表示執行代碼後執行觸發器,instead of表示執行代碼前,用已經寫好的觸發器代替你的操作。

發佈了30 篇原創文章 · 獲贊 8 · 訪問量 209萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章