首页 > 解决方案 > 适用于 Android 设备的 SQLite 表设计

问题描述

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

Records带有字段的表: id, name, tags(作为字符串)。

Tags带有字段的表: id, tagName。如您所见,这很简单。

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

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

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

标签: androidsqlsqliteandroid-sqlite

解决方案


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

如果您还没有了解它,请阅读数据库规范化


推荐阅读