设为首页
加为收藏
联系我们
  • 电子商务
  • 软件网络
  • 看天下
  • 营销财经
  • 关闭导航
  • 网络编程
  • 数据库类
  • 关闭导航
  • 网络编程
  • 社交礼仪
  • 数据库类
  • 人文地理
  • 关闭导航
  • 编程工具
  • 电子书籍
  • 关闭导航
  • 生活休闲
  • 演讲讲座
  • 视频教程
  • 经典影视
  • 关闭导航
  • 您的位置: 首页 > 入门教程 > 数据库类 > MySQL

    MYSQL: 分层数据管理

    时间: 2008-09-19  信息来源: 博客园  作者: 编辑整理  点击数:

    内容提示:分层数据存在于许多基于数据库的应用程序中,包括论坛和邮件列表中的
    分类、商业组织图表、内容管理系统的分类、产品分类.本文将详细介绍分层数据库管理.

    引言 

        大多数用户都曾在数据库中处理过分层数据(hierarchical data),认为分层数据的管
    理不是关系数据库的目的。之所以这么认为,是因为关系数据库中的表没有层次关系,只
    是简单的平面化的列表;而分层数据具有父-子关系,显然关系数据库中的表不能自然地
    表现出其分层的特性。 
         
        我们认为,分层数据是每项只有一个父项和零个或多个子项(根项除外,根项没有父
    项)的数据集合。分层数据存在于许多基于数据库的应用程序中,包括论坛和邮件列表中的
    分类、商业组织图表、内容管理系统的分类、产品分类。我们打算使用下面一个虚构的电
    子商店的产品分类: 

     

        这些分类层次与上面提到的一些例子中的分类层次是相类似的。在本文中我们将从传
    统的邻接表(adjacency list)模型出发,阐述 2种在 MySQL中处理分层数据的模型。 
         

    邻接表模型 

        上述例子的分类数据将被存储在下面的数据表中(我给出了全部的数据表创建、数据插
    入的代码,你可以跟着做):  
         

     CREATE TABLE category(
    category_id INT AUTO_INCREMENT PRIMARY KEY,

    name VARCHAR(20) NOT NULL,

    parent INT DEFAULT NULL);

    INSERT INTO category

    VALUES(1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),

     (4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),

     (7,'MP3 PLAYERS',6),(8,'FLASH',7),

     (9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);

    SELECT * FROM category ORDER BY category_id;

    +-------------+----------------------+--------+

     | category_id | name                  | parent |

    +-------------+----------------------+--------+

     |          1 | ELECTRONICS           |   NULL |

     |          2 | TELEVISIONS           |      1 |

     |          3 | TUBE                 |      2 |

     |          4 | LCD                  |     2 |

     |          5 | PLASMA               |      2 |

     |          6 | PORTABLE ELECTRONICS |         1 |

     |          7 | MP3 PLAYERS           |      6 |

     |          8 | FLASH                |      7 |

     |          9 | CD PLAYERS            |      6 |

     |         10 | 2 WAY RADIOS           |     6 |

    +-------------+----------------------+--------+

    10 rows in set (0.00 sec)

        在邻接表模型中,数据表中的每项包含了指向其父项的指示器。在此例中,最上层项
    的父项为空值(NULL)。邻接表模型的优势在于它很简单,可以很容易地看出 FLASH 是MP3 
    PLAYERS 的子项,哪个是 portable electronics 的子项,哪个是 electronics 的子项。虽
    然,在客户端编码中邻接表模型处理起来也相当的简单,但是如果是纯 SQL 编码的话,该
    模型会有很多问题。  
        

     
     1 2 3 4 5 6  下一页
    Tags: MySQL,分层数据,管理 责任编辑:aboutstudy
     
      关于我们 友情链接 网站地图 广告服务 联系我们 管理登陆  
      鄂ICP备07014143号  
      Powered by EmpireCMS 5.0  
      Template designed by 直来直往.
      联系信息: QQ 365931563 Email:jiangtian001@sina.com  
      ©CopyRight 2007-2008, SKDE.CN, Inc. All Rights Reserved