【问题标题】:Storing multiple users calendars in MySQL table在 MySQL 表中存储多个用户日历
【发布时间】:2015-09-25 08:42:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: java android mysql calendar timetable


    【解决方案1】:

    既然你说你不会被 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/)。它很简单,并且有很好的文档。

    【讨论】:

      【解决方案2】:

      我的 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;
      

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

      【讨论】:

        猜你喜欢
        • 2012-09-04
        • 1970-01-01
        • 2016-06-14
        • 2016-03-21
        • 1970-01-01
        • 2013-01-08
        • 2020-06-25
        • 1970-01-01
        • 2016-01-07
        相关资源
        最近更新 更多