Sql 基于层次结构对对象进行分类的好模式是什么
我有一个视频列表,我想按层次分类Sql 基于层次结构对对象进行分类的好模式是什么,sql,mysql,database,database-design,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 bot
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.
这是一个合适的设计吗?我认为你的设计相当不错,有一些小的评论和一个大的,但是 小评论:
- video_类别不需要id,它的列已经形成了唯一的复合主键。在这里添加一个额外的id允许您存储重复的数据
- 尽量避免使用“id”作为列;调用视频表“video_id”中的id列,以便更容易记住可以在其他表中加入它的列(模式越大、越复杂,这就越有用)
这只是一个两级继承权还是更多?甚至没有限制?您可能需要格外小心,以确保您可以选择类别C(可能是C+C_1+C_2+C_1_1等)下的所有视频。这不是一个2级层次结构,肯定是多级的,“C”的行为将与您描述的相同。