我正在寻找一种有效的方法来将音乐标签和评论存储在运行在 Android API 8 (Froyo 2.2) 上的 SQLite 数据库中。它们应该采用与 Vorbis 注释类似的格式。
到目前为止,我已经考虑过:
存储在名为“字段”的列中的 JSON 对象,格式类似:
+-----+----------------------------------------------------------------------+
| _id | fields |
+-----+----------------------------------------------------------------------+
| 0 | {"artist":"Artist", "title":"Track", "album":"Album 123", "track":3} |
+-----+----------------------------------------------------------------------+
每个字段的单独列。这是 google.android.music 存储字段的方式,但我担心新曲目会添加太多列。资源:
另一方面,许多有经验的数据库设计人员会争辩说,一个规范化的数据库永远不会需要超过 100 个表中的列。 http://www.sqlite.org/limits.html
+-----+-------------+----------------+------------+
| _id | artist | album | title |
+-----+-------------+----------------+------------+
| 0 | Test Artist | Test Album 123 | Test Title |
| 1 | An Artist | This Album | This Title |
+-----+-------------+----------------+------------+
最初我只是把它们放在一个
Map<String, String> and invoked toString(), adding it to 'fields' as follows:
+-----+--------------------------------------------------------------+
| _id | fields |
+-----+--------------------------------------------------------------+
| 0 | {title=Example Title, album=Example Album, artist=An Artist} |
+-----+--------------------------------------------------------------+
这类似于 JSON 对象(第一个示例),但增加了一些困难,例如将其解析回 Java 对象。
我宁愿选择任意数量的字段,所以我倾向于 JSON 对象。请告诉我任何替代选择,或者您在类似情况下会做什么。谢谢!
我使用http://www.sensefulsolutions.com/2010/10/format-text-as-table.html创建了 ASCII 表