mySQL 中菜单的表结构
我需要有关表结构的建议。
我需要动态创建菜单。
会有超过3个菜单。
一些菜单将具有多级结构。
构建菜单表的最佳方式是什么?
- 所有菜单都在一张桌子上
- 每张桌子应该有一张桌子
- 还有其他吗?
请给我您动态生成菜单的经验或常见做法。
I need advices for a table structure.
I need to create menus dynamically.
There will be more than 3 menus.
Some of menus will have multi-level structures.
What is the best way to strucure the menu tables?
- All the menus are in one table
- Each table should have one table
- Any other??
Please give me your experience or common practices for dynamically generated menus please.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
假设您的菜单树不是很大,所谓的邻接列表将是
顶级菜单的最简单选项parent_id = 0
请参阅管理 MySQL 中的分层数据以供进一步讨论和其他选项
assuming your menu tree is not very large, the so-called adjacency list would be the simplest option
for top level menus parent_id = 0
see Managing Hierarchical Data in MySQL for further discussion and other options
您可以使用如下结构:
表名:菜单
id - 主键
menu_id - 对父菜单项的引用
title - 菜单的标题
(您需要的任何其他数据)
这样您就可以拥有无限的级别......
当然这不是唯一的方法......
You could use a structure like this:
table name: menu
id - primary key
menu_id - reference to the parent menu item
title - title of the menu
(any other data you need)
this way you can have unlimited levels ...
off course this is not the only way ...
对于大多数结构来说,使用parent_id应该足够了,但是如果您在性能方面遇到困难(关于深度递归),您还应该研究修改后的先序树遍历。
Using parent_id should be enough for most structures, however if you get stuck on performance (with regards to deep recursion), you should also research Modified Preorder Tree Traversal.
http://www.codeproject.com/Tips /354696/Dynamically-populate-menu-items-from-the-databas
这会很有帮助,
在 ASP.NET 中从数据库动态填充菜单项
http://www.codeproject.com/Tips/354696/Dynamically-populating-menu-items-from-the-databas
this will be helpful,
Dynamically populating menu items from the database in ASP.NET