2012-03-20 2 views
2

J'ai une table:Dois-je normaliser ou dé-normaliser?

Person avec des colonnes:

pID(PK) 
FName 
LName 
plID(FK) 

Une autre table Place avec:

plID(PK) 
plCity 
plState 
plZip 

Est-il préférable d'avoir juste Person fait comme:

pID(PK) 
FName 
LName 
City 
State 
Zip 

Pour 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

+0

@ transistor1 - bon lien, merci – CodeTalk

Répondre

5

Vous devez normaliser une base de données pour éliminer la redondance des données. Dans votre cas, il est très probable que vous ayez beaucoup de personnes au même endroit, ce qui entraînerait une redondance des données.

Par conséquent, la réponse est oui. Vous devriez absolument normaliser votre base de données. Vous pouvez éventuellement inclure le code postal dans la table Person et laissez-le être une clé étrangère dans Person et la clé primaire dans Place.

+0

Je suis d'accord. Le seul truc est de faire en sorte que lorsque John Doe déménage à San Francisco, CA 99999, c'est seulement lui qui bouge et pas tout le monde qui était à New York, NY, 00000. –

+0

@JonathanLeffler En utilisant mon design proposé, tu changerais juste le code postal dans la table 'Person' à 99999. Naturellement,' Place' ne doit pas être touché. – kba

+0

Eh bien, j'ai oublié d'inclure, cette table a un PersonID (PK) à la place, donc il serait simplement mettre à jour où ce PersonID = whatevernyzipwas au nouveau zip ... dans psuedo-sql :) – CodeTalk