什么是基于层次结构对对象进行分类的好模式

时间:2011-01-28 07:39:10

标签: sql mysql database database-design

我有一个视频列表,我想在层次结构中进行分类

category (id, name, parent)
video (id, name)
video_category (id, video_id, category_id)

我的类别看起来像这样

/A/B/C/[C1, C2]
/D/E/F/[D1, D2]

因此,如果我的视频分类如下

v1 categorized as C1
v2 categorized as C2

If I view underneath "C" it should show me both videos.

这是一个合适的设计吗?

1 个答案:

答案 0 :(得分:1)

我认为你的设计非常好,有一些小评论和一个很大但是。

小评论:

  • video_category不需要id,其列已形成唯一的复合主键。在此处添加额外ID可以存储重复数据。
  • 尽量避免使用'id'作为列;调用视频表'video_id'中的id列,这样就可以更容易地记住其他表中哪些列可以加入它(这会越大越有用,你的架构会变得越来越复杂)。

大但是但是MySQL不支持先前的连接,这是一个问题,因为这是遍历这样的树的最直观方式。通过实现更复杂的模式,或者通过迭代而不是递归地构造树遍历过程,可以绕过它。您可能会发现以下链接很有用:

http://forums.mysql.com/read.php?98,38047,38089#msg-38089