2010-05-10 2 views
0

저는 Craigslist와 유사한 사이트에서 사용자가 다른 도시에 게시물을 게시하고 판매 할 수있는 사이트 작업을하고 있습니다. 내 사이트와 Craigslist의 한 가지 차이점은 페이지에 나열된 모든 도시를 보유하는 대신 우편 번호로 검색 할 수 있다는 것입니다.데이터베이스 레이아웃 도움말

각 도시의 도시, 주, 위도, 경도 및 우편 번호 정보가 모두 포함 된 ZIP 코드 데이터베이스가 이미 있습니다. 자, 내가 무엇을해야하는지, 도움이 필요한 부분을 다이빙하기 위해서 :

1.) 나는 우편 번호 데이터베이스를 가지고 있지만, 제 사용에는 완벽하게 설정되어 있지 않습니다. 얼마나 많은 다른 테이블을 사용해야합니까 어떻게 내가 그들을 연결해야합니다)

I : 내 데이터베이스 구조를 (예를 설정하는 데 도움이 필요)

2. (나는 http://zips.sourceforge.net/에서 무료로 인터넷 떨어져 그것을 다운로드) PHP와 MySQL을 사용하게 될 것입니다. 지금까지 데이터베이스가 설치 될 수있는 방법에

이 우리의 내 생각 : (. 나는이 비록 작동하는지 확실하지 않다)

시나리오 :

누군가가 홈페이지에 가서 "우편 번호를 입력하십시오."라고 알려줍니다. 예를 들어 그들이 "17241"을 입력하면이 우편 번호는 펜실베이니아에있는 Newville이라는 도시를위한 것입니다. 쿼리는 현재 데이터베이스 설정에서 다음과 같이 보입니다.

SELECT city FROM zip_codes WHERE zip = 17241; 

쿼리 결과는 "Newville"입니다. 여기에있는 문제는 사이트의 Newville 섹션에 뭔가를 게시하고 싶을 때입니다. Newville 도시 게시 용으로 전체 테이블 설정을해야합니다. 42,000 개 이상의 도시가 있습니다. 즉, 42,000 개가 넘는 테이블 (각 도시마다 하나씩)을 가져야 만한다는 뜻입니다. 그래서 그렇게해야한다는 것은 정신 나간 것입니다. 내가 생각하고있는 한 가지 방법은 "city_id"이라는 우편 번호 데이터베이스에 각 도시에 할당 된 고유 번호가 될 열을 추가하는 것이 었습니다. 예를 들어 Newville시에는 83의 city_id가 있습니다. 따라서 누군가 Newville시에 와서 목록을 올리면 다른 표가 하나만 필요합니다. 그 다른 하나의 테이블은 다음과 같이 설정 될 것입니다 :

CREATE TABLE postings (
posting_id INT NOT NULL AUTO_INCREMENT, 
for_sale LONGTEXT NULL, 
for_sale_date DATETIME NULL, 
for_sale_city_id INT NULL, 
jobs LONGTEXT NULL, 
jobs_date DATETIME NULL, 
jobs_city_id INT NULL, 
PRIMARY KEY(posting_id) 

);

합니다 (for_salejob_ 열 이름은 게시물의 유형의 범주는 사용자가 아래에 나열 할 수 있습니다.이 단지 그 두 가지보다 더 많은 범주 수 있지만 이것은 단지 예입니다됩니다.)

그래서 지금 누군가가 웹 사이트에 제공하고 판매 구매하지 뭔가를 찾을 때, 그들은 예를 들어 자신의 우편 번호, 17241을 입력 할 수 있으며이 실행되는 쿼리 인 경우 :

SELECT city, city_id FROM zip_codes WHERE zip = 17241; //Result: Newville 83 

(필자는 PHP를 사용할 예정입니다.

이제 "귀하의 카테고리를 선택하십시오."라고 알리는 메시지가 사용자에게 세션 및 쿠키에 입력되는 우편 번호를 저장합니다.

SELECT posting_id, for_sale, for_sale_date FROM postings WHERE for_sale_city_id = $_SESSION['zip_code']; 

윌이 작품 : 그들은 다음 카테고리 "판매 항목"을 선택하면이 실행하고 결과를 정렬하는 쿼리는?

그럼 이제 내 질문에 모두 동의합니까? 나는 그럴 것이라고 확신하지만이 일을 설정하고 뭔가를 간과하고 처음부터 다시 시작해야한다는 것을 깨닫고 싶지 않습니다. 모든 의견과 아이디어가 환영 받고 생각이있는 사람의 말을들을 것입니다. 나는이 목록의 모든 유형에 대한 열의 그룹이없는 것

+1

문제는 아직 걱정하지 마십시오. 먼저 기본 프로토 타입을 만든 다음 기능을 추가하십시오. :) – Konerak

답변

0
CREATE TABLE postings ( 
posting_id INT NOT NULL AUTO_INCREMENT, 
for_sale LONGTEXT NULL, 
for_sale_date DATETIME NULL, 
for_sale_city_id INT NULL, 
jobs LONGTEXT NULL, 
jobs_date DATETIME NULL, 
jobs_city_id INT NULL, 
PRIMARY KEY(posting_id) 

이것은 당신이 요청하지만,이 구조를 보는 것은 내가 당신이 (값을 선택할 수있는 그리고 룩업 테이블) 대신 일들이 방법을 수행하는 관련 테이블을 만들 필요가 알려줍니다 것이 아니다. 같은 것을 반복해서 테이블에 나열하는 경우 관련 테이블이 필요합니다. 나는 게시물과 Posting_type (두 개 이상의 유형이 있기 때문에 당신이 더 많은이 구조 같은 당 게시. 뭔가 나열 원하는있을 것입니다.

CREATE TABLE postings ( 
posting_id INT NOT NULL AUTO_INCREMENT, 
posting_description LONGTEXT NULL, 
Posting_date DATETIME NULL, 
PRIMARY KEY(posting_id) 

CREATE TABLE posting_categories ( 
posting_id INT NOT NULL, 
Category_id int 
Primary Key (posting_id, Category_id) 

CREATE TABLE Categories ( 
category_id INT NOT NULL AUTO_INCREMENT, 
category_description LONGTEXT NULL, 
PRIMARY KEY(category_id) 

이 당신에게 많은 카테고리를 추가 할 수있는 자유를 제공합니다 테이블을 변경하지 않고 원하는대로 구조체.

0

D,하지만 "posting_type"열 :

CREATE TABLE postings (
posting_id INT NOT NULL AUTO_INCREMENT, 
posting_type char(1),    <<<"J"=job,"S"=for sale, etc. 
posting_text LONGTEXT NULL, 
posting_date DATETIME NULL, 
posting_city_id INT NULL, 
PRIMARY KEY(posting_id) 
0

내가 여기없는 NoSQL 솔루션을 생각 하는데요 정말 사전에 도움을 주셔서 감사합니다 mongodb처럼. 도시 우편 관계와는 별도로 여기에 포착하고 싶은 실제 관계 제약이 있습니까?

답변이없는 것처럼 보입니다.

@Konerak이 맞습니다. 뭔가를 시작하고 거기에서 빌드하십시오.

관련 문제