2014-11-05 68 views
0

我正在尋找關於多區域網站的數據庫結構的指導。使用MySQL的多區域市場數據庫設計

我設立一個網站,類似craigslist.com,這將允許用戶發佈增加了在他們的城市。我正在使用MySQL數據庫。

我想要區域作爲子文件夾鏈接到子域,例如ca.mysite.com轉到mysite.com/ca。

我的問題是如何管理數據庫(一個或多個)時,我想另一個城市添加到我的網站。

如果我使用爲每個城市不同的數據庫,那麼用戶將無法登錄到其他城市作爲自己的登錄信息被存儲在它們在用戶表中註冊的是DB的城市。

這可能不是一個問題,雖然,因爲內容是特定的城市,像Craigslist的。 但是,如果他們想聯繫其他城市的用戶,他們將無法做到。

此外,將有整體的重複的用戶名的地址和電子郵件地址,因爲用戶可以在註冊使用相同的電子郵件和用戶名的城市。

如果我用一個用戶表和一個消息表創建一箇中央數據庫,然後爲每個城市提供一個單獨的數據庫,並顯示所有城市的帖子,那麼當顯示基本信息時,我需要諮詢城市特定的數據庫加上存儲用戶信息的中央數據庫。

我也可以一切都存儲在一個數據庫中,並存儲在cookie登錄的用戶的位置,傳遞到一個會話變量,並顯示搜索結果等時使用該位置作爲數據庫查詢的一部分

但是,這不會爲每個查詢添加不必要的開銷嗎?

例如每一個搜索就必須有「和位置= $ USER_LOCATION」中添加的。

我真的不知道什麼是這裏最好的方法。

在此先感謝您的幫助。

回答

0

看來你仍然不清楚你想要建立的系統。在開始爲這個系統設計數據庫之前,請確保您有完整的系統需求描述。以下是一些可幫助您澄清的示例問題:

  • 您的網站提供哪些功能?
  • 用戶使用您的系統可以執行的所有操作是什麼?每個動作都有什麼限制嗎?

有關係統性能的其他一些問題: - 您期望使用系統的用戶數量是多少? - 應該爲每個動作提供多快和正確的服務?哪些操作經常使用?

沒有仔細瞭解系統需求就設計系統是沒有意義的。

+0

謝謝Hieu。由於問題已經很長,我不想列舉所有事情。我只是想要一些方向,使用一個真實世界的例子,比如craigslist,或者一個更小的例子,一個stackoverflow用戶可能有建設經驗。該網站的主要功能是發佈廣告(其中包括文字和多達8個圖像) 。我預計每個城市在任何時候都會有大約10,000個活躍的廣告。每個用戶都可以使用簡單的內部消息系統(所有消息都在'消息'表中處理)發送消息。他們還可以發佈廣告。這是首當其衝。關鍵是多城市。 – Aidan 2014-11-05 22:07:37

+0

如果您希望使用關係數據庫MySQL,我建議爲用戶使用一個表格(我們稱之爲用戶),一個城市(城市)表格,一個廣告(廣告)表格和一個消息表格(消息)。上述決定基於我的理解,即用戶只屬於一個城市,但他可以自由地在城市之間切換並在任何他想要的城市上發佈廣告。另外,用戶可以發送沒有建立友誼的消息。 – 2014-11-06 00:46:11

+0

是的,這當然是基本設置,但我要問的是,設置像Craigslist這樣的多個地區(城市)的網站的NORM是什麼?將搜索100,000個廣告(當我在一個分貝上有10個城市時),而不是10,000個廣告(當有10個城市和10個個人數據庫時)會更好,如果是這樣,我該如何維護關係中的站點之間的鏈接到用戶表? – Aidan 2014-11-06 01:20:14

0

因此,下面是示例數據庫設計以及它如何支持您的需求。

Cities(cityid, cname) 
Users(userid, fname, lname, cityid, currcityid) 
Messages(mid, senderid, receiverid, content) 
Adverts(aid, title, content, userid, cityid) 

當用戶切換城市,更新Users表中的行currcityid領域。

當用戶在城市發佈廣告時,向Adverts表插入一個新行。新行的useridcityid是相應用戶和城市的ID。

當用戶向系統中的其他用戶發送消息時,向Messages表中添加一行。新行的senderidreceiverid是相應用戶的ID。

查詢一個城市的所有廣告:SELECT * FROM Adverts WHERE cityid = $cityid

查詢用戶的所有廣告:SELECT * FROM Adverts WHERE userid = $userid

查詢所有在特定城市的用戶的廣告:SELECT * FROM Adverts WHERE cityid = $cityid AND userid = $userid

希望這有助於。

+0

那麼Craigslist如何組織各個城市的各個城市呢?我原以爲這是更復雜的。 – Aidan 2014-11-06 01:22:46

+0

Craiglist的設計當然更復雜,因爲它提供了很多功能。這只是一個示例設計,它足夠滿足您的要求。你有更多的要求,你可能有更微妙的設計。 – 2014-11-07 08:11:30