Question

Je suis en recréant une partie de la base de données de mon entreprise, car elle ne répond pas aux besoins futurs. À l'heure actuelle, nous avons principalement un fichier plat et quelques tables disjoints qui ont jamais été pleinement réalisés.

Ma façon de penser est que nous avons une table pour chaque catégorie, sauf peut-être la table zips, ce qui peut servir le relier toutes les tables ensemble. S'il vous plaît se référer à l'image ci-dessous:

Database Schéma http://www.freeimagehosting.net/uploads/248cc7e884.jpg

Une chose que je pense à la table est enlève zip et juste mettre le code dans la table zipstocities puisque le code postal est presque unique et l'indexation de la table sur le code postal. Le seul inconvénient est le code postal doit être un varchar pour prendre soin des codes postaux par des zéros. Je veux juste savoir s'il y a une faille dans ma logique.

Était-ce utile?

La solution

Je ne connais pas le système américain Code postaux de devision territorial, mais je suppose que c'est un peu comme l'allemand.

  • Un état a beaucoup de comtés.
  • Un comté a beaucoup de villes.
  • Une ville a de nombreux codes postaux.

Par conséquent j'utiliser le schéma suivant.

ZipCodes          CityZipCodes
------------      ----------------      Cities
ZipCode (PK) <─── ZipCode (PK)(FK)      -----------
                  City    (PK)(FK) ───> CityId (PK)
                                        Name
                                        County (FK) ───┐
                                                       │
                                                       │
                                     Counties          │
                                     -------------     │
              States                 CountyId (PK) <───┘
              -----------------      Name               
              StateId      (PK) <─── State    (FK)
              Name
              Abbreviation

fixe pour plusieurs villes par code postal.

Autres conseils

Une chose que vous devez être conscient est que toutes les villes sont dans les comtés. En Virginie, vous êtes soit dans une ville ou un comté, mais jamais les deux.

En regardant le diagramme que vous avez, la table d'état est le seul des 4 tables à l'extérieur qui est vraiment nécessaire. Les tables de consultation avec juste une carte d'identité et une seule valeur ne valent pas l'effort. Ces relations sont conçues pour une seule valeur dans le tableau principal (ziptocities) se réfèrent à un ensemble de données connexes dans la table de recherche (états).

Vous devez vous demander pourquoi vous vous souciez de comtés. Dans de nombreux États aux États-Unis, ils ont peu d'importance au-delà de la tradition et des cartes.

L'autre question sera à quel point sera-il que l'adresse soit exacte? Combien de morts qu'il y aura si des lettres importantes ne sont pas livrées en temps opportun (peut-être beaucoup si la lettre est sur le médicament d'ordonnance rappelle!)

Vous voulez sans doute penser à utiliser les données du service postal, en utilisant éventuellement un produit qui corrige les adresses. De cette façon, lorsque vous obtenez une bonne adresse, vous serez certain que le courrier peut être livré là-bas - parce que le service postal aurait dit

Il semble y avoir des failles dans votre processus à la fois et votre logique.

Je vous suggère d'arrêter de penser à des tables et des relations pour un moment. Au lieu de cela, pensez à des faits. Faites une liste d'adresses valides que votre base de données doit prendre en charge. De nombreuses surprises vous attendent.

Ne pas confondre une adresse avec une étiquette postale. Ils ne sont pas du tout la même chose. Pensez à la modélisation des supports, aussi. Aux États-Unis, si une adresse est valide dépend du transporteur. Par exemple, ma boîte postale est une adresse valide lorsque le transporteur est le USPS, mais pas lorsque le transporteur est UPS.

Pour gagner du temps, vous pouvez essayer la navigation des formats d'adresses internationales sur bitboost .

Est-ce que votre travail logique si deux pays arrive d'avoir le même code postal? Ces deux seraient pointant vers différentes villes dans ce cas. voici quelques points à considérer

  1. Voulez-vous utiliser comme une sorte code postal de clé primaire dans l'adresse? (à louer la ville, l'État et le pays des champs). Dans ce cas, vous pouvez avoir code postal, ville, état, pays dans un table. Créer des index sur la ville, l'état etc .. (vous avez fonctionnel la dépendance de la forme zipcode-> pays, état, ville. Cette comme je l'ai dit ne pas être vrai dans des pays.
  2. Si le peuplement automatique est votre seule préoccupation, créer un vue matérialisée et l'utiliser.

Je recommande la lecture de « modèles de modèle de données » par David C. Hay.

Mais pas toute personne qui a une réclamation médicale valide est requise par la loi de rester aux États-Unis jusqu'à ce que la demande soit réglée. Les gens se déplacent.

San Francisco est une ville en Californie; ce n'est pas une ville en Alabama. Votre conception empêche les entrées non-sens comme "San Francisco, AL"?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top