0

私は現在、A-Level Computing Practical Project のために Android アプリを作成しようとしています。これは、MySQL データベース内にユーザーのカレンダー/タイムテーブルを保存し、アプリにログインすることでアクセスできます。ログインしている限り、どのデバイスからでもカレンダーにアクセスできるようにしたいので、これを行うための最良の方法はこれまで考えてきた方法であると思っていました時間の経過とともに大量のスペースを使用することになるので、これを防ぎたいと思います。

現在、すべてのユーザーのカレンダーを電子メール アドレスで格納するテーブルを作成することを考えています。その後、すべてのイベントの配列を含むフィールドを作成します。これが非常に非効率的であることは承知しており、これを行う方法について誰かアイデアをいただけないかと思っていましたが、非常に感謝しています。

また、MySQL の使用にこだわっていないので、これを行う方法を変更したいと考えています。

4

2 に答える 2

2

あなたは 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"
               }
            ]
}

それらの多くは、パラメータに基づくこれらのオブジェクトのクエリをサポートしています。そこには多くの 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;

巨大な文字列を解析する必要がなく、イベントごとに 1 行が返されます。

于 2015-09-25T09:07:27.160 に答える