我有4張桌子。它們具有以下屬性:不同表格中的冗餘數據是否違反3NF標準化?
- 人(ID(主鍵),姓名,職業,工作地點,SecondJob,PerHour,HoursWorked,電話,辦公電話)
- 工作(ID(外鍵是指人) ,標題,名稱,位置,工資)
- SecondJob(也指人的ID(外鍵),標題名稱)
- ******中國(也指人的ID(外鍵),姓名,電話,辦公電話)
我得到每個attri的值弼像姓名,職務,從下面的僞書面方式Person表電話和辦公電話:
選擇(屬性名稱)從一個人其中id IN(人ID)
的,這對信息在不同的表(數據冗餘)中重複,打破3NF標準化?
或者我應該把這些值分別放入其他表中,並分別說明哪些屬性與表的主鍵相關聯?
我通過從Person獲得PerHour和HoursWorked來計算工作中的薪水,然後將它們相乘。我聽說這也是多餘的數據,因爲它可以從表中現有的數據中推導出來。
但它是否打破3NF標準化?
這在正常化方面是如此破碎。爲什麼「名稱」到處出現?爲什麼沒有將這些信息合併到人員記錄中?如果出於性能方面的考慮而故意去規範化,您是否有方法來保持這些數據同步並理解每個領域的規範來源?爲什麼PhoneNumber包含*兩個*號碼?你在這裏有很多工作來解決細節問題。 – tadman
記住在正確的數據庫設計中,你只有[Zero,One或Infinity](http://en.wikipedia.org/wiki/Zero_one_infinity_rule),沒有兩個。這就是爲什麼'SecondJob'作爲一張表非常關注的原因。如果他們有第三份工作呢?第四?第十九?人們改變職業,升遷,轉移,預計人們會換N次。同樣,工資信息應該與工作相關聯,而不是與個人相關聯。 – tadman
對你的迴應的反饋: 1.雖然你的第二篇文章實際上有一些有效的觀點 - 指出諸如「因規範化而破碎」之類的內容,但沒有明確的原因,基本上沒有用的反饋。 2. Secondjob只是一個名稱。它是如何形成的,仍然允許幾個不同的工作來填充它 - 用ID作外鍵。 3.規範化仍然依賴於主鍵和全部識別所述鍵。有重複的數據。不過,電話部分需要修改。 –