2012-03-09 90 views
1

我在僞社交應用程序中。
我們有3個表:處理時間軸(MySQL)

Users: _id_, username, password, email 
Movies: _id_, title, synopsis 
Followers: __(#user_id1, #user_id2)__, timestamp 
U_Movies: __(#user_id, #movie_id)__, rating, timestamp 

我們要到時間軸添加到我們的應用程序,簡單的時間表,與最近的活動。我們不需要自定義時間表(無消息),只需要活動。

什麼是「創建」此時間軸的最佳方式?
是否會創建一個包含所有活動的「時間軸」表(在存在INSERT INTO followersU_Movies?時執行INSERT INTO timeline),或者獲得最新的關注者活動(帶有時間戳,我認爲這將是沉重,如果有許多條目和用戶),另一個建議?

謝謝你的幫助!

回答

1

我最近做了類似的事情。你的第一個想法可能是最好的,將數據添加到一個新表(通過觸發器或其他插入)

假設你沒有做和更新或刪除表上它應該很好地擴展。您也可以根據日期範圍在MySQL中對錶進行分區。這將保持幾年後的表現(我的第一個版本在4年內有1.4億行,並且仍然很快)

編輯 - 檢測更改。

使用TRIGGER路線 - Before update將允許您比較列,然後在時間軸中插入以便爲您提供歷史更改。

CREATE TRIGGER upd_check BEFORE UPDATE ON account 
    FOR EACH ROW 
    BEGIN 
    IF NEW.rating != OLD.rating THEN 
     INSERT INTO timeline .. 
    END IF; 
END; 
+0

觸發(我會發現)似乎是最好的(和/或2個插入),但事情是,我將不得不跟蹤更改。例如,當有人想要更改數據時,客戶將發送給我「rating = INT&review = TEXT」,然後我將更新數據庫,即使它是「評論」相同的數據。有沒有辦法知道哪些列已更新?然後,我會在'時間線'中插入類型,新評級/評論......感謝您的幫助。 – Max13 2012-03-09 15:23:57

1

您可以創建TRIGGER,它將在更改時插入到第三個表中。

查看mysql文檔中的TRIGGERS在線。

+0

感謝,似乎是一個不錯的主意 – Max13 2012-03-09 15:19:53