我在我的db 2表中有很多关系。
TAB_ARTICLES:{_ ID,TITLE,BODY,DATE}
TAB_TAG:{_ ID,NAME,COLOR,DATE}
TAB_ART_TAG:{_ ID,ARTICLE_ID,TAG_ID}
我需要填充一个ListView,一行用于文章,在每一行中我需要为链接到该文章的每个标签都有一个TextView。如下面的image
我认为有两种解决方案。
一个。我使用CursorAdapter,其光标仅在TAB_ARTICLE上制作,而且在每行中我都进行查询以连接其他2个表,以查找本文中涉及的所有标记。此解决方案需要大量的数据库访问。
湾我意识到一个临时表
TABLE_TEMP:{ARTICLE_TITLE,ARTICLE_BODY,ARTICLE_DATE,TAG1_NAME,TAG1_COLOR,TAG2_NAME,TAG2_COLOR,...}
我在此表上使用查询作为自定义适配器的游标。此解决方案使用更多空间,并且由于表格列而对可能显示的标记有限制。
还有其他方法吗?
答案 0 :(得分:0)
嗯,实际上,这是一个多标准的事情:时间,空间,更新,搜索等。所以没有单一的食谱。但是,很可能多个查询会使滚动陷入困境。更糟糕的是,只在某些设备上。临时表可能正常,也可能不正常,具体取决于数据的总体大小。您可能希望将此冗余表与主表保持同步,同时对两者进行更新。
最简单的权衡之一可能是将标记数据(XML,JSON,其他标记/分隔格式)的冗余TEXT / CLOB列添加到TAB_ARTICLES并使其与您的详细数据保持同步。顺便说一句,只有当您的查询证实了这一点时,您才真正需要M:M模式。否则,单个表就足够了。
同样,我首先列出并评估所有标准,并确定哪些维度真正需要可扩展并简化其余维度。