0

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

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

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

4

2 回答 2

2

既然你说你没有被 MySQL 困住,那你为什么不去使用任何 NoSQL DB。
许多 NoSQL 数据库中的数据表示类似于 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"
               }
            ]
}

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

于 2015-09-25T09:02:09.313 回答
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;

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

于 2015-09-25T09:07:27.160 回答