我正在Android应用中使用Room数据库。列之一代表以毫升[ml]为单位的饮料量。我想知道给用户选择/将单位更改为[cl]或其他单位的正确方法是什么。 我应该选择一个设置选项来选择单位,然后转换数据库中的所有值吗? 我应该存储例如[ml],然后根据用户选择的单位转换值吗? 最有效的方法是什么?什么会减少资源消耗? 你们有一些好的开源示例/教程/代码片段吗?
答案 0 :(得分:0)
这实际上取决于转换的数量和复杂性。 如果您只有一个值(ML)并需要将其转换为另一个值(CL,OZ ...),则只需将基本单位设置为DB,并在将其显示为用户。
如果您觉得这将变得一发不可收拾,因为您将拥有许多值类型,并且在跟踪所有这些值类型时会遇到问题,则可以在数据库中进行转换,这将在选择查询上造成一些开销。 例如,您有此表:
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或应用程序本身完成工作。 就我个人而言,我不会在同一张表上混合使用单位,因为这会增加一层复杂性,以便以后对它们进行排序,比较和检索。 希望有帮助。