2011-06-10 73 views
1

我正在創建一個將其數據存儲在mysql數據庫中的調度程序web應用程序,現在我正試圖弄清楚設置表中的最佳方式。爲調度程序創建合適的數據庫設置

它將支持多個用戶,我希望它能夠處理一個龐大的用戶羣(比如說數千)。

每個用戶都會擁有一些與他們相關的常用數據(用戶名,密碼,偏好)以及他們的事件。

每個用戶都可以在任何地方從0到事件1000,具有信息的每個事件,如開始時間,結束時間,姓名等

所以會有很多這樣的: 用戶

  • 用戶名
  • 密碼
  • 喜好
  • 事件
    • 開始時間
    • 結束時間

另一件事是,我想每個人的事件是可查詢的。我希望能夠修改_ __用戶的活動#

我該如何設置它,使它不是非常複雜或非常慢?

回答

2
user table 
user_id, username, password, preferences 

將user_id設爲主鍵。

event table 
event_id, user_id, name, start_time, end_time 

使{event_id,user_id}成爲主鍵。

這應該怎麼辦?如果您希望成千上萬個事件可以重複但與不同用戶有關,則可以創建一個沒有user_id的事件表,然後創建一個新表以保存{event_id,user_id}組合。 PS:不要以純文本形式存儲密碼;考慮將偏好移至單獨的表格。

+0

所以你說我會有一個活動表,每個人的活動都會集中在那裏?這會不必要地慢,因爲每個用戶的所有事件都必須查看以找到一個事件? – JustcallmeDrago 2011-06-10 04:06:10

+0

如果您將所有內容放在一張表中,是不是會在每個事件中複製用戶名,密碼和首選項?不,將所有事件放在不同的表格中不會減慢任何速度。當您用user_id查找事件表時,您只會獲得屬於該用戶的事件。因爲它是主鍵的一部分,所以它不應該很慢。 – Lobo 2011-06-10 04:11:08

+0

不,我只是不確定你意味着多少個表。我知道這只是一個,而不是每個用戶活動的表格。所以我可以爲某個用戶的所有事件做一個select語句,也可以爲某個用戶使用您的想法創建一個特定的事件。這使用兩個「主鍵」列嗎? – JustcallmeDrago 2011-06-10 04:29:22

相關問題