我正在類似於Craigslist的網站上工作,用戶可以在不同城市進行發佈和銷售物品。我的網站和Craigslist之間的一個區別是,您將能夠通過郵政編碼進行搜索,而不是將所有城市列在頁面上。數據庫佈局幫助
我已經有了郵政編碼數據庫,它包含了每個城市的所有城市,州,緯度,經度和郵政編碼信息。好的,所以要深入瞭解我需要完成的工作以及我需要幫助的內容:
1.)雖然我有ZIP Code數據庫,但它並沒有完全適合我的使用。 (我下載了互聯網的免費從http://zips.sourceforge.net/)
2)我需要幫助建立我的數據庫結構(例如:我有多少種不同的表應該使用,我應該如何將它們鏈接)
我將使用PHP和MySQL。
我們的這些我的想法至今上的數據庫如何可以設置:(我不知道這是否會工作,雖然)
場景:
有人去主頁和它會告訴他們,「請輸入您的郵政編碼。」例如,如果他們輸入「17241」,則此郵政編碼適用於位於賓夕法尼亞州的Newville市。在當前數據庫設置下查詢將如下所示:
SELECT city FROM zip_codes WHERE zip = 17241;
查詢的結果是「Newville」。現在我在這裏看到的問題是,當他們想要在網站的Newville部分發布某些內容時,我必須爲Newville城市發佈一個完整的表格設置。這裏有超過42,000個城市,這意味着我將不得不擁有超過42,000張桌子(每個城市一張桌子),這樣就不得不這樣做。我想這樣做的一種方式是在郵政編碼數據庫中添加一個名爲「city_id」的列,該列將是分配給每個城市的唯一編號。舉例來說,紐維爾市的city_id爲83.因此,如果有人來紐維爾市上市,我只需要另一張桌子。那一個其他的表將會像這樣設置:
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)
);
(該供銷售和job_列名稱是類型貼子的類別的用戶將能夠下單,將會有更多種類的不僅僅是這兩個但這只是舉例)。
所以現在,當,當有人談到網站,他們正在尋找的東西買與不賣,他們可以輸入自己的郵政編碼,17241,例如,這是將要運行的查詢:
SELECT city, city_id FROM zip_codes WHERE zip = 17241; //Result: Newville 83
(請注意,我將使用PHP存儲用戶在SESSIONS和Cookies中輸入的郵政編碼以便在整個網站上記住它們)
現在它會告訴他們「請選擇您的類別」。如果他們選擇類別「待售物品」,那麼這是運行和結果排序的查詢:
SELECT posting_id, for_sale, for_sale_date FROM postings WHERE for_sale_city_id = $_SESSION['zip_code'];
將這項工作?
所以現在我的問題是每個人都會這樣做嗎?我很確定它會,但我不想把這件事情設置,並意識到我忽略了一些東西,必須從頭開始。歡迎任何意見和想法,我會傾聽任何有想法的人。我真的很感謝提前的幫助:d
這將工作,不要擔心麻煩,先建立一個工作基本原型,然後添加功能:) – Konerak 2010-05-10 19:33:51