2011-08-19 6 views
0

나는 수많은 회사와 사업체 목록이있는 사이트를 구축하고 있으므로 주소, 도시, 주, 우편 번호 등을 갖게 될 것입니다.시/주에 대한 MySQL 데이터베이스 설계

발견했습니다. 이 웹 사이트는 여기에 있습니다 : http://jesseprice.com/mysql-city-state-zip-latitude-longitude-database/ 모든 도시, 주, 우편 번호, 카운티, 위도, 경도의 데이터베이스가 있습니다.

위의 데이터베이스를 가져 왔으므로 제 질문은 어떻게 회사 테이블에 연결합니까? 그리고 회사가 등록 할 때, 나는 주를 위해 드롭 다운을 할 수 있다고 생각합니다. 그런 다음 그 상태에서 발견 된 도시로 데이터베이스에서 끌어 내려서, 그 다음에 우편 번호를 선택합니다. 그게 효과가 있니? 그래서 그들은 그것을 스스로 입력 할 필요가 없을 것입니다.

나는 이것을 제대로 수행하는 방법에 대해 약간 혼란스럽고 모든 것이 함께 작동합니다.

감사합니다.

+0

두 개의 – pif

+0

사이의 관계를 설정하기 위해 기본 키를 회사 테이블의 외래 키로 사용해보십시오. 따라서 zip_code는 방금 다운로드 한 데이터베이스의 기본 키입니다. 내 회사 테이블에, 내가 뭘 붙인거야? – Drew

+0

@Drew를 사용하면 회사 테이블에 우편 번호가 포함 된 다른 필드가 필요합니다. 우편 번호는 우편 번호 조회 테이블과 비교할 수 있습니다 –

답변

1

옵션 1 :

는, 추가에 선택한 테이블을 참조하는 테이블에 도시, 주, 우편 번호, 카운티, 위도 및 긴 배치, 주소 테이블에 모든 필드를 추가합니다.

장점 :

  • 당신은 다운로드 테이블에 업데이트를하지 않고 국제 지원을 제공 할 수 있습니다.
  • 데이터 손실없이 다운로드 한 테이블을 업데이트 할 수 있습니다. (있을 법하지 않음)
  • 모든 데이터는 단일 테이블 쿼리에서 사용할 수 있습니다.
  • 위도/경도 검색이 빨라야합니다.
  • 다운로드 한 테이블에서 사용할 수없는 주소에 유연성을 허용합니다. 옵션 2

:

만 우편 필드를 추가하고 모든 조회에 다운로드 한 테이블에서 데이터를 가져.

장점 :

  • 정상화 - 모든 레코드는 하나 개의 테이블에 있습니다. 드라이브 공간이 적습니다.

실제로 관리되는 테이블에 필드를 추가하고 다운로드 한 테이블을 읽기 전용의 교체 가능한 참조 테이블로 유지하는 것이 좋습니다.

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

합니다.