2012-03-20 40 views
2

我有一個表:我應該正常化還是解除正常化?

Person的列:

pID(PK) 
FName 
LName 
plID(FK) 

另一個表Place有:

plID(PK) 
plCity 
plState 
plZip 

是更好地只是Person做出這樣的:

pID(PK) 
FName 
LName 
City 
State 
Zip 

對於instanc e:

John Doe New York, NY 00000 
Jane Doe New York, NY 00000 
Jim Doe New York, NY 00000 
+0

http://stackoverflow.com/questions/934577/should-i-normalize-my-db-or-not – transistor1 2012-03-20 01:35:25

+0

@ transistor1 - 很好的鏈接,謝謝 – CodeTalk 2012-03-20 01:51:21

回答

5

您應規範化數據庫以消除數據冗餘。就你而言,很可能你會有很多來自同一個地方的人,這會導致數據冗餘。因此答案是。你應該絕對規範你的數據庫。您可能只需在Person表中包含郵政編碼,並將其作爲Person中的外鍵和Place中的主鍵。

+0

我同意。唯一的問題是要確保當John Doe移動到舊金山CA 99999時,只有他移動了,而不是其他所有在紐約紐約的人00000. – 2012-03-20 02:01:44

+0

@JonathanLeffler使用我提出的設計,您只需更改「人」表中的郵政編碼爲99999.當然,不應觸及「地點」。 – kba 2012-03-20 02:03:45

+0

嗯,我忘了包括,這個表有一個PersonID(PK),所以它只會更新這個PersonID = whatevernyzipwas在新的zip ...在psuedo-sql :) – CodeTalk 2012-03-20 02:06:36