Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SQLite数据库中存储音乐标签_Java_Android_Sql - Fatal编程技术网

Java 在SQLite数据库中存储音乐标签

Java 在SQLite数据库中存储音乐标签,java,android,sql,Java,Android,Sql,我正在寻找一种有效的方法,将音乐标签和评论存储在运行在Android API 8(Froyo 2.2)上的SQLite数据库中。它们应采用与Vorbis评论类似的格式 到目前为止,我考虑过: 存储在名为“fields”的列中的JSON对象的格式类似: +-----+----------------------------------------------------------------------+ | _id | fiel

我正在寻找一种有效的方法,将音乐标签和评论存储在运行在Android API 8(Froyo 2.2)上的SQLite数据库中。它们应采用与Vorbis评论类似的格式

到目前为止,我考虑过:

存储在名为“fields”的列中的JSON对象的格式类似:

+-----+----------------------------------------------------------------------+
| _id |                                  fields                              |
+-----+----------------------------------------------------------------------+
|   0 | {"artist":"Artist", "title":"Track", "album":"Album 123", "track":3} |
+-----+----------------------------------------------------------------------+
每个字段的各个列。这是google.android.music存储字段的方式,但我担心新曲目会添加太多列。资料来源:

另一方面,许多有经验的数据库设计者会争辩说,一个规范化良好的数据库在一个表中永远不需要超过100列。

最初我只是把它们放在一个盒子里

Map<String, String> and invoked toString(), adding it to 'fields' as follows:

+-----+--------------------------------------------------------------+
| _id |                            fields                            |
+-----+--------------------------------------------------------------+
|   0 | {title=Example Title, album=Example Album, artist=An Artist} |
+-----+--------------------------------------------------------------+
Map并调用toString(),将其添加到“字段”中,如下所示:
+-----+--------------------------------------------------------------+
|| id |字段|
+-----+--------------------------------------------------------------+
|0 |{title=示例标题,album=示例专辑,artist=艺术家}|
+-----+--------------------------------------------------------------+
这类似于JSON对象(第一个示例),但有额外的困难,例如将其解析回Java对象

我更喜欢选择任意数量的字段,所以我倾向于使用JSON对象。请告诉我有没有其他选择,或者在类似情况下你会怎么做。谢谢


我创建了ASCII表,每个字段都以单独的列开始。如果您以后需要几个用户定义的字段,您可以随时在以后添加json对象,但我猜您不需要它


单个字段有很多优点,包括对任何字段进行排序和筛选的能力。大多数sql数据库功能都是基于具有单个字段,因此如果您将字段组合在一起,则执行任何操作都会困难得多。

我强烈建议规范化您的数据-不要存储JSON等,因为这会大大降低您以后以任何有意义的方式查询该数据的能力(相信我,不规范化数据似乎是保证将来需要查询该数据的最可靠的方法,即使现在不需要)


再举第二个多列的例子,你会很高兴你这么做的。

你听说过NoSQl数据库吗?它非常适合你的需要,因为它将数据存储在JSON模型中,所以每个数据项都可以有任意字段。请查看

Map<String, String> and invoked toString(), adding it to 'fields' as follows:

+-----+--------------------------------------------------------------+
| _id |                            fields                            |
+-----+--------------------------------------------------------------+
|   0 | {title=Example Title, album=Example Album, artist=An Artist} |
+-----+--------------------------------------------------------------+