我最近看到一個數據庫,其中有一個表Types
,列Id
,Key
和Name
。SQL存儲過程設計問題
Id
只是類型的ID,Key
是該類型短鍵名稱,例如「啤酒」,而Name
是文本可能被顯示給用戶(例如,「我們最大的啤酒」 )。身份證當然是獨一無二的,並且是本表的主要關鍵。 鑰匙也是獨特的。其他表總是使用其Id列鏈接到表類型,但存儲過程始終使用Key進行過濾(例如"X inner join Types on X.type_Id = Types.Id where Types.Key = 'beer' "
而不是"X.type_Id = 3"
)。
我認爲這是一種壞方法。我會使用Id
而不是Key
,即使我知道Key
是唯一的。我認爲這可能(和確定)鍵改變,但ID不應該改變,因爲它在另一個表中用於鏈接。有沒有這樣做的規則?我的意思是,如果我們將Key
「啤酒」更改爲「啤酒」,某些存儲過程將停止正常工作(實際上存在這種情況)。對我來說,非常直觀的是,如果Id
識別表中的行,我們應該始終使用id,因爲如果需要,其他屬性可能會更改,並且不應該導致問題。我對嗎?
面對同樣的問題,但在閱讀這些答案後,我更加困惑。 – Kashif 2010-03-13 13:54:08