2011-08-19 6 views
0

Je construis un site où il y aura un tas d'entreprises et leur fiche d'entreprise, ils auront leur adresse, ville, état, code postal, etc.MySQL Database Design pour Ville/État

J'ai trouvé ce site Web ici: http://jesseprice.com/mysql-city-state-zip-latitude-longitude-database/ qui a une base de données de tous les ville, état, zip, comté, lat, long.

la base de données I importé ci-dessus, ma question est donc comment pourrais-je le connecter à ma table de sociétés? Et quand une entreprise s'inscrit, je suppose que je pourrais faire une liste déroulante pour l'état, et puis il descendra vers les villes trouvées dans cet état tirant de la base de données afin qu'ils choisissent parmi ceux, puis le code postal. Cela fonctionnerait-il? Donc, ils n'auraient pas à entrer en eux-mêmes?

Je suis juste un peu confus sur la façon de le faire correctement et tout faire fonctionner ensemble.

Merci.

+0

essayez d'utiliser la clé primaire comme une clé étrangère à la table des sociétés pour établir une relation entre les deux – pif

+0

de sorte que le zip_code est la clé primaire sur la base de données que je viens de télécharger. sur ma table d'entreprises, je l'attache à quoi? – Drew

+0

@Drew, vous aurez besoin d'un autre champ contenant le code postal dans votre table d'entreprises, que vous pouvez comparer à la table de recherche zip –

Répondre

1

Option 1:

Ajouter tous les champs à votre table d'adresses, faisant référence à la table sélectionnée sur les ajouts, plaçant la ville, état, code postal, comté, lat et long dans votre table.

Avantages:

  • Vous pouvez fournir un soutien international sans mises à jour de la table téléchargée.
  • Vous pouvez mettre à jour la table téléchargée sans perte de données (peu probable)
  • Toutes les données sont disponibles dans une requête à table unique.
  • Les recherches lat/lon devraient être plus rapides.
  • Permet une flexibilité dans les adresses qui peuvent ne pas être disponibles dans la table téléchargée.

Option 2:

Ajouter un champ zip uniquement, et pour toutes les recherches, tirer les données de la table téléchargée.

Avantages:

  • Normalisée - tous les enregistrements sont dans une table. Moins d'espace disque

Je recommanderais en fait d'ajouter les champs dans votre table gérée, et de garder la table téléchargée en tant que table de référence remplaçable en lecture seule.

0

Vous devez avoir la suite table design (entreprises/villes) -

CREATE TABLE `companies` (
    `companyID` smallint(5) unsigned NOT NULL AUTO_INCREMENT, 
    `companyName` varchar(150) NOT NULL DEFAULT '', 
    `address` varchar(300) NOT NULL DEFAULT '', 
    `cityID` smallint(5) NOT NULL, 
    `countryID` varchar(3) NOT NULL, 
    PRIMARY KEY (`companyID`), 
    KEY `cityID` (`cityID`), 
    KEY `countryID` (`countryID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 


CREATE TABLE `countries` (
    `countryID` varchar(3) NOT NULL DEFAULT '', 
    `countryName` varchar(52) NOT NULL DEFAULT '', 
    `localName` varchar(45) NOT NULL, 
    `webCode` varchar(2) NOT NULL, 
    `region` varchar(26) NOT NULL, 
    `continent` enum('Asia','Europe','North America','Africa', 
'Oceania','Antarctica','South America') NOT NULL, 
    PRIMARY KEY (`countryID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `cities` (
    `cityID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, 
    `cityName` varchar(50) NOT NULL, 
    `stateID` smallint(5) unsigned NOT NULL DEFAULT '0', 
    `countryID` varchar(3) NOT NULL DEFAULT '', 
    PRIMARY KEY (`cityID`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

Vous pouvez télécharger la liste complète des villes du monde/pays en format MySQL à partir d'ici -

http://myip.ms/info/cities_sql_database/World_Cities_SQL_Mysql_Database.html

.