Разработка базы данных MySQL для города / штата - PullRequest
0 голосов
/ 19 августа 2011

Я создаю сайт, где будет множество компаний и их компаний, поэтому у них будет свой адрес, город, штат, почтовый индекс и т. Д.

Я нашел этот сайт здесь: http://jesseprice.com/mysql-city-state-zip-latitude-longitude-database/, который имеет базу данных всех городов, штатов, почтовых индексов, округов, лат, длинных.

Я импортировал базу данных выше, поэтому у меня вопрос, как мне связать это с таблицей моих компаний? И когда компания регистрируется, я полагаю, что я мог бы сделать раскрытие для штата, а затем оно выпало бы из городов, найденных в этом штате, извлекая из базы данных, чтобы они выбирали из них, а затем почтовый индекс. Будет ли это работать? Значит, им не придется вводить это в себя?

Я просто немного озадачен тем, как это сделать правильно, и все это работает вместе.

Спасибо.

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Вариант 1:

Добавьте ВСЕ поля в свою таблицу адресов, ссылаясь на выбранную таблицу на дополнениях, помещая город, штат, почтовый индекс, округ, широту и длину в вашу таблицу.

Преимущества

  • Вы можете оказывать международную поддержку без обновления загруженной таблицы.
  • Вы можете обновить загруженную таблицу без потери данных (маловероятно)
  • Все данные доступны в одном запросе к одной таблице.
  • лат / лон поиск должен быть быстрее.
  • Обеспечивает гибкость в адресах, которые могут быть недоступны в загруженной таблице.

Вариант 2:

Добавьте только поле zip и для всех поисков извлеките данные из загруженной таблицы.

Преимущества

  • Нормализовано - все записи находятся в одной таблице. Меньше места на диске.

Я бы порекомендовал добавить поля в управляемую таблицу и сохранить загруженную таблицу в качестве заменяемой справочной таблицы только для чтения.

0 голосов
/ 08 апреля 2013

Вам нужен следующий дизайн таблицы (компании / города) -

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

.

...