Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.1k views
in Technique[技术] by (71.8m points)

关于无限级分类的思考

对于无限级分类的设计网上有很多,但都有或多或少的问题,MySQL5.7新加的JSON字段类型支持json字符串搜索,于是设计如下方案:

mysql json相关操作函数如下 https://dev.mysql.com/doc/ref...

test表

id       int   主键
store_id int   门店ID
data     json  类别组装的json

json的格式可以根据自己的需求进行丰富

{
    "uid":"唯一ID",
    "name": "标题",
    "parent_path": "",
    "children": [
        {
            "uid": "唯一ID",
            "name": "标题下的其他标题",
            "parent_path": "标题 / ",
        }
    ]
}

需求,无限级分类通常用于以下场景

  1. 导航菜单
    select data->>'$[*].name' as from test;
  2. 面包屑导航 /home/aa/bb/cc/dd (查找祖先节点)
    思路:

  3. 省/城市/镇/村/xx/xx 地点的层级 (祖先树)

    1. 这种的直接拿data就可以

这种设计查询 修改都是对一条记录做变更,相对其他的方案 是以空间换时间的做法,但mysql自身的json操作还是不太够强大,,操作起来比较复杂

或者找专门的nosql数据库比如mongodb做这种设计好点?

有没有可以指点的?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

之前做过一个无限极分类的,我的思路是从数据库中把所有菜单取出来,然后用代码做递归处理

博客地址:1.5s~0.02s,期间我们可以做些什么?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...