1、一些基本概念
- 候選健:能夠唯一標識一個元組。在集合中可能有多個候選鍵,注意候選鍵也可能是多個屬性的集合。
- 主鍵:是候選鍵之一,選取它來組織關係
- 外鍵:不是當前關係的候選鍵但卻是另一個關係的候選鍵
- 主屬性:候選鍵中的任何一個屬性
- 非主屬性:不包含在任一候選鍵中的屬性
2、完整性約束有哪些?
數據庫的完整性是指數據的正確性和相容性。數據的正確性是指數據是符合現實世界語義、反映當前實際狀況的。數據的相容性是指數據庫同一對象在不同關係表中的數據是符合邏輯的。
- 實體完整性:關係的主屬性不爲空值
- 參照完整性:在維護兩個表的關係時,外鍵屬性值在目標表和依賴表上要保持一致
- 用戶定義完整性:不同的關係數據庫系統根據其應用環境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關係數據庫的約束條件,它反映某一具體應用必須滿足的語義要求。
3、什麼是數據庫約束,常見的約束有哪幾種?
定義數據庫表的時候需要指定的。總體來講,約束可以分爲:
- 主鍵約束:primary key; 唯一性,非空性
- 外鍵約束:foreign key;需要建立兩表間的關係並引用主表的列
- 唯一約束:unique;唯一性,可以空,但只能有一個
- 檢查約束:check;對該列數據的範圍、格式的限制(如:年齡、性別等)
- 空值約束:not null;
- 默認值約束:default;該數據的默認值
4、基本連接運算
兩個關係的連接指的是從兩個關係的笛卡爾積中(全集合)根據條件選取對應行
- 條件連接:根據條件選取對應行
- 等值連接:選取兩個關係中共有屬性值相等的元組,不合並屬性
- 自然連接:在等值連接的基礎上合併公有屬性
- 外連接:左連接爲例,以左表爲基礎,連接兩表,如果左表某行在右表中沒有匹配,相應屬性值爲空
5、什麼是視圖
視圖是在數據庫中通過Select查詢語句從多張表中提取的多個表字段組成的虛擬表。不包含真正數據,方便用戶從不同角度去觀察數據庫實表。
在滿足一定條件下,允許通過視圖對原表中的數據進行增刪改。
6、關係數據庫的函數依賴關係
函數依賴是指關係表中各個屬性(表中字段)存在什麼樣的依賴關係
- 完全函數依賴:屬性集X中所有屬性共同決定屬性Y,缺一個都不行
- 部分函數依賴:屬性集X的子集可以決定Y
- 傳遞函數依賴:屬性集X決定Y,Y決定Z
7、範式是什麼?有哪幾種?
範式就是根據約束條件的不同將數據庫表分成不同類的表集合。
- 第一範式:表中字段都是單一屬性,不可再分。簡而言之,第一範式就是無重複的列。缺點是插入修改刪除很不方便
- 第二範式:所有非主屬性都不部分函數依賴於任一候選鍵。優點是關係得到細分,具有插入修改刪除的優勢;缺點是數據冗餘,修改複雜,需要修改多處
- 第三範式:所有非主屬性都不傳遞函數依賴於任一候選鍵,或說所有非主屬性都完全函數依賴於候選鍵,意味着不存在非主屬性之間的函數依賴
- BCNF範式:只存在依賴於候選鍵的函數依賴
滿足第二範式,必須滿足第一範式,以此類推。
8、什麼是數據庫的事務?
事務是用戶定義的數據庫操作的序列,這些操作要麼不做,要麼就全都做,是一個不可分割的工作單位。
事務的四個特性ACID爲:原子性、一致性、隔離性、持久性。
- 原子性(Atomicity):事務中的全部操作在數據庫中是不可分割的,要麼全部完成,要麼全部不執行。
- 一致性(Consistency):幾個並行執行的事務,其執行結果必須與按某一順序 串行執行的結果相一致
- 隔離性(Isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的。
- 持久性(Durability):對於任意已提交事務,系統必須保證該事務對數據庫的改變不被丟失,即使數據庫出現故障。
9、封鎖協議
-
一級封鎖協議:事務T在修改數據R之前必須先對其加寫鎖,直到事務結束才釋放(避免丟失修改)
-
二級封鎖協議:在一級封鎖協議的基礎上增加事務T在讀取數據R之前必須先對其加讀鎖,讀完後即可釋放讀鎖(避免丟失修改和讀髒數據)
-
三級封鎖協議:在一級封鎖協議的基礎上增加事務T在讀取數據R之前必須先對其加讀鎖,直到事務結束才釋放(避免丟失修改、讀髒數據、不可重複讀)
-
兩段鎖協議:在對任何數據進行讀寫操作之前,首先要先申請並獲得對該數據的封鎖。在釋放一個鎖之後,事務不再申請和獲得任何其他封鎖