-1

注:我以前從來沒有做過這樣的:規範和使用主/外鍵的SQL Server 2008 R2

有哪些步驟或文檔,以幫助恢復正常數據庫中的表/視圖?目前,數據庫中有多個表和視圖不使用主鍵/外鍵概念,並且在多個表中重複相同的信息。

我想清理一下,也有點設置一個進程,保持關係更新。例如,如果一個人的郵編變化或記錄被刪除,那麼它會自動更新其與其他表格行的關係。

注意:*我的問題是規範現有的數據庫表。這些表格是現場直播的,所以我如何處理標準化?我是否需要創建一個具有我想要的表結構的全新數據庫,然後將數據移動到該數據庫?數據移動後,我插入存儲過程並導入?

+1

您是否認爲您的數據庫可能因爲某種原因而被解除歸一化?它是一個數據倉庫,你是否試圖規範化它,因爲你的意思是以不同的方式使用它?關鍵是規範化可以減少數據量和不一致性,但查詢會更加昂貴......順便提一下,這是一個太寬泛的問題,如果您查找手冊可能會更好。當然,你需要了解你的實體和它們之間的關係,可能會更容易從零開始。 –

+0

嗨。從字面上看,許多信息建模和數據庫設計教科書在pdf上免費在線,並且有許多學術幻燈片(例如sfu.ca)和課程(例如stanford.edu)。重新規劃/流程再次有html&pdfs產品的前奏和參考。在這裏要求這些資源是無關緊要的,並要求其內容太廣泛。請閱讀並執行[問]。 – philipxy

+0

我認爲這是一個有效的問題。這是從現有數據庫設置的角度出發的。我要求採取步驟或方法來獲取現有的數據庫表並對它們進行規範化,然後在向這些表插入更多數據時維持規範化。 – NonProgrammer

回答

0

這個問題有點寬泛,所以我只會解釋一下這個概念。

視圖是一般用於報告/數據演示目的,因此我不會去嘗試標準化它們。你的情況可能會有所不同。

你還需要清楚地瞭解主/外鍵的概念:在桌子上的定義並不意味着該表沒有列上的邏輯關係實際約束(例如PRIMARY KEYFOREIGN KEY

缺乏。

數據維護可以在Triggers中實現。

如果你真的有地方在沒有明顯原因的表存在大量的高反規範化的數據的情況,要規範它,然後這個問題可以從兩個方面加以處理:

  1. 全重-write - 我會爲小型/新應用程序推薦
  2. 「漸進式」重構 - 大型/成熟應用程序,其中基礎數據關係複雜且/或可能未完全理解。

在「漸進」再保理有幾種方法,以及:

2.A.您取1箇舊表並將其替換爲新表,並同時更改使用舊錶的所有代碼以使用新表。對於大型系統,這可能會有問題,因爲您可能不知道引用此表的所有地方。另一方面,對於表格結構變化不顯着和/或依賴關係數量小的情況,這可能會很有用。

2.b.另一種方法是以你想要的形狀/形式創建新的表(在同一數據庫中)。當前表格應替換爲Views,它們返回相同的數據(舊錶格),但是來自「新」表格。這種方法可以刪除/最小化立即修改所有依賴關係的需要。缺點是替換舊錶的視圖可能變得相當複雜,特別是如果需要實現View Instead Of Trigger