Как структурировать модель в базе данных области, и это нормально, что я использую Date в качестве primaryKey? - PullRequest
0 голосов
/ 06 июля 2018

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

Конечным результатом является то, что когда я получаю данные из базы данных, я вижу данные за последний месяц (так что, вероятно, составьте сумму за каждый день прошлого месяца), то же самое за месяц до этого и за предыдущий, и т. д. (я добавил изображение, как оно должно выглядеть в течение месяца)

enter image description here

У меня вопрос, как мне создать модель?

Моя идея для day:

date -> primaryKey

data -> Int / String

Но могу ли я как-то хранить его по месяцам в базе данных, чтобы мне не приходилось каждый раз вносить сумму? Как массив / словарь со всеми днями месяца. Так можно ли добавить поле, которое будет примерно таким, когда закончится месяц? Или создайте другую модель с массивом day?

месяца -> [day]?

Кроме того, могу ли я / это нормально, что я использую Date в качестве основного ключа? (Я знаю, что первичный ключ области - String, но я мог бы преобразовать Date в String)

Всё могло бы помочь. Я действительно не знаю с чего начать

1 Ответ

0 голосов
/ 06 июля 2018

Я бы не использовал дату в качестве первичного ключа. Значения первичного ключа должны быть уникальными, даты не обязательно должны быть уникальными. Маловероятно, что две задачи будут происходить в одно и то же время, но не невозможно. A UUID (UUID().uuidString) может удовлетворить ваши потребности для этого лучше. Вероятность столкновения UUID невероятно мала.

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

Другой вариант - создать объект Month. Каждая точка данных связывается с объектом месяца. Этот объект месяца может добавить данные дня к итогу при добавлении и сохранить их в базе данных. Таким образом, вы можете запросить объект месяца, чтобы определить сумму. Из-за этого вам необходимо синхронизировать эту сумму и добавить в базу данных больше данных, которые можно определить другими способами.

Ваш вопрос очень общий, поэтому я не могу дать много конкретных ответов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...