【问题标题】:SQLite tables design for Android devices适用于 Android 设备的 SQLite 表设计
【发布时间】:2020-12-14 16:21:52
【问题描述】:

我很好奇在我的情况下是否需要来自 M:M 关系的关系表。 结构如下:

Records 包含字段:idnametags(作为字符串)。

Tags 包含字段:idtagName。如您所见,这很简单。

一个Record 可以包含多个Tags。另一方面,Tag 可能属于少数Records

案例是添加/删除/修改Records。那么我真的需要一些带有tag_idrecord_id 的“中间”表吗?因为Tags 表很小。将关系仅存储在Tags 表侧会更好吗?

我假设Tags 表中可能有 50k 到 150k 条记录。 您如何看待这种解决方案的性能?数据库大小会更大——这是众所周知的事实。 DB 是 Android 8+ 设备上的 SQLite。

【问题讨论】:

    标签: android sql sqlite android-sqlite


    【解决方案1】:

    我总是建议您在处理与数据库的多对多关系时使用中间表。它将防止在其他表中发生数据重复,这绝对是您应该优先考虑的事情,因为您的数据库中似乎会有相当多的数据。

    如果您还没有了解它,请阅读database normalization

    【讨论】:

    • 谢谢!我听说了。但是阅读文章和观看视频绝对是个好主意
    【解决方案2】:

    什么用例? Android 数据库不会存储过多的数据。

    将其存储在外部并让 android 设备执行 SQL 查询可能更有意义。

    就标签/记录的外键而言,这取决于用例。如果我理解正确,您可以在 Records 中使用 tagID 作为外键,但这又取决于用例。

    【讨论】:

    • 用户将添加带有一定数量标签的记录。不同记录中的标签可能相同。然后,我将需要检查所选标签的使用次数。在这个项目中,我没有机会在外部存储数据库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 1970-01-01
    相关资源
    最近更新 更多