2011-04-18 45 views
1

對不起,標題可以使用「捷徑」引用來跳過表關係嗎?

我有以下關係,一個盒子屬於一個插槽,屬於一個機架,屬於冰箱。相反,冰箱有許多機架,有很多插槽,有一個盒子。

對於一些操作,知道盒子在冰箱內的位置是沒有必要的。如果我有從箱子到冰箱的捷徑,它會簡化一些查詢。

這是不好的,如果有的話,爲什麼要在箱子裏的冰箱裏放一個外鍵?

回答

2

這可能取決於關係更新的頻率。如果關係可能會頻繁變化,那麼您將需要在幾個地方更新關係的開銷。這也會讓事情變得更加困難,因爲如果你改變了一個,你必須確保所有事件都被更新。

但是,如果值不會經常改變,它似乎可以使您的查詢更快。

This看起來這是數據庫規範化的一個很好的例子,他們使用的例子與您的例子相當接近。如果你對標準化感興趣,Wikipedia這篇文章非常好。

+1

如果您使用支持參照完整性強制約束的數據庫,那麼該數據庫將幫助您避免編程忘記更新非規格化表中的外鍵值的代碼。 – 2011-04-18 12:37:26

+0

是的,我同意。雖然我沒有看到問題中使用的數據庫的類型,所以我只列出了它,因爲這是額外的,您需要以某種形式進行說明。 – 2011-04-18 12:44:16

+0

感謝您的回答和評論。我應該提到我正在使用MySQL。 – kaklon 2011-04-18 13:02:54

1

通過在兩個不同的地方記錄與一個箱子的冰箱協會您創建了矛盾出現的可能性。因此,您必須創建額外的約束邏輯來確保冗餘數據一致或接受數據可能錯誤。

相關問題