2013-10-10 51 views
1

我正在爲每個用戶存儲他們的任務編寫一個Web應用程序。 (像一個待辦事項申請)。任務將存儲在一個表中(例如:userstasks)。爲每個用戶創建表?

哪一個更好?

1- userstasks表中有一個名爲user_id的列,它定義了誰創建的任務?

2-一個新的表(例如usernametasks)將用於存儲其所有任務每個註冊用戶創建?

P.S .:有很多的用戶!

回答

1

總是開始與工作,並堅持下去,直到它的證明是一個性能問題最簡單的事情。你在談論#2時被稱爲「不成熟優化」。當#1出現嚴重的性能問題時,您只能沿着這條路走下去。

當您跨不同用戶分割數據時,跨所有用戶查詢的能力將嚴重降低。對於所有意圖,用戶將生活在不同的世界。報告幾乎是不可能的。

對於大多數應用程序有很多的讀取,數百萬記錄不是問題。這是需要特別關注的重寫應用程序,還是像Reddit或Twitter這樣的大規模應用程序。由於你沒有製作其中的一個,所以首先要堅持正確的標準化結構。

「許多用戶」可能意味着數十或數十萬。在適當調整的MySQL實例上,這不是什麼大問題。如果您需要更多的擴展,請啓動一些只讀的輔助服務器來分散負載或查看使用MySQL羣集。

1

假設某個任務不能有多個用戶,我會在短期內使用選項1(一個名爲具有user_id外鍵的任務的表)。如果是這樣,那麼你需要一個JOIN表。檢查設置一個實際的外鍵,這將促進數據本身的參照完整性。

+0

Re。 '很多用戶',除非你擁有數以百萬計的用戶,這與許多可用的生產數據庫無關。這就是說你應該閱讀如何正確索引你的表格。 – brez

相關問題