2011-09-03 43 views
0

在聊天室中,我有一個機器人,可以收集諸如何時加入或離開的信息,並填寫數據庫,我希望統計人們通常會逗留多長時間以及哪些房間等。用戶存在的表設計?

沒有反映太多我已經完成了下表:

CREATE TABLE IF NOT EXISTS `users_login_logs` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `uid` int(11) NOT NULL, 
    `username` varchar(16) NOT NULL, 
    `room_id` int(11) NOT NULL DEFAULT '0', 
    `action` tinyint(1) NOT NULL DEFAULT '0', 
    `ip` int(10) unsigned NOT NULL DEFAULT '0', 
    `ts_register` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

行動是0進入房間和1離開。

經過一番運行它似乎並沒有看到這個佈局是我想要的最好的一個,例如計算用戶輸入/離開時會有點混亂,並且如果例如因爲w/e原因會產生錯誤的結果機器人不記錄或錯過任何數據。

我能做什麼使這個佈局quering用戶存在檢索用戶在房間X例如小時,DAYLY,每週和每月金額更可靠?

回答

1

我將創建沿着線的東西:

id - primary key 
user_id - foreign key 
room_id - foreign key 
time_entered - timestamp 
time_left - timestamp 
(other fields as needed) 

在用戶的登入,創建一個NULLtime_left一個新的記錄,在用戶signout,更新記錄並存儲time_left。當你的應用程序啓動,尋找一個NULLtime_left任何記錄 - 這將意味着應用程序崩潰/錯過了一些退出,需要關閉出來(不過你要處理的是)。

你可以得到的是誰在房間裏通過WHERE time_left IS NULL名單,並計算用戶多麼漫長的時間在網上實在是微不足道。

+0

我正要寫出來的同樣的建議。 – TehShrike