PRAGMA foreign_keys==off; ---- -- Table structure plugins ---- CREATE TABLE 'plugins' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'libelle' TEXT NOT NULL ); INSERT INTO 'plugins' VALUES (0, 'List'); INSERT INTO 'plugins' VALUES (1, 'Hierarchy'); ---- -- Table structure for items ---- CREATE TABLE 'items' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'plugin' INTEGER DEFAULT 1, 'code' TEXT NOT NULL, 'libelle' TEXT NOT NULL, CONSTRAINT fk_items FOREIGN KEY('plugin') REFERENCES 'plugins'('id') ON DELETE CASCADE ); ---- -- Table structure for links ---- CREATE TABLE 'links' ( 'id' INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 'link' INTEGER DEFAULT 0, 'item' INTEGER, CONSTRAINT fk_links FOREIGN KEY('item') REFERENCES 'items'('id') ON DELETE CASCADE ); ---- -- Table structure for nodes ---- CREATE TABLE 'nodes' ( 'child' INTEGER, 'parent' INTEGER, 'rank' INTEGER DEFAULT 0, CONSTRAINT fk_nodes_1 FOREIGN KEY('child') REFERENCES 'links'('id') ON DELETE CASCADE, CONSTRAINT fk_nodes_2 FOREIGN KEY('parent') REFERENCES 'links'('id') ON DELETE CASCADE ); ---- -- View structure for v_items ---- CREATE VIEW v_items AS SELECT items.plugin, items.code, items.libelle , links.* FROM links INNER JOIN items ON items.id = links.item; ---- -- View structure for v_items_tree ---- CREATE VIEW v_items_tree AS SELECT nodes.parent, nodes.rank, v_items.* FROM v_items LEFT JOIN nodes ON nodes.child = v_items.id; PRAGMA foreign_keys=on;