Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
Имитационное мо... 59871
Реклама
Сейчас на сайте
Гостей: 5
На сайте нет зарегистрированных пользователей

Пользователей: 13,113
новичок: SaRdOr0493
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий пакетным режимом работы с квант...
Программа тестирования (тест) - вступительные экзамены (математика, физи...
Моделирование работы участка термической обработки шестерен на GPSS + По...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
3.4. ДОПУСТИМЫЕ СПОСОБЫ ИСПОЛЬЗОВАНИЯ АНТИПАТТЕРНА
Конструкция списка соседства, возможно, прекрасно обеспечит ту работу, которую требуется выполнить в приложении. Достоинство конструкции списка соседства состоит в извлечении прямого родительского или дочернего объекта заданного узла. В этом случае не представляет сложности и вставка строки. Если данные операции — это все, что необходимо делать с иерархическими данными, тогда Список соседства способен хорошо справляться с ними.
НЕ УСЛОЖНЯЙТЕ
Я написал для компьютерного центра обработки данных приложение по отслежи-
ванию производственных ресурсов. Внутри компьютеров скомпоновано некоторое
оборудование; например, дисковый контроллер с кэшем установлен в сервере,
смонтированном в стойке, а дополнительные модули памяти установлены в кон-
троллере диска.
Мне требовалось SQL-решение, позволяющее легко отслеживать использование иерархических коллекций. Но мне также надо было отслеживать каждую отдельную часть оборудования для создания бухгалтерских отчетов по амортизации, использованию оборудования и рентабельности инвестиций.
Менеджер сообщил, что совокупности могут иметь подмножества и, таким образом, дерево теоретически может распространяться на любую глубину. Потребовалось несколько недель, чтобы улучшить программный код функций обработки деревьев в хранилище базы данных, пользовательского интерфейса, администрирования и отчетности.
Однако на практике приложению инвентаризации никогда не надо выполнять группирование оборудования с деревом глубже одиночной взаимосвязи «родитель-потомок». Если бы мой клиент подтвердил, что этого будет достаточно для моделирования его требований к инвентаризации, мы могли бы сэкономить усилия, не выполняя достаточно большого объема работы.
РСУБД (реляционные СУБД) некоторых производителей поддерживают расширения SQL с целью поддержки иерархий, хранящихся в формате списка соседства. Стандарт SQL-99 определяет синтаксис рекурсивного запроса, использующего ключевое слово WITH, за которым следует обыкновенное табличное выражение.
Файл npvmepa:_Trees/legit/cte.sql
WITH CommentTree
(comment_id, bug_id, parent_id, author, comment, depth)
AS (
SELECT *, 0 AS depth FROM Comments WHERE parent_id IS NULL UNION ALL
SELECT c.*, ct.depth+1 AS depth FROM CommentTree ct JOIN Comments с ON (ct.comment_id = c.parent_id))
SELECT * FROM CommentTree WHERE bug_id = 1234;
В Microsoft SQL Server 2005, Oracle 1 lg, IBM DB2 и PostgreSQL 8.4 поддерживаются рекурсивные запросы с использованием обычных табличных выражений, подобных показанным выше.
MySQL, SQLite и Informix пока еще не поддерживают этот синтаксис. То же самое относится к СУБД Oracle 10g, которая по-прежнему широко применяется на практике. Можно было бы предположить, что в будущем синтаксис рекурсивных запросов станет доступным во всех популярных базах данных, и тогда использование списка соседства не будет связано с соответствующими ограничениями.
Базы данных Oracle 9i и 10g поддерживают оператор WITH, но не для рекурсивных запросов. Вместо этого существует фирменный синтаксис: START WITH и CONNECT BY PRIOR. Данный синтаксис подходит для подобных рекурсивных запросов:
Файл примера: Trees/legit/connect-by.sql
SELECT * FROM Comments
START WITH comment_id = 9876
CONNECT BY PRIOR parent_id = comment_id;
Опубликовал vovan666 June 18 2013 16:24:57 · 0 Комментариев · 2461 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Atb
WAP версия сайта
WinAmp
Векторный редакто...
PHP в примерах
C++ Builder: Книг...
CoolControls v3.0...
Srinilist
Просмотр файлов и...
Delphi 6 программ...
C++ Стандартная б...
Шкрыль А. - Разра...
Animated Menus
Реализация ЭЦП по...
DCAVI
Введение в станда...
PHP 5
PBFoldder
Ранги для форума
NotePad Pro [Исхо...

Топ загрузок
Приложение Клие... 100517
Delphi 7 Enterp... 90777
Converter AMR<-... 20095
GPSS World Stud... 15040
Borland C++Buil... 12800
Borland Delphi ... 9007
Turbo Pascal fo... 7101
Калькулятор [Ис... 5145
Visual Studio 2... 5022
FreeSMS v1.3.1 3556
Случайные статьи
Вставка узла похож...
Строковые потоки
Блок PRIORITY
Функции работы с б...
Адресаты инфографики
Содержимое объекта...
Первый этап преобр...
Содержание
Суд Федеральный
Создание базы данн...
Определение функции
Эта форма имет про...
Пирамидальная сорт...
Что означают терми...
Встроенные массивы...
Классы vector, lis...
VARIABLE (ОПРЕДЕЛИ...
Усовершенствованны...
Как решать задачи ...
В Интернете масса ...
Колонтитулы
Целевые страницы
Использование экра...
Процедура SetAllPa...
Контроль состава а...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?