2015-09-25 3 views
0

В настоящее время я пытаюсь создать приложение для Android, для моего Практического проекта по вычислительной технике A-Level, который хранит календарь/расписание пользователей в базе данных MySQL и может быть доступен при входе в приложение. Я хочу иметь возможность сделать это так, чтобы вы могли получать доступ к календарю с любого устройства до тех пор, пока вы вошли в систему, поэтому мне просто интересно, какой лучший способ сделать это будет таким, каким я думал до сих пор в конечном итоге будет использовать большие объемы пространства, и я хочу предотвратить это.Хранение нескольких календарей пользователей в таблице MySQL

В настоящее время я собираюсь создать таблицу, в которой хранятся все календари пользователей по их адресу электронной почты, после чего у меня будет поле, содержащее массив всех событий. Я знаю, что это очень неэффективно, и задавался вопросом, может ли кто-нибудь дать мне какие-либо идеи о том, как я мог это сделать, я был бы чрезвычайно благодарен.

Я также готов изменить способ сделать это, как я не застрял с использованием MySQL

ответ

1

Поскольку вы сказали, что вы не застряли с MySQL, почему бы вам не пойти на любой NoSQL БД.
Представление данных во многих базах данных NoSQL аналогично JSON. Ваши данные будут выглядеть

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

event1 и EVENT2 сами по себе могут быть 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 

или что-то в этом роде. Я предполагаю, что у вас есть способ аутентификации пользователей; может быть, это не в вашем дБ. В любом случае, я не думаю, что это проблема поиска идентификатора пользователя или электронной почты в качестве внешнего ключа, но использование user_id более классично.

Затем вы можете сделать

SELECT * FROM Event WHERE user_id = 4; 

и возвращает одну строку для каждого события, а не вам необходимости разобрать огромную строку.

Смежные вопросы