0

我正在建立一个网站,其中将有一堆公司及其业务列表,因此他们将有他们的地址、城市、州、邮政编码等。

我在这里找到了这个网站:http: //jesseprice.com/mysql-city-state-zip-latitude-longitude-database/它有一个包含所有城市、州、邮编、县、纬度、经度的数据库。

我导入了上面的数据库,所以我的问题是如何将它连接到我的公司表?当一家公司注册时,我想我可以为该州做一个下拉列表,然后它会下拉到该州从数据库中找到的城市,以便他们从中选择,然后是邮政编码。那行得通吗?所以他们不必自己输入?

我只是有点困惑如何正确地做到这一点,并让它一起工作。

谢谢你。

4

2 回答 2

1

选项1:

将所有字段添加到您的地址表中,在添加时引用选定的表,将城市、州、邮编、县、纬度和经度放入您的表中。

优点

  • 您无需更新下载的表格即可提供国际支持。
  • 您可以更新下载的表而不会丢失数据(不太可能)
  • 所有数据都在一个单表查询中可用。
  • 纬度/经度搜索应该更快。
  • 允许在下载的表格中可能不可用的地址的灵活性。

选项 2:

仅添加一个 zip 字段,对于所有查找,从下载的表中提取数据。

优点

  • 规范化 - 所有记录都在一个表中。更少的驱动空间。

我实际上建议将字段添加到您的托管表中,并将下载的表保留为只读、可替换的参考表。

于 2011-08-19T05:23:37.240 回答
0

您需要有以下表格设计(公司/城市) -

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;

您可以从这里下载 mysql 格式的世界城市/国家的完整列表 -

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

.

于 2013-04-08T13:24:34.887 回答