hierarchy-data-closure-table

This is a mysql and postgresql store procedure and trigger implementation of closure table in RDBMS about hierarchy data model.

Github stars Tracking Chart

Closure Table

This is a mysql store procedure and trigger implementation of closure table in
RDBMS about hierarchy data model.

Closure Table Node Paths

Query the subtree nodes

Features

  • Automatically add new paths when you insert a new node

  • Automatically update(DELETE old paths and INSERT new paths) paths when you
    update parent_id of a node. (This means move a node/subtree to a new parent)

  • A store procedure that is used to select a whole subtree by a node_id
    (if the node_id has descendant)

Triggers

  • trigger_add_paths

The trigger is execute when insert a node into prefix_nodes table, and call p_node_add to add update paths.

  • prefix_node_move:

The trigger is execute when update the parent_id column of prefix_nodes
table only if OLD.parent_id != NEW.parent_id

Store Procedures

  • p_node_add(param_node_new_id INT UNSIGNED,param_node_parent_id INT UNSIGNED)

    Add new paths when insert a node to prefix_nodes table

  • p_get_tree(node_id INT UNSIGNED)

    Get subtree by a node id

  • p_node_move(node_old_parent_id INT UNSIGNED,node_new_parent_id INT UNSIGNED)

    Update paths when move a node to a new parent node

  • p_node_hide(node_id INT UNSIGNED, is_deleted INT UNSIGNED)

    Hide or show nodes from subtree, explains as following:

    • Step 1. call p_get_tree(6) get the HARDWARE subtree,
    • Step 2. call p_node_hide(6, 0) to hide a subtree,
    • Step 3. call p_get_tree(6) get the HARDWARE subtree, when you get a subtree, it is not show in the result.
    • Step 4. call p_node_hide(6, 1) show HARDWARE subtree

MySQL Files

  • ./mysql/tables.sql

    Create tables.

  • ./mysql/sample_data.sql

    Some insert statements for testing

Postgresql Files

TODO::

Main metrics

Overview
Name With Ownerdeveloperworks/hierarchy-data-closure-table
Primary LanguagePLpgSQL
Program languagePLpgSQL (Language Count: 1)
Platform
License:Other
所有者活动
Created At2013-05-14 05:16:38
Pushed At2023-07-13 06:10:15
Last Commit At2023-07-13 14:10:14
Release Count0
用户参与
Stargazers Count175
Watchers Count18
Fork Count59
Commits Count29
Has Issues Enabled
Issues Count14
Issue Open Count7
Pull Requests Count3
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private