2015-09-25 53 views
0

我目前正在嘗試爲我的A-Level Computing Practical Project創建一個Android應用程序,該應用程序在MySQL數據庫中存儲用戶日曆/時間表,並且可以通過登錄到應用程序進行訪問。我希望能夠做到這一點,以便您可以從任何設備訪問日曆,只要您已經登錄,所以我只是想知道做到這一點的最佳方式是如何到目前爲止我已經想到的方式最終會隨着時間的推移使用大量的空間,我希望能夠避免這種情況。在MySQL表中存儲多個用戶日曆

目前我正在考慮創建一個表,其中存儲所有的用戶日曆的電子郵件地址,然後我將有一個字段,其中包含所有事件的數組。我知道這是非常低效的,想知道是否有人可以告訴我如何做到這一點,我會非常感激。

我也願意改變這樣做,因爲我不使用MySQL

回答

1

卡住既然你說,你是不是堅持了MySQL的,你爲什麼不走任何的NoSQL數據庫的方法。
許多NoSQL DB中的數據表示與JSON類似。 您的數據看起來就像是

{ 
"email" : "[email protected]", 
"events" : [event1, event2 ....] 
} 

事件1和事件2本身可以是JSON對象,

{ 
"email" : "[email protected]", 
"events" : [ 
       { 
       "name" : "a1", 
       "type" : "t1", 
       "time" : "date1" 
       }, 
       { 
       "name" : "a2", 
       "type" : "t2", 
       "time" : "date2" 
       } 
      ] 
} 

他們中的許多支持查詢基於PARAMS這些對象。那裏有很多NoSQL DB。我個人建議去MongoDB(https://www.mongodb.org/about/)。它很簡單,並有一個很好的文檔。

1

我的MySQL架構對於這個問題會是這樣

User: id int, email str, very_securely_hashed_password str 
Event: id int, user_id integer, title str, description str, time str 

或類似的東西。我假設你有一些認證用戶的方式;也許它不在你的分貝。無論哪種方式,我認爲用戶的ID或電子郵件作爲外鍵查找並不是問題,但使用user_id更爲經典。

然後,你可以做

SELECT * FROM Event WHERE user_id = 4; 

,並返回一個排的每一個事件,而不是你需要分析一個巨大的字符串。