假设我有一个Citizen
表(列:rowid
、name
)和一个Race
表(列:rowid
、name
)。这些是世界公民,种族是“高加索人”、“非洲裔美国人”等。rowid
s 是 SQLite 提供的默认列。
有数十亿公民。比赛很少,比如说50。
将每个公民与其种族联系起来的 SQLite 方式是什么?
在标准的编程语言中,我会简单地为每个种族附加一个包含所有相应citizenrowid
的集合。这将允许我做各种事情:
- 给定一个种族,快速找到它的所有成员。
- 给定一个公民,快速遍历种族(因为种族很少)并查看集合并找到他或她的种族。
- 添加公民很简单。我只是把新的
rowid
放入他或她的比赛中。 - 同样,删除一个公民也很简单。
我怎样才能在 SQLite 中做到这一点?鉴于 SQLite 只有 B-tree 索引,这会很棘手吗?也许这种数据一开始就不属于 SQLite 数据库?