【发布时间】:2011-08-08 04:26:24
【问题描述】:
通过阅读,我了解到实现多对多关系的方法是拥有一个单独的“路由表”。这是我如何做到这一点的一个例子:
CREATE TABLE Places (_id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE Tags (_id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE RoutingTable_PlacesTags (places_id INTEGER, tag_id INTEGER, FOREIGN KEY(places_id) REFERENCES Places(_id), FOREIGN KEY(tag_id) REFERENCES tags(_id));
在我的数据库助手类中,我希望有一个方法可以将光标返回到 Places 中具有特定标签的所有行,Cursor fetchPlaces(int tagID)。 (允许在应用内按标签过滤)
什么是正确/最佳的实施方式?
我打算查询 RoutingTable_PlacesTags,使用返回的游标为 Places 构建一个数组/ID 列表,然后使用另一个方法,我称之为传递一个返回所有 ID 的列表/数组。虽然我知道这会起作用,但我确定必须有一种更清洁的方法来做到这一点?
谢谢。
【问题讨论】:
-
考虑一下针对您拥有的规范化架构进行查询或针对非规范化表进行查询并在插入时做更多工作的成本。
-
@Garcon 嗨,我想知道我的回答是否令人满意,如果是,您是否愿意接受?
-
完成了,伙计。很抱歉没有早点这样做。
标签: java android sqlite database-design