2015-09-07 126 views
0

enter image description here定義過多冗餘?

我在做一個在線課程,它提供了以下relvar例子,然後說:

嗯。雖然答案和answercode在每個不同的元組製作 每個元組在技術上獨一無二的 - 的的屬性ID, questionID和answertype值是完全一樣的。規範化按順序進行。

問題是,什麼被認爲是冗員過多?在我們開始進行規範化步驟之前,線條在哪裏繪製?

+0

https://en.wikipedia.org/wiki/Database_normalization – Bulat

回答

3

正常化,不是用來減少冗餘值的東西。它用於減少值之間的重複關聯。換句話說,它意味着確保每一個事實都只記錄一次。

要確定您是否需要規範化,請寫出函數依賴關係,並查找異常的原因,如傳遞依賴性,部分關鍵字的依賴關係等。這些類型的冗餘的每一種都在正常描述中明確定義在線表格和教科書中的表格。

在您的例子,如果我認爲questionID -> answertype(questionID, answercode) -> answer,那id相當於questionID和可以忽略不計,則關係僅僅是1NF因爲answertype是一種非主屬性取決於密鑰(questionID, answercode)的一部分。如果更新是改變一些顯示answertypes的值(但不是全部),您的數據將是邏輯損壞。規範化可以防止這種情況發生。

您的客戶關心的準確性和一致性。你做?

+0

所以我們什麼時候開始正常化? 「在別處清楚地描述」沒有什麼幫助。我們幾乎每個relvar都會有重複的價值。所以當我們看到包含相同值的冗餘依賴時,這是我們應該什麼時候正常化的? –

+0

忘記重複值。查看功能和多值依賴關係。將其與正常形式進行比較。是否有更新異常的風險?您是否希望通過設計確保完整性,或者您是否將自己的責任置於客戶代碼中,並在手動更新時承擔責任?要麼正常化或接受後果,這是您的選擇。 – reaanb