這個問題有點寬泛,所以我只會解釋一下這個概念。
視圖是一般用於報告/數據演示目的,因此我不會去嘗試標準化它們。你的情況可能會有所不同。
你還需要清楚地瞭解主/外鍵的概念:在桌子上的定義並不意味着該表沒有列上的邏輯關係實際約束(例如PRIMARY KEY
,FOREIGN KEY
)
缺乏。
數據維護可以在Triggers
中實現。
如果你真的有地方在沒有明顯原因的表存在大量的高反規範化的數據的情況,要規範它,然後這個問題可以從兩個方面加以處理:
- 全重-write - 我會爲小型/新應用程序推薦
- 「漸進式」重構 - 大型/成熟應用程序,其中基礎數據關係複雜且/或可能未完全理解。
在「漸進」再保理有幾種方法,以及:
2.A.您取1箇舊表並將其替換爲新表,並同時更改使用舊錶的所有代碼以使用新表。對於大型系統,這可能會有問題,因爲您可能不知道引用此表的所有地方。另一方面,對於表格結構變化不顯着和/或依賴關係數量小的情況,這可能會很有用。
2.b.另一種方法是以你想要的形狀/形式創建新的表(在同一數據庫中)。當前表格應替換爲View
s,它們返回相同的數據(舊錶格),但是來自「新」表格。這種方法可以刪除/最小化立即修改所有依賴關係的需要。缺點是替換舊錶的視圖可能變得相當複雜,特別是如果需要實現View Instead Of Trigger
。
您是否認爲您的數據庫可能因爲某種原因而被解除歸一化?它是一個數據倉庫,你是否試圖規範化它,因爲你的意思是以不同的方式使用它?關鍵是規範化可以減少數據量和不一致性,但查詢會更加昂貴......順便提一下,這是一個太寬泛的問題,如果您查找手冊可能會更好。當然,你需要了解你的實體和它們之間的關係,可能會更容易從零開始。 –
嗨。從字面上看,許多信息建模和數據庫設計教科書在pdf上免費在線,並且有許多學術幻燈片(例如sfu.ca)和課程(例如stanford.edu)。重新規劃/流程再次有html&pdfs產品的前奏和參考。在這裏要求這些資源是無關緊要的,並要求其內容太廣泛。請閱讀並執行[問]。 – philipxy
我認爲這是一個有效的問題。這是從現有數據庫設置的角度出發的。我要求採取步驟或方法來獲取現有的數據庫表並對它們進行規範化,然後在向這些表插入更多數據時維持規範化。 – NonProgrammer