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为null或者0等一个可以唯一标志的。在查询时进行表内连接查询;
优点:利于表结构的维护和拓展,并且符合设计范式;
缺点:在查询时会造成一些麻烦,并且性能上会受到影响。
当然还有很多其他的方法,这里只例举2个比较常用的方法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)