一、树型结构的实际应用问题
程序员在实际开发中经常会遇到这样的问题,需要查找存在递归关系的数据,而这种数据一般采用树状结构或者层级方式存储,举一个实际例子。
例如:在外卖系统或者论坛网站上,一个人会发表评论,其他人可以针对这个人的评论进行回复,由此可以延伸出多级评论,针对这种场景你可能会通过设计出如下数据库来解决这个问题。
像这种最常见的解决方案就是添加一个parent_id字段,引用同一张表的评论字段,这样的设计叫邻接表,通过无限次递归可以遍历出无限深度的子节点评论,但是此时你的sql要写成这样:
此时n级评论就要增加n级表连接,sql查询连接是有上限的,当评论的层级过多,无法写出这样的查询条件,其中sql server 2005、oracle 11g、IBM DB2、PostgreSQL8.4都支持了使用查询表达式来进行递归查询。但mysql无法使用这种表达式,但是mysql也可以通过定义、执行函数来达成同样的效果。