2009-11-05 84 views
1

數據庫規範化對於數據管理員而言始終是一個痛苦的世界。規範化對於正確維護數據庫至關重要。 如果在本地和遠程數據庫上進行了規範化處理,性能問題可能是什麼?數據庫中的規範化

+5

我寧願認爲不正常化數據庫是件痛苦的事情。 – simon 2009-11-05 10:57:06

+1

您可以擴展您爲什麼認爲規範化對於數據管理員來說是一件痛苦的事情。我總是發現良好的規範化通常比替代方案好得多。 – 2009-11-05 10:58:48

+1

「本地」和「遠程數據庫?你放棄了什麼部分?你在談論什麼類型的「痛苦」? – tijmenvdk 2009-11-05 10:59:04

回答

1

規範化只是真的很痛苦,如果你試圖做你一直在使用數據庫一段時間!

標準化太多實體數量過多的系統通常會導致性能問題,但很少導致維護問題。一般來說,數據庫越規範化,越容易查看通過什麼鏈接到哪裏。

與大多數情況一樣,所需的標準化的實際水平在很大程度上與應用程序相關。

1

我不會說這是痛苦的常識。

當你沒有東西的時候,你實際上只是看到你不會有冗餘數據,這應該是很明顯的,爲什麼這是不好的。

現在,如果您不知道什麼是Noramlization,請檢查this Wikipedia Entry

在設計數據結構時,您很快會發現許多事情可能會重演,如果是這樣,您可以始終提取它並在模型中進行抽象。與此同時,您還可以獲得外鍵,候選鍵,主鍵和索引,這些將有助於加快搜索速度,併爲我們所有人提供便利。

但是,有些時候人們傾向於「超過」 - 無效,但這可能並不那麼糟糕。

無力的力量!

規範化概述

第一範式(1NF)

第一範式(1NF)設置非常 基本規則,一個有組織的數據庫: 消除來自重複列 同一張表。爲每個相關數據組創建 的單獨表格,並使用唯一列 或一組列(主鍵)標識每行。 第二範式(2NF)

第二範式(2NF)除去 重複數據的

進一步地址的概念:滿足所有的第一正常形式的 要求。 刪除適用於 表中多行的數據的子集,並將它們分別放入不同的表中。通過使用外鍵的 ,在這些新表 及其前輩之間創建 關係。第三範式 (3NF)

第三範式(3NF)

進入一個大的一步:滿足所有的第二正常 形式的 要求。根據主鍵刪除不是 的列。四 範式(4NF)

最後,第四範式(4NF)

有一個額外的要求:滿足第三範式 形式的所有 要求。如果它有 沒有多值依賴關係,則關係在4NF中。

來自this article的報價。

+0

似乎你對正常化的理解僅限於第一範式,認爲更大,以及3 NF及以上時可能出現的問題。 – 2009-11-05 11:08:47

+0

我想你應該再次閱讀我的答案,並考慮在盒子外面思考。我已經爲您提供了一些信息來了解更多的概念。我對冗餘數據的陳述可能有點大膽,但如果你閱讀了其他所有內容,你會理解整個上下文,看看我想告訴你什麼。 – 2009-11-05 11:40:25

+0

好的我對此表示歉意 – 2009-11-05 11:49:20

1

我會建議你不要只考慮「性能問題」。

db的可維護性也是一個非常大的問題!

如果您必須更改數據庫中的一個地址,並且您必須更改三個或更多表(統一)中的條目,而不是維護問題。這也可能是一個性能問題。

+0

我同意你的觀點。但是我的擔心也是關於性能問題。 – 2009-11-05 11:07:22

+0

@Sachin:大多數時候數據重複往往會成爲性能相關的,特別是當然更新。 – Juergen 2009-11-05 11:12:49

+0

@Juergen,是的,我同意你的看法,但是當你使用遠程數據庫時,性能可能成爲一個主要問題 – 2009-11-05 11:24:58

1

規範化對於大多數數據庫設計都至關重要。性能不僅僅針對select語句進行度量,還針對插入更新和刪除進行度量。例如,假設您已將其分類並將公司名稱存儲在多個表中。公司名稱發生變化,現在不是影響一條記錄的一條更新,而是需要5條更新,檢測1,500,000條記錄。

或者,非規範化結構可能很難查詢(查詢語言是爲規範化結構構建的)。例如,假設您決定將每個客戶的公司地址和家庭地址存儲在客戶表中。現在假設你想找出CA中的客戶數量。現在你必須查詢兩個字段來獲取這些數據並將它們加在一起。假設您現在需要添加第二個業務地址(一些業務具有多個地點),現在您需要更改數據庫結構以及所有依賴於該結構的查詢。

0

「我聽說很難將數據庫規範化到第三範式。」

我覺得你有聽力問題。一個在錯誤的禮堂裏。但是如果說相反的話,那麼這將是「你聽到別人說過的另一件事」。

所以我不打擾,除非鼓勵你嘗試正確記錄正常化的優點(例如「無冗餘數據庫」,這意味着數據庫無法包含矛盾的數據)以及所謂的(大部分是虛假的)缺點(例如「失去表現」),然後爲自己做一些批判性思考。

這不是好的文檔不可用,這個問題已經有數十年的爭論了。