Классика баз данных - статьи

       

Помимо явного указания значения объекта


Помимо явного указания значения объекта по имени в SQL – запросе для удобства дополнительно вводятся предикаты current – что означает значение текущего элемента и parent - значение родителя уровня n, например parent1 – вернет значение родителя указанного элемента, parent2 – родителя родителя и т.д. В таком случае соответственно parent0 = current.

Суть идеи изложена, теперь введем некоторые усовершенствования и рассмотрим некоторые способы отображения данных. Во первых, излагая идею мы предполагали, что с одним элементом сопоставлен один SQL – запрос на формирование списка дочерних элементов. На самом деле их может быть несколько, для того чтобы можно было представлять данные разными способами. Безусловно, это можно сделать отдельными узлами дерева, однако это не всегда удобно, гораздо удобнее иметь возможность менять способ отображения дочерних элементов в каждом конкретном случае. Например, выборка трестов в реальной базе представлена в четырех видах – выборка всех трестов с сортировкой по номеру треста, выборка всех трестов с сортировкой по названию треста, выборка только муниципальных трестов и выборка трестов ТСЖ. В этом случае, пользователь, находясь на элементе Тресты, сам выбирает необходимый способ отображения трестов по его названию. Для этого служит выпадающий список в верхней части дерева. При выборе другого варианта отображения программа автоматически переформировывает элементы указанного узла. При этом программа запоминает выбор пользователя и при последующих обращениях к этому элементу, показывает данные в выбранном представлении.



Рис 3. Выбор способа представления.

Для отображения иерархических данных нет необходимости использовать несколько элементов, каждый из которых соответствует своему уровню иерархии. Вместо этого достаточно использовать два элемента - первый выбирает данные корневого уровня, в второй формирует все последующие, независимо от уровня иерархии. Рассмотрим, как это используется при отображении иерархической таблицы прав.

Содержание  Назад  Вперед