主表和附表的關聯關係,普通欄位就可以實現為什麼還要有主鍵外來鍵?之間有什麼關係
阿新 • • 發佈:2018-11-19
主鍵和外來鍵是把多個表組織為一個有效的關係資料庫的粘合劑。主鍵和外來鍵的設計對物理資料庫的效能和可用性都有著決定性的影響。必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外來鍵的結構是這個設計過程的癥結所在。一旦將所設計的資料庫用於了生產環境,就很難對這些鍵進行修改,所以在開發階段就設計好主鍵和外來鍵就是非常必要和值得的。
外來鍵
外來鍵(FK)是用於建立或加強兩個表資料之間的連結的一列或多列。
通過將表中主鍵值的一列或多列新增到另一個表中,可建立兩個表之間的連線,這個列就成為第二個表的外來鍵
FK約束的目的是控制儲存在外表中的資料,同時可以控制對主鍵表中資料的修改
例如:publishers表中記錄出版商的資訊,titles表中記錄書的資訊,如果在publishers的表中刪除一個出版商,而這個出版商的ID在titles表中記錄書的資訊時被使用了,則這兩個表之間關聯的完整性將被破壞,即titles表中該出版商的書籍因為與publisher表中的資料沒有連結而變的孤立。
FK約束可以防止這種情況的發生,如果主鍵表中資料的更改使得與外來鍵表中資料的連結失效,則這種更改是不能實現的;如果試圖刪除主鍵表中的行或試圖修改主鍵值,而該主鍵值與另一個表的FK約束值相關,則該操作不可實現。若要成功的更改或刪除FK約束的行,可以現在外來鍵表中刪除外來鍵資料或更改外來鍵資料,然後將外來鍵連線到不同的主鍵資料上去
外來鍵主要是用來控制資料庫中的資料完整性的,當對一個表的資料進行操作時,和他有關聯的一個表或多個表的資料能夠同時發生改變
例子:
A(a,b) :a為主鍵,b為外來鍵(來自於B.b)
B(b,c,d) :b為主鍵
A中的b欄位要麼為空,要麼為B表中存在的b值