Normalization
當一個表甚至不在 1nf 時,它有什麼不利影響?
如果表格甚至不在 1nf 中,它會有什麼不利影響?
我用Google搜尋並閱讀了維基百科上的文章,但我無法確切找到為什麼表格應該在 1nf 中。
另外,如果表不在 1nf 中,我找不到會發生什麼可怕的事情。
所以除了能夠使用簡單的查詢 之外,如果我的桌子不在 1nf 中,當我在家裡愉快地睡覺時,還有什麼怪物會爬出桌子?
沒有怪物會爬出非第一範式的表格,但是,當一個簡單的更改請求需要對錶格結構進行重大改造時,您可能會變成一個怪物。讓我更詳細地討論這個問題。
根據關於第一範式的維基百科文章,它有助於
- 消除單個表中的重複組。
- 為每組相關數據創建一個單獨的表
- 用一個主鍵辨識每組相關數據
現在讓我們假設 Stack Exchange 在設計他們的數據庫後端時會忽略這個建議,並將他們所有的問題儲存在一個大表中。當一個標籤被添加到一個問題時,一個新行被添加到問題表中。這一切正常,直到版主注意到 SQL Server 標記的使用不一致(SQL Server、Microsoft SQL、Microsoft SQ Server 等)並想要清理它。
在規範化的形式中,這可以通過更新和刪除少量行來實現,但是,如果不規範化,您將需要更新每個被錯誤標記的問題。這可能導致數據庫鎖定和站點凍結。這意味著版主不能簡單地使用版主工具立即更改標籤,而是必須將這些更改排隊,直到站點不那麼繁忙。
隨著網站規模的擴大,這種標準化形式也會導致巨大的性能問題。由於每個問題都可以有多個標籤,因此問題表中會有很多重複的行,並且查詢速度會越來越慢。例如,您會很快遇到查詢所有可用標籤的問題,因為您必須查詢整個問題表而不是標籤表。