關於資料庫主鍵和外來鍵 事務解釋

2021-10-01 17:21:04 字數 1765 閱讀 2095

關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組(注意是組)能唯一標識一條記錄,該屬性組就可以成為乙個主鍵

比如學生表(學號,姓名,性別,班級)

其中每個學生的學號是唯一的,學號就是乙個主鍵

課程表(課程編號,課程名,學分)

其中課程編號是唯一的,課程編號就是乙個主鍵

成績表(學號,課程號,成績)

成績表中單一乙個屬性無法唯一標識一條記錄,學號和課程號的組合才可以唯一標識一條記錄,所以 學號和課程號的屬性組是乙個主鍵

成績表中的學號不是成績表的主鍵,但它和學生表中的學號相對應,並且學生表中的學號是學生表的主鍵,則稱成績表中的學號是學生表的外來鍵

同理 成績表中的課程號是課程表的外來鍵

定義主鍵和外來鍵主要是為了維護關聯式資料庫的完整性,總結一下:

1.主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。

身份證號是唯一能確定你這個人的,其他都可能有重複,所以,身份證號是主鍵。

2.外來鍵用於與另一張表的關聯。是能確定另一張表記錄的字段,用於保持資料的一致性。

比如,a表中的乙個字段,是b表的主鍵,那他就可以是a表的外來鍵。

主鍵外來鍵

索引定義

唯一標識一條記錄,不能有重複的,不允許為空

表的外來鍵是另一表的主鍵, 外來鍵可以有重複的, 可以是空值

該欄位沒有重複值,但可以有乙個空值

作用用來保證資料完整性

用來和其他表建立聯絡用的

是提高查詢排序的速度

個數主鍵只能有乙個

乙個表可以有多個外來鍵

乙個表可以有多個惟一索引

什麼是事務?我們知道,資料庫是乙個面向多使用者的共享機制,因此資料庫管理系統應當具備併發控制和封鎖機制,保證資料庫系統的正常執行。但是當多個使用者訪問資料庫的時候,如果每乙個使用者程式乙個乙個的序列執行,則每一時刻只有乙個使用者執行對資料庫的操作,其他使用者必須等待,這樣的話會嚴重影響資料庫資源的使用。所以資料庫管理系統必有能夠保證多個使用者同時使用資料庫。但是這樣會出現以下三個主要異常問題:

當第乙個使用者修改資料時,第二個使用者在第乙個使用者沒有確認修改之前讀取了該資料,這時可能會出現髒讀現象。如果第乙個使用者確認了修改,第二個使用者檢索不到資料庫中所修改的資料,有時這種現象也稱為丟失修改

當某乙個使用者對某一行資料進行第一次讀取過程後,另外乙個使用者對該資料進行了修改,從第乙個使用者的角度來看,如果再次讀取原先的資料會發現與前次不同,這就是不可重複讀現象

當第乙個使用者檢查某張表的時候,沒有發現某個值x,但是在該使用者還沒操作完成之前,另外乙個使用者插入了乙個x值,結果,導致第乙個使用者認為資料庫沒有x值,而實際上資料庫有這個值x。這就是幻象.

使用者之間相互干擾,出現的以上問題,後果不堪設想。因此資料庫系統採用事務的概念來解決這個問題。

事務是一系列作為乙個邏輯單元來執行的操作集合。它是資料庫維護資料一致性的單位,它將資料庫從一致狀態轉變為新的一致狀態,說的簡單一點就是,如果一組處理步驟要麼全部發生要麼一步也不執行,我們稱該組處理步驟為乙個事務。這樣就保證了資料始終一致的狀態,不至於破壞資料的完整性、可靠性。乙個事務執行以後,dbms會自動檢查資料庫中資料的一致性。

確保資料的一致性是保證資料庫裡面的資料正確反映現實世界的前提。舉個例子大家可能就清楚了,比如乙個銀行要將一筆錢從a->b;對資料庫中的操作主要有兩個步驟:一是從a賬戶中減去這筆錢;二是把b賬戶中的錢增加一筆。其實這兩個步驟操作就是乙個邏輯單元,就是乙個操作集合,就是乙個事務。這就要求兩個步驟操作同步執行,要麼它們都操作成功,要麼都操作失敗。如果乙個操作失敗,整個事務也就失敗了,並且已經執行的操作都會被撤消,也就是回滾到先前的狀態。

關於資料庫主鍵和外來鍵

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄 該屬性組就可以成為乙個主鍵 比如學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,學號就是乙個主鍵 課程表 課程編號 課程名,學分 其中課程編號是唯一的,課程編號就是乙個主鍵 ...

關於資料庫主鍵和外來鍵

一 什麼是主鍵 外來鍵 關係型資料庫中的一條記錄中有若干個屬性,若其中某乙個屬性組 注意是組 能唯一標識一條記錄,該屬性組就可以成為乙個主鍵 比如 學生表 學號,姓名,性別,班級 其中每個學生的學號是唯一的,學號就是乙個主鍵 課程表 課程編號,課程名,學分 其中課程編號是唯一的,課程編號就是乙個主鍵...

資料庫 主鍵 外來鍵

1 什麼是主鍵 在一張表中,用來唯一標識一條記錄的字段集,叫做主關鍵字或者主關鍵碼,簡稱主鍵 或主碼 這裡說 欄位集 是因為主鍵可能用乙個字段或者多個欄位來表示。舉例來看 學生表 學號,姓名,性別,專業編號 這裡學號是主鍵,乙個學號id就可以唯一標識乙個學生的資訊。另乙個表 學生選課表 學號,課程號...