create table nodes ( node_id int primary key, name varchar(32) -- other node info goes here ) #### create table edges ( from_node_id int not null references nodes(node_id), to_node_id int not null references nodes(node_id), description varchar(32) -- other edge info goes here ) #### -- Allowed states for "Daily Work Task" insert graph_nodes values (1, 'Wait/Idle') insert graph_nodes values (2, 'Ready') insert graph_nodes values (3, 'Running') insert graph_nodes values (4, 'Completed') insert graph_nodes values (5, 'Fault') insert graph_nodes values (6, 'Disabled') -- Normal execution path insert graph_edges values (1, 2, 'All prerequisites complete') insert graph_edges values (2, 3, 'User makes request') insert graph_edges values (3, 4, 'Job completes successfully') insert graph_edges values (4, 1, 'NewDay resets us at midnight') -- Abnormal paths insert graph_edges values (3, 5, 'Job faults') insert graph_edges values (5, 6, 'Manual intervention required') insert graph_edges values (6, 1, 'System restarted') insert graph_edges values (5, 2, 'Fault resolved normally') insert graph_edges values (1, 6, 'System halted') insert graph_edges values (2, 6, 'System halted') #### -- Where can I go from node 5? select FR.node_id, '-->', TO.node_id, 'When: ' + E.description from edges E join nodes FR on FR.node_id=E.from_node_id join nodes TO on TO.node_id=E.to_node_id where E.from_node_id = 5 #### node_id node_id ------- --- ------- ---------------------------------- 5 --> 2 When: Fault resolved normally 5 --> 6 When: Manual intervention required