最近在朋友的邀请下注册了知乎,确实是一个不错的开放平台。
这里想来讨论一下知乎的“话题”结构。
简单分析一下:
- 1个话题可以有多个之话题,也可以有多个父话题。
我的理解这个一个类似N叉树的结构。任意只话题可以有多个线路到达顶级节点,每个话题也存在多个子节点。 - 限制:如果a是b的子节点,那么在b节点的上面就不能够在添加a节点,反之也是。
那么,这样的技术实现。数据库表应该如何设计呢?表结构初定3个字段
表:话题s
ID 名称
1 a
2 b
3 c
4 d
表:话题-父s
ID 父ID
2 1
3 1
4 2
4 3
a
/ \
b c
\ /
d
a直接子:b c
b直接子:d
c直接子:d
知乎话题是采用“有根无循环的有向图(Rooted Acyclic Directed Graph)”结构做的。