Почти каждому программисту когда-либо приходилось создавать таблицу вроде: Category (CategoryID, Name, ParentCategoryID). Это так называемая The Adjacency List Model. Работать с ней довольно легко, когда у тебя только два-три уровня; но если больше, то обычно возникают сложности.
Если вы работаете с MS SQL 2008, то для работы с деревьями очень удобно использовать новый тип данных hierarchyid. Но что делать тем, у кого MySQL?
Нашёл отличную статью про The Nested Set Model, которая решает многие проблемы. Правда, упрощая чтение данных, она усложняет модификацию дерева. Но для многих приложений это приемлимо.
Описанный метод в принципе можно применять не только с MySQL, а и с любой другой реляционной базой данных, которая не поддерживает деревья out-of-the-box.
1 комментарий:
Круто! Left Join - действительно впечатляет! Даже представить не мог, что можно так конструировать SQL-запрос!
Отправить комментарий