資料庫基本知識,資料庫知識

來源:互聯網
上載者:User

資料庫基本知識,資料庫知識
事務ACID原子性(atomicity)

每個事務都是不可分割的最小單元,事務中的操作要麼全部成功,要麼全部失敗復原。

一致性(consistency)

事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態。

隔離性(isolation)

一個事務所做的修改在最終提交以前,對其他事務是不可見的。

持久性

事務提交後,所做的修改會永久儲存到資料庫中。(這是個模糊的概念,持久性是不可能完全做到的)

交易隔離等級

未提交讀(READ UNCOMMITTED)
事務的修改,即使沒有提交也會被別的事務看見,別的事務可以讀取未提交的資料,這是髒讀
提交讀(READ COMMITTED)
一個事務在提交之前所做的修改對其他事務是不可見的。
解決了髒讀問題,但不可重複讀取:一個事務內的兩次查詢可能會出現不同的結果。(在mysql Innodb引擎中如果需要讀取某行資料,事務開始時會持有該行的共用鎖定。其他想更新資料的事務會請求獨佔鎖定,需要等待共用鎖定釋放才可擷取獨佔鎖定)
可重複讀(REPEATABLE READ)
同一事務中多次讀取同樣的記錄結果是一樣的。
解決了不可重複讀取的問題,但幻讀:當事務 A 在讀取某個範圍內的記錄時,另外一個事務 B 又在該範圍插入入了新的記錄,A再次讀取時會出現幻行。
(Innodb 引擎的間隙鎖可以防止幻行的出現:事務A會擷取要讀取的行間的間隙鎖,事務B插入時必須要等待間隙鎖釋放)
這是mysql的預設交易隔離等級。
可序列化(SERIALIZABLE)
強制事務串列執行。解決了幻讀問題,但是無法並行作業,容易出現死結。

E-R圖

E-R圖即實體-關係圖(entities-relationship),常用於關聯式資料庫的設計。E-R圖分為實體、屬性、關係三個核心部分。實體是長方形體現,而屬性則是橢圓形,關係為菱形。

DML,DDL,DCL,DQL

DML(Data Manipulation Language),資料操縱語言:INSERT、UPDATE、DELETE
DDL(Data Definition Language),資料定義語言 (Data Definition Language):CREATE TABLE/VIEW/INDEX/SYN/CLUSTER …
DCL(Data Control Language),資料庫控制語言:ROLLBACK、GRANT。用來授予或回收訪問資料庫的某種特權,並控制
資料庫操縱事務發生的時間及效果,對資料庫實行監視等。
DQL(Data Query Language),資料查詢語言:SELECT…

範式
連結:https://www.zhihu.com/question/24696366/answer/29189700來源:知乎

範式可以粗略地理解為一張資料表的表結構所符合的某種設計標準的層級。資料庫範式也分為1NF,2NF,3NF,BCNF,4NF,5NF。一般在我們設計關係型資料庫的時候,最多考慮到BCNF就夠。符合高一級範式的設計,必定符合低一級範式,例如符合2NF的關係模式,必定符合1NF。

1NF的定義為:符合1NF的關係中的每個屬性都不可再分
2NF在1NF的基礎之上,消除了非主屬性對於碼的部分函數依賴。
第三範式(3NF) 3NF在2NF的基礎之上,消除了非主屬性對於碼的傳遞函數依賴。
BCNF:在 3NF 的基礎上消除主屬性對於碼的部分與傳遞函數依賴。

函數依賴

若在一張表中,在屬性(或屬性群組)X的值確定的情況下,必定能確定屬性Y的值,那麼就可以說Y函數依賴於X,寫作 X → Y。

完全函數依賴

在一張表中,若 X → Y,且對於 X 的任何一個真子集(假如屬性群組 X 包含超過一個屬性的話),X ’ → Y 不成立,那麼我們稱 Y 對於 X 完全函數依賴。
例:包含A、B、C三個欄位的表,其中A、B為主鍵,如果C函數依賴於(A, B),且C不依賴於A,不依賴於B,那麼C完全函數依賴於(A, B)。

部分函數依賴

假如 Y 函數依賴於 X,但同時 Y 並不完全函數依賴於 X,那麼我們就稱 Y 部分函數依賴於 X。
例:包含A、B、C三個欄位的表,其中A、B為主鍵,如果C函數依賴於(A, B),且C又函數依賴於A或B,那麼C部分函數依賴於(A, B)。

傳遞函數依賴

C函數依賴於B,B函數依賴於A,則C傳遞函數依賴於A。

設 K 為某表中的一個屬性或屬性群組,若除 K 之外的所有屬性都完全函數依賴於 K(這個“完全”不要漏了),那麼我們稱 K 為候選碼,簡稱為碼。在實際中我們通常可以理解為:假如當 K 確定的情況下,該表除 K 之外的所有屬性的值也就隨之確定,那麼 K 就是碼。一張表中可以有超過一個碼。
(感覺碼類似於表的唯一索引(Unique Key))

非主屬性

包含在任何一個碼中的屬性成為主屬性。

查看評論

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.