2

我的 db 2 表中有一个多对多关系。

TAB_ARTICLES:{_ID、标题、正文、日期}

TAB_TAG:{_ID、姓名、颜色、日期}

TAB_ART_TAG:{_ID、ARTICLE_ID、TAG_ID}

我需要填充一个 ListView,一行用于文章,并且在每一行中,我需要为链接到该文章的每个标签创建一个 TextView。像下

我认为2个解决方案。

一种。我使用 CursorAdapter 和仅在 TAB_ARTICLE 上制作的游标,然后在每一行中我执行查询以加入其他 2 个表,以查找本文中相关的所有标签。此解决方案需要大量数据库访问。

湾。我意识到一个临时表

TABLE_TEMP:{ARTICLE_TITLE, ARTICLE_BODY, ARTICLE_DATE, TAG1_NAME, TAG1_COLOR, TAG2_NAME, TAG2_COLOR, ...}

我使用该表上的查询作为自定义适配器的光标。此解决方案使用更多空间,并且由于表格列而对可能显示的标签有限制。

还有其他方法吗?

4

1 回答 1

0

嗯,实际上,这是一个多标准的东西:时间、空间、更新、搜索等。所以没有单一的配方。但是,很可能多个查询会阻碍滚动。更糟糕的是,仅在某些设备上。根据数据的整体大小,临时表可能合适,也可能不合适。您可能希望使这个冗余表与主表保持同步,同时对两者进行更新。

最简单的权衡之一可能是将带有标记数据(XML、JSON、其他标记/分隔格式)的冗余 TEXT/CLOB 列添加到 TAB_ARTICLES 并使其与您的详细数据保持同步。顺便说一句,只有当您的查询证实了这一点时,您才真正需要 M:M 模式。否则,单个表就足够了。

同样,我会首先列出并评估所有标准,然后决定哪些维度真正需要可扩展并简化其余的维度。

于 2012-10-26T10:42:50.500 回答