首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >标签DB结构-标签表使用一个联接和分组,或枢轴(联接)表使用两个联接?

标签DB结构-标签表使用一个联接和分组,或枢轴(联接)表使用两个联接?
EN

Software Engineering用户
提问于 2015-03-22 03:31:32
回答 1查看 817关注 0票数 0

我正在我的问答应用程序中实现标记。用户将被限制在应用程序可用的标签上,因此他们无法选择自己的标签。所以也许只有30-50个标签可以买到。不过,这种情况在未来可能会有所改变,但就目前而言,这是一笔交易。

我正在考虑两种选择:

备选案文1:

试题表: id、标题等

标签表: id、名称、question_id

这里的问题标签关系是问题有很多标签,标签属于问题。这样,只需要一个连接。但是,如果有多个用户选择例如“酒店”标签,那么这个标签表可能有许多重复的标签。在这种情况下,在获取标记列表时,我将在SELECT语句中按组进行分组。这样,只需要一个表联接。

备选方案2:

试题表: id、标题等

questions_tags表: id、question_id、tag_id

标签表: id,名称

这样可以消除重复,所以如果两个用户选择“酒店”表,那么“酒店”就不会存储两次。但是,它需要两个联接:问题(连接) questions_tags (连接)标记。

从性能的角度来看(在这两种情况下,不需要花费时间来使用数千个问题/标记来创建测试),哪一种比另一种更好?只有一个表联接的组通常比两个表联接要快吗?在那里可能有数千个问题,每个都有自己的几个标记?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-03-22 06:39:01

正如您所提到的,我将采用备选方案2来消除重复。我不确定这里的联接和分组对性能的影响,但我确实认为它是数据的更清晰的表示。

也就是说,我会考虑使用像Neo4J或土卫六这样的图形数据库。它简化了查询这些类型的关系。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/276998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档