对于无限级分类的设计网上有很多,但都有或多或少的问题,MySQL5.7新加的JSON字段类型支持json字符串搜索,于是设计如下方案:
test表
id int 主键
store_id int 门店ID
data json 类别组装的json
json的格式可以根据自己的需求进行丰富
{
"uid":"唯一ID",
"name": "标题",
"parent_path": "",
"children": [
{
"uid": "唯一ID",
"name": "标题下的其他标题",
"parent_path": "标题 / ",
}
]
}
需求,无限级分类通常用于以下场景
- 导航菜单
select data->>'$[*].name' as from test;
面包屑导航 /home/aa/bb/cc/dd (查找祖先节点)
思路:
省/城市/镇/村/xx/xx 地点的层级 (祖先树)
- 这种的直接拿data就可以
这种设计查询 修改都是对一条记录做变更,相对其他的方案 是以空间换时间的做法,但mysql自身的json操作还是不太够强大,,操作起来比较复杂
或者找专门的nosql数据库比如mongodb做这种设计好点?
有没有可以指点的?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…