设计无限级分类

【python数据处理基础】--数据读取、清洗数据 python 数据处理实战目录数据读取清洗数据合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 目录 随着网络数据的爆发式的增长,数据处理工作日益显示出它的重要性,我们的目的是从大量的杂乱无章的数据中找出对我们的工作有益的数据或者发现数据的某 阅读详情

产品分类,多级的树状结构的论坛,邮件列表等许多地方我们都会遇到这样的问题:如何存储多级结构的数据?在PHP的应用中,提供后台数据存储的通常是关系 型数据库,它能够保存大量的数据,提供高效的数据检索和更新服务。然而关系型数据的基本形式是纵横交错的表,是一个平面的结构,如果要将多级树状结构存储 在关系型数据库里就需要进行合理的翻译工作。接下来我会将自己的所见所闻和一些实用的经验和大家探讨一下:
层级结构的数据保存在平面的数据库中基本上有两种常用设计方法:

  • 毗邻目录模式(adjacency list model)
  • 预排序遍历树算法(modified preorder tree traversal algorithm)

我不是计算机专业的,也没有学过什么数据结构的东西,所以这两个名字都是我自己按照字面的意思翻的,如果说错了还请多多指教。这两个东西听着好像很吓人,其实非常容易理解。

简单需求分析: 
1.实现无限级分类。 
2.实现无限级链接导航 
3.实现逐级分类下各条信息的查询,包括最多浏览量,最多评论量,最新信息。 
4.随意转移子分类到任何级别而不用修改分类下的信息表 
5.使用最少的参数得到所要的信息,URL参数最好只有一个,比如cID=1或者ID=1 
6.不管多少级,只有一个PHP文件实现类列表和各种方式的信息调用。 

表为两张,一张分类表,一张信息表。 
信息表如下: 

`ID` int(10) unsigned NOT NULL auto_increment, 
`cID` tinyint(3) unsigned NOT NULL default '0', 
`title` varchar(255) NOT NULL default 'No Title', 
`content` mediumtext NOT NULL, 

最简单的无限级分类数据表,只是设置一个parentID来判断父ID 
数据表如下: 

`cID` tinyint(3) unsigned NOT NULL auto_increment, 
`parentID` tinyint(3) unsigned NOT NULL default '0', 
`order` tinyint(3) NOT NULL default '0', 
`name` varchar(255) NOT NULL default '', 

这样可以根据cID = parentID来判断上一级内容,运用递归至最顶层。 
缺点是只能查询最小分类下的信息。这样就不能完成需求3、4点,而第二点也勉强符合 


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

我就说到这里,请大家讨论一下如何能够最简单的方法实现无限级分类——考虑性能,代码的简练性,前后台操作的容易性,扩展性!

 

2、预排序遍历树算法

