2012-07-23 153 views
4

可以說你有一張員工表和一份工作清單表。每個員工必須在桌上有一份工作。通常我會給每個工作一個id,並將其作爲員工表中的外鍵引用。然而,我的一位同事建議我們使用作業列表表作爲字典,並且在插入/更新之前,我們檢查表中是否存在「作業類型」,然後將作業類型作爲字符串插入到員工表中。我應該使用外鍵的外鍵還是字符串值?

至於我可以看到

的優點:

更快的選擇(雖然在主鍵上加入應使邊際 差)

的缺點:

較慢選擇按作業類型的員工
更難以改變工作 型

其中上述方法是最好的?

+1

不,你沒有錯過任何東西。有沒有你想問的關於上述說法的問題?如果不是,這應該被視爲「不是真正的問題」。 – meagar 2012-07-23 02:42:07

+1

哪個是最佳做法? – Mark 2012-07-23 02:42:52

+1

請更新您的問題,以便您實際上提出問題。然而,對於所有情況都沒有正確的答案。 – meagar 2012-07-23 02:43:27

回答

6

我不知道,我明白爲什麼有衝突。你知道主鍵和外鍵都可以很容易地將字符串類型作爲數字類型嗎?通過將作業類型字段作爲作業類型表中的主鍵和員工表中的外鍵,您可以獲得兩種系統的優勢。

此方法的優點是,您不需要將作業類型表連接回員工表以獲取作業類型的描述性名稱,而仍然使用數據庫來提供參照完整性對你的數據庫設計很重要。

的缺點是,如果你有一個非常大的數量的員工,你會使用更多的存儲資源,並且如果你改變了作業說明你需要通過級聯僱員表的變化。

雖然通常使用整數作爲主鍵(有些框架需要它),也沒有規定說它必須是這樣。

1

如果這將使它更難以管理的作業類型(這我假設是你或其他人會做的東西),這將真正是值得的一個小的性能提升?這聽起來似乎可能會讓一些小事情變得過於複雜。爲了簡單起見,我認爲最好的做法是堅持使用外鍵。