Тема: Ієрархічна структура в реляційній БД
Задача схожа на попередню тему.
Є організація, в ній відділи. Структура відділів багаторівнева, причому нерівна: є відділи верхнього рівня без підвідділів, є відділи, що містять відділи, що містять відділи. Глибина на практиці обмежується 4 рівнями, але ніхто не гарантує, що в майбутньому їх не буде більше. Відділи займаються роботою, по якій потім збирається статистика. Запити по статистиці можуть бути як по роботі співробітників відділу тільки верхнього рівня, так і по роботі всіх підвідділів на всю глибину. Як зберігати структуру відділів в БД?
Рішення, що по факту використовується в моїй організації: кожен відділ має свій номер, що розкладається по два десяткові розряди на рівень. Так, номер 310040000 означає 3 (відділ №3) - 10 (підвідділ №10) - 04 (підпідвідділ №4) - два вільні розряди. Запит по справах у підвідділі №10 і глибше робиться приблизно так:
...
WHERE `DivisionNumber` BETWEEN 310000000 AND 31999999
Які будуть думки, як це покращити?