微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android ROOM-如何在对象内插入对象即,闪存卡甲板上有问题列表

如何解决Android ROOM-如何在对象内插入对象即,闪存卡甲板上有问题列表

按照标题, 我对如何实现以下内容感到困惑: FlashCard卡片组具有标题,截止日期(两个日期均已实施)。 但是,它也包含卡列表。 卡由问答组成。

像这样,Deck(标题,截止日期,抽认卡)。卡(问题,答案)

我一直在考虑为此使用专用的类型转换器。然而, 它也会变得凌乱。

例如, 我当时正在考虑使用一个类型转换器,将所有现有的问题和答案收集到一个连续的csv字符串中。然后,当转换回对象时,它将对此进行转换。

方法似乎很复杂。因此,我想知道对于这种事情,最佳实践本身是什么。

谢谢...

解决方法

我确实认为您的问题是数据库架构问题。因此,基本上有2种解决方案,具体取决于您要如何使用卡。

1。如果该卡在任何卡组中均未重复或每张卡都是唯一的:

然后您可以使用以下架构:-enter image description here

要查找特定卡组的所有卡,请假设ID为1的“卡组1”。您可以使用SQL查询"SELECT * FROM Cards WHERE Deck_id=1;"

优点:

  • 您只需维护两个表。
  • 可能很容易编写SQL查询。

缺点

  • 您不能重复使用任何卡。所有卡都是唯一的。
  • 可能需要更多存储空间。

2。如果卡片重复出现,或者您想重复使用卡片,则:

然后您可以使用以下架构:-enter image description here

要查找特定卡组的所有卡,请假设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 举报,一经查实,本站将立刻删除。