如何解决Android ROOM-如何在对象内插入对象即,闪存卡甲板上有问题列表
按照标题, 我对如何实现以下内容感到困惑: FlashCard卡片组具有标题,截止日期(两个日期均已实施)。 但是,它也包含卡列表。 卡由问答组成。
像这样,Deck(标题,截止日期,抽认卡)。卡(问题,答案)
我一直在考虑为此使用专用的类型转换器。然而, 它也会变得凌乱。
例如, 我当时正在考虑使用一个类型转换器,将所有现有的问题和答案收集到一个连续的csv字符串中。然后,当转换回对象时,它将对此进行转换。
此方法似乎很复杂。因此,我想知道对于这种事情,最佳实践本身是什么。
谢谢...
解决方法
我确实认为您的问题是数据库架构问题。因此,基本上有2种解决方案,具体取决于您要如何使用卡。
1。如果该卡在任何卡组中均未重复或每张卡都是唯一的:
要查找特定卡组的所有卡,请假设ID为1的“卡组1”。您可以使用SQL查询"SELECT * FROM Cards WHERE Deck_id=1;"
优点:
- 您只需维护两个表。
- 可能很容易编写SQL查询。
缺点
- 您不能重复使用任何卡。所有卡都是唯一的。
- 可能需要更多存储空间。
2。如果卡片重复出现,或者您想重复使用卡片,则:
要查找特定卡组的所有卡,请假设ID为1的“卡组1”。您可以使用SQL查询"SELECT * FROM Cards WHERE id IN(SELECT Cards_id FROM Deck_has_Cards WHERE Deck_id=1);"
优点:
- 节省大量存储空间(如果卡不是唯一的)。
缺点
- 查询变得很难写
我建议您检查比我编写的查询更好的SQL查询。
如果您使用的是会议室数据库,请使用@Query(<SQL>)...
(我不会在此提供许多教程方面进行扩展)。
我不建议您尝试存储卡的方式,因为它将无法与A.C.I.D.一起使用。数据库的属性。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。