android - 适用于 Android 设备的 SQLite 表设计
问题描述
我很好奇在我的情况下是否需要来自 M:M 关系的关系表。结构如下所示:
Records
带有字段的表: id
, name
, tags
(作为字符串)。
Tags
带有字段的表: id
, tagName
。如您所见,这很简单。
一个Record
可以包含多个Tags
. 另一方面,一个人Tag
可能属于少数人Records
。
案例是添加/删除/修改Records
。那么我真的需要一些带有tag_id
and的“中间”表record_id
吗?因为Tags
桌子很小。Tags
可能只在表侧存储关系会更好吗?
我假设表中可能有 50k - 150k 条记录Tags
。您如何看待这种解决方案的性能?数据库大小会更大——这是众所周知的事实。DB 是 Android 8+ 设备上的 SQLite。
解决方案
在处理与数据库的多对多关系时,我总是建议您使用中间表。它将防止在其他表中发生数据重复,这绝对是您应该优先考虑的事情,因为您的数据库中似乎会有相当多的数据。
如果您还没有了解它,请阅读数据库规范化
推荐阅读
- ios - 如果我不使用 Cocoapods,如何将 dSYM 上传到 crashlytics?
- azure - Azure 应用注册 - 范围和权限
- python - 在存储为 netcdf 文件集的较大数据集上使用 dask reduce 函数的正确方法
- google-cloud-platform - GCP - 将服务帐户模拟为用户
- javascript - 当我向下滚动页面时,如何让不同的背景图像亮起?
- scala - 通过在 azure databrick 中运行 head 命令导致的文字编号无效
- java - Set method for Java Calendar only works if I do a print of it
- lua - 为什么 Lua 表索引不能为零?
- amazon-web-services - 使用 AWS Go 开发工具包的动态清单
- python - 使用 pytest 对返回值的 void 方法进行单元测试