К некоторым пунктам в комментариях я думаю, какие данные вы сохраняете, зависит от потребности в вашем приложении, и я подойду к каждому набору данных через линзу прецедента.
Для первого использованияслучай, данные о настроении, похоже, что имеет смысл видеть эти данные с течением времени (т.е. кажется, что за последний месяц мое настроение улучшалось), а также извлекать отдельные события (например, в дату x,Я съел гамбургер, как это повлияло на мое настроение при следующей записи настроения после даты x).
Если бы это был я, я бы создал таблицу настроения с двумя атрибутами:
Эта таблица по существу будет служить таблицей определения.Здесь вы можете добавить атрибуты, специфичные для настроения (например, описание).
Затем я бы создал таблицу MoodHistory со следующими атрибутами: - Метка времени - MoodId - IsCurrent (Boolean)
Перед вамивведите настроение в вашем приложении, ОБНОВЛЕНИЕ MoodHistory SET IsCurrent = 0, ГДЕ IsCurrent = 1, а затем вставьте новую запись с IsCurrent = 1. Эта структура нормализуется и путем индексации или разбиения по столбцу IsCurrent (и, честно говоря, даже без индексации /разделение), даже если ваша таблица становится достаточно большой, вы всегда сможете супер быстро запросить текущее настроение.
Для вашего второго варианта использования это весьма зависит не только от вашего запланированного использования, но и от того, гдеданные поступают из (особенно для маршрутов).Я не уверен, как вы планируете группировать местоположения в «маршруты», но если вы укажете в комментариях, я с радостью добавлю к своему ответу.
Для местоположений, однако, я предполагаю, что вы 'снимок местоположения в течение некоторого установленного интервала времени.Я бы создал таблицу LocationSnapshot, структурированную аналогично таблице MoodHistory:
Затем я создал бы таблицу MoodHistory со следующими атрибутами:
- Отметка времени
- Широта
- Долгота
- IsCurrent Обрабатывая данные IsCurrent аналогично данным MoodHistory, захватить последнее введенное местоположение должно быть довольно просто.Вы также можете выполнить дополнительную обработку, если хотите избежать дублирования.По сути, перед обновлением IsCurrent запросите строку, в которой IsCurrent = 1. Затем сравните эти записи Широта и Долгота с вашими новыми Широтой и Долготой, прежде чем вставлять новую запись.Если есть какие-либо изменения, перейдите к вставке, в противном случае нет необходимости вставлять новую запись.
Вы также можете создать таблицу известных местоположений, например KnownLocation:
Присоединение к этой таблице ВКЛ. Широта и Долгота должны сообщать вам, когда вы проводите время в определенном месте, скажем «Домой»."против" работы "