在MySQL表中存储多个用户日历

时间:2015-09-25 08:42:34

标签: java android mysql calendar timetable

我目前正在尝试为我的A-Level Computing Practical Project创建一个Android应用程序,该应用程序将用户日历/时间表存储在MySQL数据库中,并可通过登录应用程序进行访问。我想能够做到这一点,只要你登录就可以从任何设备访问日历,所以我只是想知道最好的方法是什么,这是我迄今为止想到的方式随着时间的推移,最终会占用大量空间,我希望能够防止这种情况发生。

目前我正在考虑创建一个按照电子邮件地址存储所有用户日历的表,然后我会有一个包含所有事件数组的字段。我知道这是非常低效的,并且想知道是否有人能给我任何关于如何做到这一点的想法我将非常感激。

我也愿意改变这样做的方法,因为我不会使用MySQL

2 个答案:

答案 0 :(得分:1)

既然你说你没有坚持MySQL,为什么不去找任何NoSQL DB。
许多NoSQL DB中的数据表示类似于JSON。 您的数据看起来像是

{
 "email" : "test@example.com",
 "events" : [event1, event2 ....]
}

event1和event2本身可以是JSON对象,

{
 "email" : "test@example.com",
 "events" : [
              {
                "name" : "a1",
                "type" : "t1",
                "time" : "date1"
               },
              {
                "name" : "a2",
                "type" : "t2",
                "time" : "date2"
               }
            ]
}

他们中的许多人支持基于params查询这些对象。那里有很多NoSQL DB。我个人建议去MongoDB(https://www.mongodb.org/about/)。它很简单,并且有很好的文档。

答案 1 :(得分: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;

并为每个事件返回一行,而不是需要解析一个巨大的字符串。