创建新帖子时,我希望用户选择一个或多个标签(最多 5 个)链接到该帖子。我有帖子、标签和 tagPosts 表。性能方面,在 tagposts (TagId1 到 TagId5) 中创建 5 个字段是否更好,其中每个 post_id 在此表中都有一行与 5 个标签链接(当然,这些标签将通过 5 个“tagposts.tagid 链接到标签表” = 标签.id”)。或者最好为每个 post_id Tag_id 映射创建一个新行?
1 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
首先,您无法真正衡量表格的“效率”。您可以衡量查询的性能。
其次,即使从空间的角度来看,将值存储在一行中也可能不是一种胜利。存储被值占用,即使它们是NULL. 在适当的连接/关联表中,不会有行。因此,如果您平均每个帖子有一个或两个标签,那么关联表可能会使用更少的空间。
第三,在单独的列中管理标签很痛苦。要搜索一个标签值,您必须执行以下操作:
where @tag in (tag1, tag2, tag3, tag4, tag5)
你猜怎么着?那不会使用任何索引。
然后,如果您想确保所有标签都是唯一的?您可以使用唯一约束吗?呃,没有。尝试使用以下逻辑的触发器:
(tag1 <> tag2 or tag1 is null or tag2 is null) and
(tag1 <> tag3 or tag1 is null or tag3 is null) and
. . .
-- there are lots of combinations so give yourself some time
这些是关联表通常是最佳方法的几个原因。在某些情况下,使用不同的列是一个很好的解决方案,但默认值应该是正确的连接/关联表。
- 1 回答
- 0 关注
- 142 浏览
添加回答
举报
0/150
提交
取消