• 504

树状结构的数据表如何设计?

这棵树(非二叉树)是这样的:

  • 有唯一根节点
  • 每个节点只有一个父节点
  • 每个节点有多个子节点

现在我的表是这样的:

node_id node_name parent_id

但是这样的设计,在查询是很麻烦,很难快速的查找某个节点下所有子节点,或者查询这个节点的族谱路径,等等。

在网上找到了【树形结构的数据库表Schema设计】这篇文章,讲的很好,主要思想是为每个节点设置左右值。当时还以为是我要的,但是,后来发现这必须是一棵二叉树,最后还是让我郁闷了。

问题就是有没有更好的设计?

阅读 47.6k
评论
    9 个回答
    • 19
    CREATE TABLE `sns_tags_tree_tbl` (
      `id` int(10) unsigned NOT NULL DEFAULT '0',
      `pid` int(10) unsigned DEFAULT '0',
      `tree_root` int(10) unsigned DEFAULT '0',
      `tree_level` tinyint(3) unsigned DEFAULT '0',
      PRIMARY KEY (`id`),
      KEY `pid` (`pid`,`tree_root`,`tree_level`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
      相似问题
      推荐文章