《數據庫系統概論》讀書筆記


一:關系數據庫的描述

1:實體間的聯系: 1:1、1:n、m:n

 

2:候選碼:關系中某一屬性組的值能唯一標識一個元組(記錄)而其子集不能,則該屬性組所包含的屬性們稱為候選碼。

主碼:若有多個候選碼,選一個作為主碼。

全碼:關系模式的所有屬性都是候選碼,稱為全碼。

 

二:關系代數

1:傳統集合運算

並:兩種關系R、S的並集由R跟S的記錄合並得到;

差:R-S的表記錄由R表中有而S表中沒有的記錄組成;

交:R、S的交集由既屬於R表又屬於S表的記錄組成;

笛卡爾積:若R有k1條記錄,S有k2條記錄,則R、S的笛卡爾積有k1*k2條記錄,每條記錄有r+s列,前r列為R的記錄,后s列為S的記錄。即:遍歷R中每一條記錄,在其后面依次拼接S表的記錄。共循環了k1*k2次。

 

2:專門關系運算

選擇:從表中選出符合條件的元組(記錄)組成結果表;(行查詢)

投影:從表中選出若干屬性列組成結果表;(列查詢)

連接:從兩個關系的笛卡爾積中選出屬性間滿足某條件的元組。

    等值連接:從R、S關系的笛卡爾積中,選取R中某些屬性值與S中某些屬性值相等的元組;

    自然連接:一種特殊的等值連接,選出R、S中同名的屬性組的值相等的元組,並在結果中去掉重復的屬系列留下一個即可;

         通過自然連接利用兩個關系某相同屬性把兩個表拼接在了一起,此時會出現以下情況:

         懸浮元組:在R、S通過屬性B的值拼接時,如果出現R中的某B屬性值bn在S中沒有相等值,則此時bn所在元組就會被舍棄,不加入結果表中。

         外連接:如果把懸浮元組也加入結果表中,則把bn屬性所在行在另一個表中取不到值的列設為NULL值。

         左外連接:只保留左邊關系R的懸浮元組。即:R中bn在S中無等值,把R中bn元組加入結果表,元組中屬於S的屬性列賦NULL值。

         右外連接:只保留右邊關系S的懸浮元組。即:S中的bn在R中無等值,把S中bn所在元組加入結果表,該元組中屬性R的屬性列賦NULL值。

 

三:SQL語言

1:定義模式(定義數據庫):CREATE SCHEMA 模式名(數據庫名) AUTHORIZATION 用戶名

2:刪除模式(刪除數據庫):DROP SCHEMA 模式名[CASCADE|RESTRICT] 級聯刪除或限制不能刪除

3:創建表:CREATE TABLE 表名 (列名 數據類型 約束條件,...);

4:修改表:ALTER TABLE 表名

                                        ADD 列名 數據類型 約束條件

                                        DROP 列名[CASCADE|RESTRICT]

                                        ALTER COLUMN 列名 數據類型

5:刪除表:DROP TABLE 表名[CASCADE|RESTRICT]

 

6:數據查詢:SELECT[ALL|DISTINCT] 表達式 FROM 表名 WHERE 表達式 GROUP BY 列名     HAVING 表達式         ORDER BY 列名[ASC|DESC];

                              去除重復屬性                                                                           對groupby結果進一步篩選                       升序|降序

                WHERE 表達式常用條件:

                                                比較:=,>,<,<=,>=,!=......

                                                范圍:between...and...

                                                歸屬:in、not in

                                                模糊查詢:like 、not like  (%作通配符表示模糊內容)

7:插入數據:INSERT INTO 表名 屬性列名 VALUES(屬性值,...,...)

8:修改數據:UPDATE 表名 SET 列名=修改值 where 條件

9:刪除數據:DELETE FROM 表名 where 條件

 

四:視圖

視圖不是一個具體的表,它只不過是一個“窗戶”,透過它可以看到某個表中某些特定的數據以及變化。

 

五:數據庫安全

1:自主存取控制

通過GRANT、REVOKE賦予用戶、角色某些權限或撤銷其權限;

2:強制存取控制

為用戶賦予許可證,為數據設定密級。

只有當用戶許可證級別大於等於數據密級時,才允許讀取數據;

只有當用戶許可證級別小於等於數據密級時,才允許寫數據;(是寫入而不是修改,低等級用戶只擁有向表中增加數據的權限,不能查看,不能修改)

 

六:完整性約束

1:定義主鍵:PRIMARY KEY(屬性名)

2:定義外鍵:FOREIGN KEY(屬性名) REFERENCES 外表名(參考屬性名)

3:自定義約束:自定義某屬性的約束條件:Check 條件

 

七:觸發器

觸發器又叫 事件—條件—動作  規則。即:某事件(數據庫的增刪查改)發生前/后—符合某條件—執行某動作

 

八:關系理論

第一范式:基本表,表中無表(即屬性不可再分)。

第二范式:在第一范式的基礎上,每一個非主屬性都可由任意一個主屬性推出。

第三范式:在第二范式基礎上,每個非主屬性由任意一個主屬性直接推出而不傳遞或部分推出。

第四范式:每一個主屬性都可推出所有非主屬性,並且沒有任何一個非主屬性能推出主屬性。

 

九:數據庫恢復

1:事務:用戶定義的一系列數據庫操作,要么全做,要么不做。具有ACID特征:

           原子性:事務不可分割。

           一致性:事務結果使數據庫從一個一致性狀態變到另一個一致性狀態。

           隔離性:事務間相互獨立,互不干擾。

           持續性:事務一旦成功提交,對數據庫的改變是永久的而不是暫時的。

 

十:並發控制

1:數據庫並發操作引起數據不一致:丟失修改、不可重復讀、讀到“臟”數據

2:封鎖技術:事務T操作某個數據對象前先加鎖,然后進行操作。在鎖釋放期間其他事務不能操作該數據對象。分兩種:排它鎖(寫鎖,其他事務不能讀不能寫)、共享鎖(讀鎖,其他事務也可以讀)。

3:死鎖:兩個事務互相等待對方釋放鎖,導致死鎖。

4:處理死鎖:選擇一個造成死鎖的最小代價的事務將其撤銷,等待其他事務優先執行完再執行。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM