1. 程式人生 > >關於資料庫中FK的簡單理解以及應用

關於資料庫中FK的簡單理解以及應用

問題來源:思考如果有兩張表,應該以什麼樣的方式將兩者關聯起來?直接用兩個表中的欄位進行關聯,還是使用第三張關係表進行關聯?

說明:FK(foreign key)、PK(primary key)

(注:下面提到的:“一對一”、“一對多”、“多對一”,是指一個表的記錄只能與另一個表的一條記錄連線;或者是一個表的記錄與另一個表的多條記錄連線)
查詢之前,先要了解 表之間的關係

理解:

如果兩個表之間的關係涉及一對多,或者多對一,肯定會有FK
即便沒有顯示宣告FK,也會有一個欄位起到FK的作用;

如果當時設計是一對多,或者多對一,就可以利用FK關聯
但是大部分情況,我們是不會顯示宣告FK的;

如果兩個表之間的關係是多對多,中間必然會有 “關係表”(例如“教師-學生關係表”,教師表和學生表的關係)

這個時候,查詢時,中間的“關係表”起到關聯中介的作用。

總結:
如果兩張表是:“一對多”,或者“多對一”的關係,那麼可以考慮使用 FK 進行關聯兩張表;
如果兩張表是:“多對多”的關係,那麼就會需要使用到第三張“關係表”來進行關聯;

舉個例子:
現有一個新系統,一個使用者只允許有一個角色,一個角色可以對應多個使用者,(分別對應使用者表,角色表)
這個時候,FK應該在哪個表上?
FK應該在 角色表上;FK設定的重要原則:FK必然是另一個表的PK的對映。(做FK的不一定是PK欄位)

FK 的好處:可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作。

---- 還有好多的不懂之處,後續知道了再補充。