SQL多对多关系解决方案:中间表还是xml查询?

时间:2014-02-11 05:06:38

标签: mysql sql xml many-to-many relationship

我正在建立一个视频数据库 你知道的视频有很多标签。每个标签也与许多视频有关。

正常的解决方案是在每个标签和视频之间创建一个中间表记录关系 刚才,令我惊讶的是,我了解到mysql可以查询xml!所以我想我可以将视频的所有标签保存到视频表中的一列。

但我想知道这种方式是否更有效率。

1 个答案:

答案 0 :(得分:2)

XML非常适合存储非结构化和结构化数据。 MySQL非常适合存储结构化数据。这些数据是非结构化的吗?听起来像是一个简单的多对多关系。 XML也可以成为性能杀手,请参阅此Performance of MySql Xml functions?

这是一项设计决定,并没有严格的规则。我建议您测试两种方法并做出明智的选择。但是我发现MySQL在加入多对多关系方面比在解析XML方面表现得更好。

上次我检查过你也无法索引XML。哦,然后有一件事你要记住。膨胀...... XML文档可以膨胀数据库。例如,在关系设计中,您将存储标记Kung Fu一次,然后将该标记与正确的电影相关联。在XML方法中,您可能会存储<tag>Kung Fu</tag>数千次。

在您的设计中,您想要将所有xml添加到一列吗?这将是一个巨大的XML文档,并且在某些方面严重破坏性能我愿意打赌。我在回家的时候想了一下,如果你把所有标签都塞进一个XML列中,那么一个严重的后果就是更新和读取的争用也将是巨大的。如果每个电影都存储了带有标签的XML列,您将获得更好的性能。包含所有XML的一列将像一个持有公主的地牢守护者一样锁定。

就像我说每个人都有其缺点和优点。测试它们并学习新技能。