Java代码   收藏代码
  1. --  
  2. -- 表的结构 `category`  
  3. --  
  4.   
  5. CREATE TABLE IF NOT EXISTS `category` (  
  6.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  7.   `type` int(11) NOT NULL COMMENT '1为文章类型2为产品类型3为下载类型',  
  8.   `title` varchar(50) NOT NULL,  
  9.   `lft` int(11) NOT NULL,  
  10.   `rgt` int(11) NOT NULL,  
  11.   `lorder` int(11) NOT NULL COMMENT '排序',  
  12.   `create_time` int(11) NOT NULL,  
  13.   PRIMARY KEY (`id`)  
  14. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=10 ;  
  15.   
  16. --  
  17. -- 导出表中的数据 `category`  
  18. --  
  19.   
  20. INSERT INTO `category` (`id`, `type`, `title`, `lft`, `rgt`, `lorder`, `create_time`) VALUES  
  21. (1, 1, '顶级栏目', 1, 18, 1, 1261964806),  
  22. (2, 1, '公司简介', 14, 17, 50, 1264586212),  
  23. (3, 1, '新闻', 12, 13, 50, 1264586226),  
  24. (4, 2, '公司产品', 10, 11, 50, 1264586249),  
  25. (5, 1, '荣誉资质', 8, 9, 50, 1264586270),  
  26. (6, 3, '资料下载', 6, 7, 50, 1264586295),  
  27. (7, 1, '人才招聘', 4, 5, 50, 1264586314),  
  28. (8, 1, '留言板', 2, 3, 50, 1264586884),  
  29. (9, 1, '总裁', 15, 16, 50, 1267771951);  

现在让我们看一看另外一种不使用递归计算,更加快速的方法,这就是预排序遍历树算法(modified preorder tree traversal algorithm)
这种方法大家可能接触的比较少,初次使用也不像上面的方法容易理解,但是由于这种方法不使用递归查询算法,有更高的查询效率。

我们首先将多级数据按照下面的方式画在纸上,在根节点Food的左侧写上 1 然后沿着这个树继续向下 在 Fruit 的左侧写上 2 然后继续前进,沿着整个树的边缘给每一个节点都标上左侧和右侧的数字。最后一个数字是标在Food 右侧的 18。 在下面的这张图中你可以看到整个标好了数字的多级结构。(没有看懂?用你的手指指着数字从1数到18就明白怎么回事了。还不明白,再数一遍,注意移动你的 手指)。
这些数字标明了各个节点之间的关系,"Red"的号是3和6,它是 "Food" 1-18 的子孙节点。 同样,我们可以看到 所有左值大于2和右值小于11的节点 都是"Fruit" 2-11 的子孙节点

Java代码   收藏代码
  1.                          1 Food 18  
  2.                              |  
  3.             +------------------------------+  
  4.             |                              |  
  5.         2 Fruit 11                     12 Meat 17  
  6.             |                              |  
  7.     +-------------+                 +------------+  
  8.     |             |                 |            |  
  9.  3 Red 6      7 Yellow 10       13 Beef 14   15 Pork 16  
  10.     |             |  
  11. 4 Cherry 5    8 Banana 9  

 这样整个树状结构可以通过左右值来存储到数据库中。继续之前,我们看一看下面整理过的数据表。

Java代码   收藏代码
  1. +----------+------------+-----+-----+  
  2. |  parent  |    name    | lft | rgt |  
  3. +----------+------------+-----+-----+  
  4. |          |    Food    | 1   | 18  |  
  5. |   Food   |   Fruit    | 2   | 11  |  
  6. |   Fruit  |    Red     | 3   |  6  |  
  7. |   Red    |    Cherry  | 4   |  5  |  
  8. |   Fruit  |    Yellow  | 7   | 10  |  
  9. |   Yellow |    Banana  | 8   |  9  |  
  10. |   Food   |    Meat    | 12  | 17  |  
  11. |   Meat   |    Beef    | 13  | 14  |  
  12. |   Meat   |    Pork    | 15  | 16  |  
  13. +----------+------------+-----+-----+  

注意:由于"left"和"right"在 SQL中有特殊的意义 ,所以我们需要用"lft"和"rgt"来表示左右字段。 另外这种结构中不再需要"parent"字段来表示树状结构。也就是 说下面这样的表结构就足够了。

 

好了我们现在可以从数据库中获取数据了,例如我们需要得到"Fruit"项下的所有所有节点就可以这样写查询语句:

Java代码   收藏代码
  1. SELECT * FROM tree WHERE lft BETWEEN 2 AND 11;  

这个查询得到了以下的结果。

Java代码   收藏代码
  1. +------------+-----+-----+  
  2. |    name    | lft | rgt |  
  3. +------------+-----+-----+  
  4. |    Fruit   | 2   | 11  |  
  5. |    Red     | 3   |  6  |  
  6. |    Cherry  | 4   |  5  |  
  7. |    Yellow  | 7   | 10  |  
  8. |    Banana  | 8   |  9  |  
  9. +------------+-----+-----+  

 要获知一个节点的路径就更简单了,如果我们想知道Cherry 的路径就利用它的左右值4和5来做一个查询。

Java代码   收藏代码
  1. SELECT name FROM tree WHERE lft < 4 AND rgt >; 5 ORDER BY lft ASC;  

 那么某个节点到底有多少子孙节点呢?很简单,子孙总数=(右值-左值-1)/2

用这个简单的公式,我们可以很快的算出"Fruit 2-11"节点有4个子孙节点,而"Banana 8-9"节点没有子孙节点,也就是说它不是一个父节点了。

 

那么对于这样的结构我们该如何增加,更新和删除一个节点呢?
增加一个节点一般有两种方法:
第一种,保留原有的name 和parent结构,用老方法向数据中添加数据,每增加一条数据以后使用rebuild_tree函数对整个结构重新进行一次编号。
第二种,效率更高的办法是改变所有位于新节点右侧的数值。举例来说:我们想增加一种新的水果"Strawberry"(草莓)它将成为"Red"节点的最 后一个子节点。首先我们需要为它腾出一些空间。"Red"的右值应当从6改成8,"Yellow 7-10 "的左右值则应当改成 9-12。 依次类推我们可以得知,如果要给新的值腾出空间需要给所有左右值大于5的节点 (5 是"Red"最后一个子节点的右值) 加上2。 所以我们这样进行数据库操作:

Java代码   收藏代码
  1. UPDATE tree SET rgt = rgt + 2 WHERE rgt > 5;  
  2. UPDATE tree SET lft = lft + 2 WHERE lft > 5;  

 这样就为新插入的值腾出了空间,现在可以在腾出的空间里建立一个新的数据节点了, 它的左右值分别是6和7

Java代码   收藏代码
  1. INSERT INTO tree SET lft=6, rgt=7, name='Strawberry';  

 数据库结构:
采用左右值编码的保存该树的数据记录如下(设表名为tree):
c_id | name | left_node | right_node
1     |商品    |      1       |   18
2     | 食品  |       2      |  11
3     | 肉类  |     3         |  6
4     | 猪肉    |    4        |    5
5     | 菜类  |     7        |   10
6     | 白菜  |    8         |    9
7     | 电器  |    2         |    17
8     | 电视  |    13       |    14
9     | 电棒  |    15       |     16

第一次看见上面的数据记录,相信大部分人都不清楚左值(left_node)和右值(right_node)是根据什么规则计算出来的,而且,这种表设计似乎没有保存父节点的信息。下面把左右值和树结合起来,请看:
          1商品18
     +---------------------------------------+

        2食品11                                12电器17

+-----------------+               +---------------------+
3肉类6           7菜类10       13电视14              15电棒16
4猪肉5            8白菜9
请用手指指着上图中的数字,从1数到18,学习过数据结构的朋友肯定会发现什么吧?对,你手指移动的顺序就是对这棵树的进行先序遍历的顺序。接下来,让我讲述一下如何利用节点的左右值,得到该节点的父节点,子孙节点数量,及自己在树中的层数。

采用左右值编码的设计方案,在进行类别树的遍历时,由于只需进行2次查询,消除了递归,再加上查询条件都为数字比较,效率极高,类别树的记录条目越多,执行效率越高。

应用
某个节点到底有多少子孙节点?
子孙总数=(父节点的右值 - 父节点的左值-1)/2
以节点“食品”举例,其子孙总数=(11-2-1)/ 2 = 4

如何判断某一节点下有没有子节点?
  当 该节点左值-1 等于 其右值 时,其下没有子节点。

检索某一父节点的所有子节点?
假定我们要对节点“食品”及其子孙节点进行先序遍历的列表,只需使用如下一条sql语句:
SELECT * FROM `tree` WHERE `left_node` BETWEEN 2 AND 11 ORDER BY `left_node` ASC

如何取得父类?
SELECT * FROM `tree` WHERE `left_node`<$left_node AND `right_node`>$right_node

检索之后如何列表?

当左值+1==右值时,该节点没有子节点,则下一节点不为其子节点

若下一节点的左值==上一节点右值+1,则2个节点是同级关系

若下一节点的左值==上一节点的左值+1时,则第2个节点应是第一个节点的子节点

若下一节点的左值-上一节点的右值>1时,则下一节点比上一节点高
(下一节点的左值-上一节点的右值)
级

在某一父节点下添加一个子节点?
1. 要求该子节点为该父节点下排序第一的节点,则$left_node = 父节点left_node+1, $right_node = $left_node+1;
2. 要求该节点位于父节点下一个子节点A后面,则$left_node = 节点A的right_node+1, $right_node = $left_node+1;
3. 要求该节点是位于父节点下排序最后一位的节点,则$left_node = 父节点right_node, $right_node = $left_node+1;

Sql:
UPDATE `tree` SET `right_node`=`right_node`+2 WHERE `right_node`>=$left_node
UPDATE `tree` SET `left_node`=`left_node`+2 WHERE `left_node`>=$left_node
INSERT INTO `tree` (`name` , `left_node` , `right_node`) VALUES
(`名字` , $left_node , $right_node)

移动节点,包括其子节点至节点A下?
设该节点左值$left_node , 右值$right_node
其子节点的数目为$count = ($right_node - $left_node -1 )/2 , 节点A左值为$A_left_node ,
UPDATE `tree` SET `right_node`=`right_node`-$right_node-$left_node-1 WHERE `right_node`>$right_node AND `right_node`<$A_left_node
UPDATE `tree` SET `left_node`=`left_node`-$right_node-$left_node-1 WHERE `left_node`>$right_node AND `left_node`<=$A_left_node
UPDATE `tree` SET `left_node`=`left_node`+$A_left_node-$right_node , `right_node`=`right_node`+$A_left_node-$right_node WHERE `left_node`>=$left_node
AND `right_node`<=$right_node

删除所有子节点?
DELETE FROM `tree` WHERE `left_node`>父节点的左值 AND `right_node`>父节点的右值

删除一个节点及其子节点?
在上例中的<号>号后面各加一个=号

【MySQL】-无限级分类表设计与查询 What? 举个简单的例子,我们设计购物商城之类的网站的时候一般商品都会有一级分类二级分类甚至三级分类或者再细分,如果按照传统思维我们可能会为每个级别的类别设置一张分类表然后再用外键去关联,虽然这样保证了没有冗余,但是我们完全没有必要设置这么多表,更何况商品类可以是无限细分的,我们不能因此而创建无数张表,最最重要的是这样多表连接查询时候会造成效率低下的问题,不利于性能的提升。 这个时候我们如何... 阅读详情

相关推荐

一种更为高效的数据库无限级分类表设计

一般地,大家在数据库设计无限级分类表时只是多添加了一个parent_id字段,这样如果要读取所有分类的话只能进行递归读取数据库表操作,这样的性能可想而知。 先看个表及测试数据: id name parent_id 1 Clothing(衣服) 0 2 Men’s(男装) 1 3 Women’s(女装) 1 4 Suits(套装) 2 5 Dresses(连衣裙) 3 6 Skirts(裙子) 3 7 Blouses( 女衬衫) 3 8 Slacks( 长裤) 4

patriot_28的博客 2043

sEMG数据集Ninapro解读和处理

介绍sEMG(表面肌电信号)的公共数据集Ninapro的使用、文件内容解析和信号处理

dhzfjnkl的博客 1万+

NinaPro肌电数据集分析[代码]

本文详细介绍了NinaPro肌电数据集(包含52类动作)的分析过程,包括数据预处理、简单ANN分类和深度学习应用。数据预处理部分涉及信号重新标记、RMS校正、下采样和低通滤波等步骤。简单ANN分类部分展示了不同网络结构(如1层和3层模型)的性能比较,并指出裁剪数据后准确率显著提升。深度学习部分则探讨了CNN、VGG16和ResNet50等模型在肌电数据上的应用,包括模型结构、训练参数和性能评估。整体而言,文章提供了从数据预处理到模型训练的完整流程,为肌电信号分类研究提供了有价值的参考。

ninapro肌电数据库DB2,论文流程用图

#Z-score标准化数据,按通道分离 import matplotlib as mpl import matplotlib.colors as mcolors import random import math iSampleRate = 2000 # 采样频率 colors=list(mcolors.TABLEAU_COLORS.keys()) #颜色变化 for j in range(1, 2): h5 = h5py.File('F:/DB2/refilter/DB2_s' + str(j...

sinat_41462106的博客 4795

Ninapro-emg

Ninapro数据库,基于深度学习的肌电信号手势识别项目

BUCK降压斩波电路设计实战:从IGBT选型到续流二极管优化

本文详细解析了BUCK降压斩波电路的设计实战,从IGBT选型到续流二极管优化,涵盖了关键参数设计、调试技巧及电磁兼容问题解决方案。通过实际案例和数据对比,帮助工程师高效完成DC-DC转换电路设计,提升系统性能和可靠性。

weixin_29253711的博客 93

sEMG项目总结(6)NinaPro肌电数据集(52类动作)

NinaPro肌电数据集(52类动作) 目录 NinaPro肌电数据集52类动作 目录 1sEMG Data 2简单ANN分类 3Deep learning applied to Ninapro sample cnn VGG16 ResNet50 1sEMG Data subjucts : 67 intact subjects &amp; 11 trans-ra...

malele4th 2万+

MATLAB机械臂轨迹规划:在关节空间中生成多项式轨迹以及 jtraj函数(内容超详细讲解)

matlab机器人仿真,关节空间多项式轨迹生成

qq_40969179的博客 1万+

无限级分类的数据库设计

文章目录场景分析邻接列表模式物化路径模式闭包表 场景 无限级分类是经常遇到的设计模式 分析 无限级分类常用的模式 (每种模式都是根据需要选择) 邻接列表模式 物化路径模式 闭包表模式 邻接列表模式 表结构 node_id parent_id name 优点 操作简单 缺点 生成一棵树很难 适合场景 4层结构之内的分类 物化路径模式 表结构 path n...

cominglately的博客 1648

奈曼-皮尔逊准则

奈曼-皮尔逊准则 如果各个假设的先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(i=0,1)已知,并且每种判决的代价函数已知,这时,可以用贝叶斯准则进行判决。 如果进一步假设正确判决不付出的代价,而错误判决代价相同,即c00=c11=0,c01=c10=1c_{00}=c_{11}=0,c_{01}=c_{10}=1c00​=c11​=0,c01​=c10​=1,这时可以用最小平均错误概率准则进行判决。 在不知道先验概率P(Hi)(i=0,1)P(H_i)(i=0,1)P(Hi​)(

little_soldier的专栏 1万+

GPT大模型在数学建模中的实战应用:从思路启发到代码生成

数学建模是将现实问题抽象为数学问题并求解的核心方法,其关键在于通过合理的假设与简化,构建可计算的数学模型。传统建模依赖MATLAB等工具进行推演试错,而大语言模型的出现革新了这一范式。GPT等模型通过理解自然语言、辅助逻辑推理与代码生成,能有效提升建模效率与质量,在问题解析、模型构建、算法实现等环节提供关键支持。本文聚焦GPT在数学建模中的具体应用,涵盖赛题解读、模型推导、代码生成与结果分析,并结合实战案例,探讨如何将其作为“副驾驶”融入建模全流程,实现人机协同的智能化建模。

weixin_29061465的博客 322

无限级分类表设计

无限级分类表设计 一般的多级分类表的表结构字段如下: 多级分类类型表 T_ContentsType Id, TypeId, ParentId, TypeName, CreateTime, Orders 其它很多情况下2级,3级情况比较多见,真正的有N多级的情况比较少见,这种情况就用上表即可解决,Id自增; 缺点是单从类型Id很难知道是哪个分类; 但如果只有2,3级的情况下,Id我们可以不用自增Id,用数字编码的形式来做更有意义,而且可读性会更好; 比如 一级Id从10000起,每个一级分类递增1000

胡杰的专栏 1273

FAST-LIO2实战:从零搭建香港大学火星实验室SLAM框架(附官方数据集测试指南)

本文提供了一份详细的FAST-LIO2实战指南,帮助读者从零开始搭建香港大学火星实验室开源的这一高效激光惯性里程计框架。内容涵盖系统环境配置、依赖安装、源码编译、官方数据集测试以及参数调优,旨在让开发者快速上手并应用于机器人SLAM项目。

ppp33的博客 685

java无限级分类_无限级分类设计

评论#re: 无限级分类设计2005-08-18 09:51hope老大能不能说说怎么有数据库声称xml呢 给各类 让我学习学习好么?还有个问题 我用xml树发现刷新有点问题 就是我选择一个节点显示页面 然后进行数据提交或者更新什么的 然后去别的页面 最后通过节点回来发现 页面没有刷新 也就是没有显示更新过的数据 这个怎么解决阿回复更多评论#re: 无限级分类设计2005-08-18 ...

weixin_39969448的博客 250

路径规划 | 图解A*、Dijkstra、GBFS算法的异同(附C++/Python/Matlab仿真)

图解A*、Dijkstra、GBFS算法原理,分析三种算法异同,提供C++/Python/Matlab仿真实现

FRIGIDWINTER的博客 2万+

华为OD机试双机位A卷 - 小明减肥 (C++ & Python & JAVA & JS & GO)

华为OD机试2025双机位A卷 小明减肥,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 705

mysql 分类表设计,MYSQL无限级分类表设计及自我连接

create table city(id smallint unsigned auto_increment primary key,2 city_name varchar(20) not null ,parent_id smallint unsigned not null);34 insert into city(city_name,parent_id) values("贵州",0);5 inse...

weixin_42502040的博客 250

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

PHP从零到一,如何设计淘宝商城的商品分类表,支持无限级分类?

简单:仅需一个path字段,无需复杂算法高效:所有查询 O(1) 或 O(log n),无递归安全:通过模型钩子保障数据一致性可扩展:支持排序、叶子标记、SEO 路径符合电商场景:读多写少,层级有限这正是所追求的“在明确边界内无限创造”:用最简结构,解决核心问题。

长风破浪会有时的博客 892

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

MySQL技巧(二)——无限级分类表设计

无限级分类表的设计(掌握'自身连接') 类似图书这种,会有很多种分类,而且在现实生活中这种分类会无限的往下分,所以不可能每有一个分类就创建一个分类表。应该使用下面这种语句    DROP TABLE IF EXISTS tdb_goods_types; CREATE TABLE tdb_goods_types( type_id SMAL...

daxia7577的博客 294

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

第四章 第八节:无限级分类表设计

无限级分类表设计    实际上我们在开发过程中,就拿商品类别来说,它还可以有更多的延伸,我们先来举一个简单的例子,比如图书,他的下面还可以分小说、文学等,在小说下面还可以分为言情小说、科幻小说等,还可以再往下一级一级继续分,那么这种分类就属于无限极分类,那么无限极分类表该如何去设计,理论上说我们可以设计很多张表,但是随着分类的逐步增多,表的数目就会越来越多,所以无限极分类表往往采用另外一种形

黑白门 383

数据库设计无限级分类

1

m0_72345017的博客 612

无限级分类的数据库设计思考

无限级分类的数据库设计 简单需求分析: 1.实现无限级分类。 2.实现无限级链接导航 3.实现逐级分类下各条信息的查询,包括最多浏览量,最多评论量,最新信息。 4.随意转移子分类到任何级别而不用修改分类下的信息表 5.使用最少的参数得到所要的信息,URL参数最好只有一个,比如cID=1或者ID=1 6.不管多少级,只有一个PHP文件...

weixin_30486037的博客 128

设计一个无限级分类的数据表

设计一个无限级分类的数据表是一个很常见的数据库任务。比如你写一个CMS,需要有4,5级分类的栏目,反正就是很普遍,所以还是需要了解一下。下面本专题的所有内容,都是我自己随手演示写写,仅仅供参考,绝不是标准答案。 我们先设计一个数据表吧,一个可供无限级分类的数据表。 SQL语句设计如下: 01 CREATETABLE`categories` ( ...

weixin_34055787的博客 662
上一篇: Spring JPA – Multiple Databases
下一篇: 预排序遍历树算法(非递归无限极分类算法)
daniel7443
博客等级 码龄24年 32粉丝 1原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值