我最近開始使用MySQL Workbench來管理EER圖。直到現在我一直在使用phpmyadmin,我從來沒有遇到識別&非識別關係的條款。識別與SQL中的非識別關係
我查了一下網上的差異,並閱讀了幾個關於該主題的Stack Overflow答案,但我仍然非常無能。
從我的理解,我將舉一個我的數據庫中的場景的例子,我會提出正確的解決方案。
所以在我的數據庫中,我有一個users
表,包含了各種方法來聯繫用戶一個contact
表(如電子郵件&電話號碼)。由於聯繫人記錄不能與用戶無關,因此應該是,以確定的關係。
這裏是我的表是這樣的:
+-------+ +-------+
| users | |contact|
+-------+ +-------+
| id | |id |
+-------+ |userid |
|contact| // contains email or phone
|type | // specifies if email or phone
+-------+
然而,當我創建一個識別兩個表之間的關係,它使複合鍵的userId
一部分。我知道該表可以有一個由userid
和contact
組成的組合主鍵,但是希望在整個數據庫中保持一致的結構,其中每個表都有自己的代理鍵。 (我多次看到,使用代理鍵比組合鍵更好。)
因此,在這種情況下,實際執行此操作的正確方法是什麼?我應該使用組合鍵並取消代理鍵(我真的不想這麼做)?或者我應該在這種情況下使用非識別關係?
請解釋清楚這兩種關係之間的區別是什麼,爲什麼識別關係需要指向一個領域是複合鍵的一部分。
你在使用什麼,它會自動爲你創建密鑰? – Barmar
@Barmar「我最近開始使用MySQL Workbench來管理EER圖」 –
我將不得不刪除我的答案並對其進行編輯。必須得到非vs確認使用正確。它會回來的。 「識別關係的技術定義是孩子的外鍵是其主鍵的一部分。」 – philipxy