2011-02-10 57 views
0

我正在使用數據庫,其中「幾乎」數據庫中的每個表具有相同的字段和相同的值。例如,幾乎所有表都有一個名爲GroupId的字段,現在數據庫中只有一個組ID。替代在幾乎每個表中使用相同的外鍵

優勢

  • 所有數據都與該領域,可以通過識別所述現場
  • 當創建一個新的組數據將被正確地識別爲集團

缺點

  • 所有表都有這個字段
  • 所有的存儲過程,需要有這個字段作爲參數
  • 所有查詢都通過這個領域

這是什麼大不了的過濾?這種方法有其他選擇嗎?

感謝

+0

你可以提供一些關於你正試圖解決的問題的更多信息嗎?沒有一些特定領域的知識,這似乎是討論六個和六個之間的區別。 – jwir3 2011-02-10 17:59:32

+0

我認爲這是一個特定領域信息不必要的情況。這可以應用於很多領域。如果它有幫助,你可以把groupid想象成一個customerid。所有與客戶相關的數據(與組相對)。 – 2011-02-10 18:10:54

回答

0

如果您需要能夠通過多個組在未來以確定的數據,有外鍵是一個很好的做法。然而,這並不意味着所有的表都需要有這個字段,只有那些與這個組直接相關的字段。例如,具有狀態值的查找表可能不需要它,但客戶表可能。當你試圖刪除一條記錄並且必須檢查579個表(其中只有25個表是相關的)時,將它添加到所有表中可能會導致不好的結果。這一切都很大程度上取決於這些團體的意義。我們的大多數表格都與客戶表有關係,因爲它們包含與特定客戶相關的數據,因爲我們不希望各種客戶能夠查看其他客戶的數據。不包含那種數據的表不會。

是的,大多數查詢可能需要該字段,許多存儲過程將希望將其作爲輸入變量,但如果您確實需要過濾此信息,則應如此。

但是,如果只有一個組,並且永遠不會超過一個組,那就浪費時間,精力和空間。

相關問題