为 Android 设备设计的 SQLite 表
SQLite tables design for Android devices
我很好奇在我的情况下是否需要 M:M 关系中的 table 关系。
结构如下所示:
Table Records
字段:id
、name
、tags
(作为字符串)。
Table Tags
字段:id
、tagName
。如您所见,它非常简单。
一个 Record
可以包含多个 Tags
。另一方面 Tag
可能属于少数 Records
.
案例是adding/removing/modifyingRecords
。那么我真的需要一些 'between' table 和 tag_id
和 record_id
吗?因为 Tags
table 很小。可能只在 Tags
table 端存储关系会更好?
我假设 Tags
table 中可能有 50k - 150k 条记录。
您如何看待这种解决方案的性能?数据库大小会更大——这是众所周知的事实。
数据库是 Android 8+ 设备上的 SQLite。
我总是建议您在处理与数据库的多对多关系时使用中间 table。它将防止在其他 table 中发生数据重复,这绝对是您应该优先考虑的事情,因为您的数据库中似乎有相当多的数据。
如果您还没有了解它,请继续阅读 database normalization
有什么用例? Android 数据库不是用来存储大量数据的。
将其存储在外部并让 android 设备执行 SQL 查询可能更有意义。
就标签/记录的外键而言,这取决于用例。如果我理解正确,您可以将 tagID 用作 Records 中的外键,但这同样取决于用例。
我很好奇在我的情况下是否需要 M:M 关系中的 table 关系。 结构如下所示:
Table Records
字段:id
、name
、tags
(作为字符串)。
Table Tags
字段:id
、tagName
。如您所见,它非常简单。
一个 Record
可以包含多个 Tags
。另一方面 Tag
可能属于少数 Records
.
案例是adding/removing/modifyingRecords
。那么我真的需要一些 'between' table 和 tag_id
和 record_id
吗?因为 Tags
table 很小。可能只在 Tags
table 端存储关系会更好?
我假设 Tags
table 中可能有 50k - 150k 条记录。
您如何看待这种解决方案的性能?数据库大小会更大——这是众所周知的事实。
数据库是 Android 8+ 设备上的 SQLite。
我总是建议您在处理与数据库的多对多关系时使用中间 table。它将防止在其他 table 中发生数据重复,这绝对是您应该优先考虑的事情,因为您的数据库中似乎有相当多的数据。
如果您还没有了解它,请继续阅读 database normalization
有什么用例? Android 数据库不是用来存储大量数据的。
将其存储在外部并让 android 设备执行 SQL 查询可能更有意义。
就标签/记录的外键而言,这取决于用例。如果我理解正确,您可以将 tagID 用作 Records 中的外键,但这同样取决于用例。