我正在製作一個網站,允許用戶在桌面上註冊並記錄他們的日常活動。他們的活動將存儲在MySQL數據庫中,並將使用jQuery/PHP進行顯示。構建用於記錄用戶大量動態數據的數據庫
下面是數據類型的示例圖片存儲
的問題是,我不知道如何正確地存儲這種類型的信息。
我原本打算爲每個用戶創建一個表,名爲$userid . "_activies"
或沿着這些行的東西,列id, user_id, type, location, duration, date
。然後爲了讀取數據,我會簡單地檢查他們想要的日期並加載所有符合該日期的活動。這工作正常,但我不知道如何正確更新現有的條目。
例如:在上面的圖片中,如果你想改變「廚房」行的持續時間,你將如何去檢測它是否已經存在於數據庫中?你不能簡單地在2012年11月18日檢查包含「清潔」和「廚房」的行,然後覆蓋它,因爲廚房可能在清潔部分出現多次(例如,他們在去清潔廚房後第二次清洗廚房浴室)。
我本來想過讓每個<tr>
必須等於該加載它,那麼當它的時間來保存數據的數據id
領域的ID,檢查排id
已經存在,覆蓋它。這對我的問題似乎是一個糟糕的解決方法。
我希望能夠完全清除整天的原始數據,並在保存時使用表中包含的任何內容重寫它。只刪除表中與表的日期相匹配的每一行,然後寫入新的信息是否合理?或者有更好的方式來存儲這些信息。例如,我應該爲每個用戶每天創建一個新表嗎?這似乎很多表...
我很難過,任何人都可以分享任何想法建立數據庫的方式?
那麼主要問題是每天更新數據。例如,如果每一天都有自己的活動表,那麼我可以刪除整個表並用新數據重新創建它,但我不確定這是不是很好的做法,並且會創建大量的表(1每個用戶每天的表)。 – Sandoichi
另外,在你的解決方案中,你會爲每個用戶創建一個單獨的活動表嗎?示例:用戶332將讀/寫表:activity_332?或者每個用戶只有一個巨大的活動表? (我認爲一張桌子會變得太大,這可能會減慢查詢的速度嗎?) – Sandoichi
也許我並沒有正確理解你的問題。我不認爲每天都需要自己的桌子,除非你真的打算爲每天更新的人們繪製強硬的線條。如果用戶錯過了一兩天怎麼辦?你想讓他們回到一個完全空白的屏幕?將它們的最後一天的活動存儲到再次更新之前似乎更有意義。在這種情況下,一旦user_332登錄並記錄他12月13日的第一個活動,您可以簡單地刪除user_332的所有記錄,其中activity_date不等於12月13日。 –