我目前正在爲我們團隊的項目設計一個數據庫結構。目前我有這個問題:是否可以將外鍵作爲另一個表上的主鍵?外鍵可以作爲主鍵嗎?
下面是我們的一些系統的數據庫設計的表:
user_accounts
students
guidance_counselors
我希望發生的是,user_accounts
表應包含的ID(所謂的登錄憑證到系統)和密碼學生用戶和指導顧問用戶。簡而言之,students
和guidance_counselors
表的主鍵也是user_accounts
表的外鍵。但我不確定是否允許。
的另一個問題是:一個student_rec
表中也存在,這需要一個student_number
(這是在user_accounts
表user_id
)和guidance_counsellor_id
(這也是在user_accounts
的user_id
)它的每個記錄的。如果學生和輔導員的ID都來自user_accounts table
,我如何設計student_rec
表?並且爲了將來的參考,我如何手動將它寫入SQL代碼?
這一直在竊聽我,我找不到任何具體或肯定的答案來解決我的問題。
雖然你的問題的答案是「是的,主鍵也可以作爲外鍵」,我的建議是避免這種情況。使用離散主鍵和外鍵可以表達同樣的關係,並且負擔多重責任的列可能會造成困難。例如,如果主鍵也是標識列,或者通過ORM使用GuidComb策略自動分配,那麼您可能會查看兩個或更多個事務,而不是一個。單一責任原則也適用於數據庫設計。 –