在androidsqlite中,列数越多,具有相同数据的数据库大小越大

在androidsqlite中,列数越多,具有相同数据的数据库大小越大,android,sqlite,Android,Sqlite,在Android应用程序中 配置1: 有三列SQLite,如下所示: 第1列:图像1 第2列:图像2 第3列:图像3~图像4~图像5~图像6~图像7~图像8~图像9~图像10 其中,图像3到图像10由“~”分隔 配置2: 现在,如果我为Image4分配单独的列到Image10,那么将有10列具有相同的数据 问题: 配置2的数据库大小将大于配置1的数据库大小 当数据库中的行数较多时,大小之间的差异较大 为什么?这篇评论太长了 1) 在关系数据库中存储分隔列表是非常困难的 2) 跨越列的值稍微好一些

在Android应用程序中

配置1:

有三列SQLite,如下所示:
第1列:图像1
第2列:图像2
第3列:图像3~图像4~图像5~图像6~图像7~图像8~图像9~图像10

其中,图像3到图像10由
“~”分隔

配置2:

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

问题:

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

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


为什么?

这篇评论太长了

1) 在关系数据库中存储分隔列表是非常困难的

2) 跨越列的值稍微好一些;基本上,当且仅当每个用户的图像数量是固定的,就像每个用户正好有10个图像一样,这才有意义。否则,您将在这里和那里得到空值;如果您需要为每个用户处理10个以上的图像,那么您需要改变数据库的结构,这不是您想要的

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


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

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