菜单类别树在数据库中怎么设计

菜单类别树在数据库中怎么设计,第1张

树型结构数据在数据库中常见的表现方式有两种:

1. 层级代码

2. 存储父ID

例如:

1:

create table tb_menu (

code varchar(32), name varchar(32)

)

insert into tb_menu ('01','File')

insert into tb_menu ('02','Edit')

insert into tb_menu ('03','Tool')

insert into tb_menu ('04','Help')

insert into tb_menu('0101','Open')

insert into tb_menu('0102','Close')

insert into tb_menu('0103','New')

insert into tb_menu('0104','Save')

insert into tb_menu('0201','Undo')

insert into tb_menu('0202','Redo')

insert into tb_menu('0203','Copy')

insert into tb_menu('0204','Cut')

insert into tb_menu('0205','Paste')

insert into tb_menu('0301','Option')

insert into tb_menu('0302','Extend')

2:

create table tb_menu (

id int, name varchar(32), parentid int

)

insert into tb_menu (1,'File', 0)

insert into tb_menu (2,'Edit',0)

insert into tb_menu (3,'Tool',0)

insert into tb_menu (4,'Help',0)

insert into tb_menu(5,'Open',1)

insert into tb_menu(6,'Close',1)

insert into tb_menu(7,'New',1)

insert into tb_menu(8,'Save',1)

insert into tb_menu(9,'Undo',2)

insert into tb_menu(10,'Redo',2)

insert into tb_menu(11,'Copy',2)

insert into tb_menu(12,'Cut',2)

insert into tb_menu(13,'Paste',2)

insert into tb_menu(14,'Option',3)

insert into tb_menu(15,'Extend',3)

第一种:单表。

分别为 id、菜单名称、子菜单id列表

id:菜单的唯一编号

子菜单id列表:用逗号(或其他分隔符)分割的多个id的字符串,再由程序中进行处理,分割出多个id;

优点:查询速度非常快。

缺点:不利于维护和拓展,在进行菜单项排序时需要再多写代码进行处理。

第二种:单表内连接。

列分别为 id、菜单名称、父菜单id

根节点的父菜单id为null或者0等一个可以唯一标志的。在查询时进行表内连接查询;

优点:利于表结构的维护和拓展,并且符合设计范式;

缺点:在查询时会造成一些麻烦,并且性能上会受到影响。

当然还有很多其他的方法,这里只例举2个比较常用的方法。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6803155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存