`

无限级菜单数据库设计

    博客分类:
  • J2EE
 
阅读更多
第一种方案:

表为两张,一张分类表,一张信息表。
表1:
`ID` int(10),
`cID` tinyint(3) ,
`title` varchar(255),
表2:
`cID` tinyint(3) ,
`parentID` tinyint(3), 
`order` tinyint(3) ,
`name` varchar(255),

这样可以根据cID = parentID来判断上一级内容,运用递归至最顶层 。

第二种方案:

设置parentID为varchar类型,将父类id都集中在这个字段里,用符号隔开,比如:1,3,6
这样可以比较容易得到各上级分类的ID,而且在查询分类下的信息的时候,可以使用如:Select * From information Where cID Like "1,3%"。不过在添加分类和转移分类的时候操作将非常麻烦。

以上两种方案地址:http://search.phpres.com/phpres-top2007,98552.html

第三种方案:

每级分类递增两位数字,这样,每级分类的数目限定在100个之间,分类方法主要为编码法;
示例:
一级分类:01,02,03
二级分类:0101,0102,0103,0201,0202........
三级分类:010101,010102,010103,010104..........

数据库查询时使用 like '01%'就可得到一级分类01下的所有子分类,非常方便!
如果要列出所有分类的树型结构,只需用一条语句select * from pro_class order by code,再稍微处理一下就可。(其中,pro_class为产品分类表,code为类别编码)。


设计的数据库结构如下:

id:                    类别id,主键
classname:         类名
classcode:          类别编码
parent:             父id
left_child:          最左孩子id(或第一个孩子)
right_sibling:      右兄弟id
layer:                层级(第一级类别为1,第2级类别2,以此类推)



以上三种的缺点?优点?还有其它方案吗?

转自:http://www.oschina.net/question/1092_256
分享到:
评论

相关推荐

    艾恩JS无限级菜单树-ASP带数据库及菜单管理版

    【艾恩JS无限级菜单树】是一个基于JavaScript的ASP应用程序,专为构建具有数据库支持的无限层级菜单设计。这个解决方案提供了完整的菜单管理功能,允许用户动态地创建、编辑和删除菜单项,使得网站的导航结构更加...

    AienTree-艾恩JS无限级菜单树

    **AienTree 艾恩JS无限级菜单树详解** 在网页开发中,尤其是在后台管理系统中,无限级菜单树是一种常见的交互元素,它能够清晰地展示层级关系,并且支持动态加载,大大提升了用户体验。AienTree 是一个专门用于实现...

    无限级树形菜单(Sql数据库)_.NET GUI控件.7z

    1. **数据库设计**:首先,你需要一个能存储层级关系的数据库表。通常,这可以通过自引用的方式实现,即每个记录都有一个父节点ID字段,指向其上级节点。 2. **查询数据**:使用SQL语句,如递归查询或者层次查询...

    实现基于 Ajax 的无限级菜单源代码

    为了实现无限级菜单,我们需要设计一个类来表示菜单项,并存储其相关信息: ```java class Menu { private int mId; private String name; private String url; private int father; private boolean hasSub; ...

    无限级树形菜单(Sql数据库)

    在IT领域,尤其是在Web开发中,无限级树形菜单是一种常见的数据结构,它用于构建具有层级关系的...这个主题涵盖了数据库设计、SQL查询技巧、后端编程以及前端开发等多个IT领域的知识,对于开发复杂的Web应用尤其重要。

    C#无限级菜单绝对实用

    总的来说,C#中的无限级菜单实现涉及数据结构设计、动态操作实现、UI展示和数据库交互等多个层面。理解和掌握这些知识点,对于提升软件的用户体验和可维护性具有重要意义。通过不断实践和优化,开发者可以构建出高效...

    ASP树型无限级菜单源码

    综上所述,ASP树型无限级菜单源码是基于ASP技术实现的,结合数据库存储、递归算法、前端交互等多种技术,为用户提供直观且易于操作的多级菜单展示。同时,具备后台管理功能,使得对菜单的维护更加便捷。在实际应用中...

    存储及查询无限级分类的数据库设计

    总的来说,这种无限级分类的数据库设计方案既简单又实用,适用于许多需要层级关系的数据场景,如网站导航菜单、组织架构、文章分类等。它允许灵活的扩展性,同时保持查询效率,是处理类似问题的常用方法。然而,对于...

    JS无限级树状菜单_ 可读数据库很精练

    这个“JS无限级树状菜单”是专为这种需求设计的,它具有读取数据库和权限判断的功能,适用于复杂的权限管理系统。 无限级树状菜单的核心在于递归地创建和展示节点,每个节点可以有任意数量的子节点,形成一个无限制...

    asp简单的select级联菜单带数据库

    当用户在前端选择一个菜单项并提交请求时,`action.asp`接收到请求,根据用户的选择查询数据库,然后返回新的级联菜单数据。这通常涉及到SQL查询语句,例如`SELECT * FROM table WHERE parent_id = selected_id`,...

    无限级树形菜单(Sql数据库).zip

    在SQL数据库中实现无限级树形菜单是一项常见的需求,涉及到数据库设计、查询优化以及前端展现等多个技术领域。 首先,我们来讨论数据库的设计。为了存储无限级树形菜单,常见的方法是采用自引用的方式,即每个菜单...

    基于ajax、jquery 通用无限级联菜单

    基于ajax、jquery 通用无限级联菜单; 引用场景: 国家省市级联菜单、任何二级级联菜单、三级菜单、四级菜单、五.... 使用范例:详细参阅District.Selector.js文件 以国家地理信息为例: $(function () { var ...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    在IT行业中,构建一个无限级树形菜单是常见的需求,特别是在Web应用中,用于组织和展示层次结构的数据。本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来...

    实现基于 Ajax 的无限级菜单

    为了实现无限级菜单,首先需要设计合适的数据结构来存储菜单项。例如,可以定义一个`Menu`类: ```java class Menu { private int mId; private String name; // 其他属性和get/set方法... } ``` 以及一个`...

    js+C#开发无限级select菜单

    在IT行业中,无限级菜单是一种常见的用户界面设计,它允许用户在多个层级间导航,尤其适用于组织结构复杂或数据层次丰富的应用。在这个项目中,我们将探讨如何使用JavaScript(js)和C#这两种语言来实现一个无限级的...

    无限级级联菜单的多种演示源码

    在IT行业中,构建用户界面时,级联菜单(Cascading Menu)是一种常见的设计元素,尤其是在网站导航中。级联菜单允许用户通过逐级展开子菜单来浏览和选择深层结构的内容,尤其适用于组织大量分类数据。当我们谈论...

    坏孩子无限级树型菜单_aspx开发教程.rar

    在实现无限级树形菜单时,数据库设计是首要环节。你需要一个可以存储父节点与子节点关系的表。表结构可能包括ID、父ID、节点名称等字段,这样可以通过查询找出每个节点的所有子节点。例如,你可以创建一个名为`Tree...

    无限级联动菜单(AJAX源码)

    无限级联动菜单是一种常见的网页交互设计,主要用于导航或者数据筛选,常见于网站的地区选择、类别筛选等场景。AJAX(Asynchronous JavaScript and XML)技术是实现这种菜单动态加载的关键,它允许页面在不重新加载...

    wpf mvvm动态加载菜单,无限级

    总结来说,实现WPF MVVM动态加载无限级菜单涉及的主要知识点有:MVVM设计模式,数据绑定,ObservableCollection,HierarchicalDataTemplate,以及使用INotifyPropertyChanged接口进行数据更新。通过这些技术,我们...

    Ajax打造仿WINDWS无限级菜单树(asp.net2.0+C#+Access)

    综上所述,这个项目通过ASP.NET 2.0和C#处理服务器端逻辑,利用Ajax实现动态加载,Access数据库存储菜单数据,构建了一个模拟Windows文件夹结构的无限级菜单树。通过这样的技术组合,可以提供一个流畅、交互性强的...

Global site tag (gtag.js) - Google Analytics