2013-01-10 65 views
0

我有一個關於正常化的問題,關於我的場景是什麼水平的正常形式。我有幾個表具有相同的字段 - 名稱地址1,地址2,郵政編碼和電話號碼;數據庫規範化;重複字段

Client [id, instructor id, name, address, postcode, phone, practical, theory] 
Staff [id, office id, name, job, address, postcode, phone] 
Registration id, name, address, postcode, phone] 
Office [id, manager id, address, postcode, phone] 

將任何正常的形式存在,它們分開字段弄成這樣......

Client [id, instructor id, details_id, practical, theory] 
Staff [id, office id, details_id, phone] 
Registration [id, details_id] 
Office [id, manager id, details_id] 

Details [id, full_name, address1, address2, postcode, phone_no] 

不知道,如果正常化工作一樣,但它僅僅是一個想法...

+0

地址表?好,當然。但是,我會在實體中保留名稱。 SOmeone誰曾面臨類似的問題:http://stackoverflow.com/questions/5530681/normalize-an-address – mcalex

+0

謝謝,但我想知道什麼樣的標準化,這將是下。 NF3?我不明白它100%.. – Callum

+0

從多個表中分離出類似的字段不是正常形式的問題。您的每個原始表格都已經是3NF了。將多個表中的所有類似數據收集到一個不是一種標準化技術。做這樣的事情的原因更有可能是使您的維護代碼合理化。唯一可能的例外可能是如果您的表是所有共享地址屬性的超類型的子類型。如果是這種情況,那麼你已經倒過來了一點關係。 'Details'實際上是'Supertype'。 –

回答

1

在多個表中放置具有相同含義的列不需要進行規範化。它與數據庫設計的不同正式原則有關。 Chris Date稱之爲The Principle of Orthogonal Design或POOD。

據我所知,POOD的形式邏輯還沒有像正常形式那樣被深入研究或被廣泛接受。這是一個觀察,而不是批評。