Каждая из конструкций обладает своими сильными и слабыми сторонами. Выбирайте нужную в зависимости от операций, которые по вашему усмотрению должны быть самыми эффективными. На рис. 3.5 некоторые операции помечены как простые или трудные для каждой соответствующей конструкции дерева. Проанализируйте достоинства и недостатки каждой конструкции.
• Список соседства является самой обыкновенной конструкцией, и многие разработчики программного обеспечения признают ее достоинства.
• Рекурсивные запросы, использующие операторы WITH ИЛИ CONNECT BY PRIOR, делают более эффективным применение конструкции Список соседства при условии, что используется одна из баз данных, поддерживающих этот синтаксис.
• Перечисление путей хорошо подходит для встраивания отладочных операторов в пользовательские интерфейсы, но эта конструкция считается хрупкой, поскольку в ней не удается принудительно установить целостность на уровне ссылок и приходится хранить избыточные данные.
• Вложенные множества — умное решение, возможно, даже слишком. Оно также не поддерживает целостность на уровне ссылок. Данное решение оптимально, когда требуется чаще запрашивать дерево, чем его изменять.
• Таблица замыканий является самой универсальной и, кстати, единственной конструкцией в этой главе, где допускается принадлежность узла нескольким деревьям. Для хранения взаимосвязей необходима дополнительная таблица. Данная конструкция также требует пространного опи-сения глубоких иерархий, при этом за уменьшение объема вычислений приходится расплачиваться увеличением дискового пространства.
Существует много учебного материала, посвященного хранению и обработке иерархических данных в SQL. Автор Джо Селко (Joe Celko) написал хорошую книгу «Trees and Hierarchies in SQL for Smarties» [2], где рассматриваются иерархические запросы. Еще одна книга, где описываются деревья и даже графы, — это «SQL Design Patterns* [16] Вадима Тропашко (Vadim Tropashko), написанная в академическом стиле.
Опубликовал vovan666
June 18 2013 12:25:16 ·
0 Комментариев ·
4380 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.