Как правильно поддерживать разные юниты в Room Database? - PullRequest
0 голосов
/ 21 октября 2018

Я использую Room Database в моем приложении для Android.Одна из колонок представляет объем напитка в миллилитрах [мл].Интересно, как правильно дать пользователю возможность выбирать / менять единицы измерения на [cl] или другие.Должен ли я сделать параметр настройки, чтобы выбрать единицу, а затем преобразовать все значения в моей базе данных?Должен ли я хранить, например, [мл], а затем конвертировать значения в зависимости от единиц измерения, выбранных пользователем?Какой самый эффективный способ?Что будет меньше потреблять ресурсов?Ребята, у вас есть хорошие примеры / учебники / фрагменты кода с открытым исходным кодом?

1 Ответ

0 голосов
/ 22 октября 2018

Это действительно зависит от объема и сложности ваших конверсий.Если у вас есть только одно значение (ML) и вам необходимо преобразовать его в другое значение (CL, OZ ...), то вы можете просто установить базовую единицу в БД и преобразовать значение в режиме реального времени непосредственно перед отображением их вuser.

Если вы чувствуете, что это выйдет из-под контроля, так как у вас будет много типов значений, и у вас будет проблема с отслеживанием всех из них, вы можете выполнить преобразование в БД, которое вызовет некоторыенакладные расходы на запросы выбора.например, у вас есть эта таблица:

ID  unit  val
--- ---   ---
1   ML    960
2   ML    4112
3   KG    70
4   KG    35
5   C     37

Вы всегда будете сохранять базовые блоки в БД одинаковыми, то есть вы не будете смешивать их с F, OZ и LBS.Вы можете конвертировать единицы в вашем запросе выбора:

SELECT id, unit, val, 
    case when unit = 'ML'  then val * 0.033 
         when unit = 'KG'  then val / 2.205 
         when unit = 'C'   then val * 9/5 + 32
         end as result
FROM tbl

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

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