【问题标题】:In Android SQLite, when the number of columns is more, the database size with the same data is higher在Android SQLite中,列数越多,相同数据的数据库大小越大
【发布时间】:2020-01-14 11:04:58
【问题描述】:

在 Android 应用程序中,

配置 1:

有以下 3 列的 SQLite:
列 1:图像 1
列 2:图像 2
列3:Image3~Image4~Image5~Image6~Image7~Image8~Image9~Image10

其中 Image3 到 Image10 由'~' 分隔

配置 2:

现在,如果我将 Image4 的单独列分配给 Image10,那么将有 10 列具有相同的数据

问题:

配置 2 的数据库大小将大于 配置 1 的数据库大小

当数据库中的行数更多时,大小之间的差异更大且相当大

为什么?

【问题讨论】:

  • 对于配置 2,相对于第一个配置,您的列数更多
  • 你想问什么。请简单解释一下..
  • 是的,更多的列,但相同的数据只有3列,换句话说,两种配置的数据库中的数据大小相同,但数据库的大小不同,为什么?

标签: android sqlite


【解决方案1】:

评论太长了。

1) 在关系数据库中存储分隔列表是almost always a very bad idea

2) 跨越列的值稍微好一点;基本上,当且仅当每个用户的图像数量真正固定时才有意义,例如每个用户恰好有 10 张图像。否则,你会在这里和那里得到空值;如果您需要为每个用户处理超过 10 张图像,那么您需要更改数据库的结构,这不是您想要的

3) 我强烈建议有一个单独的表来将每个用户的图像存储在行(而不是列)中,其中一个外部引用原始表中的相应用户;这是 1-N 关系的规范化设计,更加灵活、易于维护和查询

当然,添加列或表会产生存储开销,但规范化方法的优势应在很大程度上克服这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多