Навигация
Главная
Поиск
Форум
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
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 9
На сайте нет зарегистрированных пользователей

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

Моделирование процесса передачи данных по магистрали с основным и резерв...
Моделирование процесса обеспечивающего надежность функционирования АСУ Т...
Принадлежит ли точка пересечению двух окружностей на Turbo Pascal + Отче...

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 12:24:57 · 0 Комментариев · 3648 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Midi
Socoban
UmEdit
Длинный заголовок...
Дарахвелидзе П., ...
VFW
Основы Delphi
Разработка Web-пр...
Proeffectimage
С. Г. Горнаков - ...
MpegPlay
SearchAndReplace
Java 2. Наиболее ...
Приемы программир...
Время загрузки ...
Правила программи...
Просмотр файлов и...
TMS
Assembler. Учебни...
TmxOutlookBarPro

Топ загрузок
Приложение Клие... 100793
Delphi 7 Enterp... 98016
Converter AMR<-... 20298
GPSS World Stud... 17059
Borland C++Buil... 14239
Borland Delphi ... 10373
Turbo Pascal fo... 7390
Калькулятор [Ис... 6080
Visual Studio 2... 5228
Microsoft SQL S... 3674
Случайные статьи
Диагональные элементы
Логическая модель
Оценка ущерба
Окончание игры и п...
настраиваемых в MSDSS
Фотокниги
Инструменты для ра...
Комментарии
Расположение загол...
Восстановление сис...
Использование прот...
Параметры шаблона ...
Five Balls на Stra...
Casino ROX
но вместо прав адм...
Символические ссылки
Syntax error
Что подразумевает ...
Игровые автоматы к...
Блог на мобильном ...
Программа перечисл...
Как создать решени...
Модуль Forms
Помимо вызова акти...
При создании Sound...
Статистика



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


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