2010-11-23 35 views
0

我有這個想法,我一直在根據我讀到的另一個概念思考我的腦袋。基本上,你有一個包含很少字段的「主」表,其他表通過一個外鍵繼承該主表。沒有消息之前就已經做了很多事情。我想要做的是實際上數據庫中的每個表都從該主表繼承。這樣,每個表中的每個對象,每條記錄,每個條目都可以有一個完全唯一的主鍵(因爲PK實際上存儲在主表中),並且可以簡單地用ID而不是按表引用。SQL Server 2008中的繼承表。性能問題?

另一個好處是,它可以很容易地建立可以觸及多個表的關係。例如:我有一個交易表,並且這個表想要擁有一個FK,無論它是交易(庫存,賬戶,聯繫人,訂單等)。該事務可以只有一個FK到主表,並通過它來引用必要的數據。

我的腦海裏一直存在的問題是,主表是否會成爲瓶頸。這件事將會在一點上達到數百萬條記錄。我知道巨大的記錄集可以通過良好的桌面設計來處理,但是最大限度是什麼?

有沒有人嘗試過與此類似的任何內容,結果如何?

回答

2

你必須考慮這張表會有很多外鍵關係。如果要從根表中刪除一行,這可能會導致性能問題。 (這可能會導致一些討厭的執行計劃刪除)

因此,如果您打算刪除行,那麼它可能會影響性能。我最近遇到了類似這樣的設置問題,並且清理它是一件很痛苦的事情(它引用了其他120個表格 - 刪除了速度緩慢的地方)。

爲了克服這個性能問題,您可以考慮不強制執行禁忌(壞計劃),不使用禁忌執行(壞計劃),或嘗試將屬於一個實體的所有數據分組在一行中,並堅持正常的規範化實踐(好計劃)

2
  1. 是的,主表幾乎肯定會成爲一個瓶頸。
  2. 你如何執行真正的參照完整性?
    例如,您如何確定交易的FK實際上與庫存,帳戶,聯繫人或訂單相關聯,而不是蘋果,橙子或菠蘿?
+1

+1,OP的想法很糟糕 – smirkingman 2010-11-23 15:45:27

+0

OP的想法現在是實體框架中的一個內置功能 - 不能那麼糟糕! – 2015-11-08 20:57:45

1

我認爲這是一個可怕的瓶頸。不僅如此,它會使得真正的PK/FK關係變得更加困難。它可能會造成數據完整性的噩夢。我沒有看到你從哪裏獲得任何好處。