为 Android 设备设计的 SQLite 表

SQLite tables design for Android devices

我很好奇在我的情况下是否需要 M:M 关系中的 table 关系。 结构如下所示:

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

Table Tags 字段:idtagName。如您所见,它非常简单。

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

案例是adding/removing/modifyingRecords。那么我真的需要一些 'between' table 和 tag_idrecord_id 吗?因为 Tags table 很小。可能只在 Tags table 端存储关系会更好?

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

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

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

有什么用例? Android 数据库不是用来存储大量数据的。

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

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