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



         

Деревянный интерфейс - часть 3


Приведенный SQL запрос выбирает данные из таблицы Main.Trust, в которой содержатся данные по трестам. Поясним значения полей:

  1. Первое поле IdType – идентификатор добавляемых элементов. То есть это идентификатор элемента в таблице структуры. Это поле сообщает приложению, элементы какого типа будут добавлены в дерево в качестве дочерних элементов. В данной реализации это поле числовое, но для более удобного использования может быть символьным, и принимать осмысленные значения, например ‘Trust’ as IdType.
  2. Второе поле IdName - символьное и содержит название идентификатора объекта. На первый взгляд это поле избыточно, но на самом деле оно необходимо и его роль мы рассмотрим чуть ниже.
  3. Третье поле IdValue содержит значение уникального идентификатора узла. В данном случае треста - Id_Trust . Это поле является первичным ключом таблицы трестов и его значение позволяет однозначно идентифицировать конкретный трест.
  4. Четвертое поле Name – текстовая строка, которая содержит название объекта. Именно эта строка будет показана в дереве как название элемента.
  5. Пятое поле Icon - название иконки, которая будет показана в качестве иконки элемента.
  6. Так же может присутствовать поле IdRight, которое определяет номер права для отображения конкретного элемента.

Таким образом, при выполнении этого запроса приложение сформирует список элементов – трестов и для каждого элемента запомнит тип элемента (IdType), конкретное значение идентификатора Id_Trust и название этого идентификатора. Обратите внимание, что в дереве может быть неограниченное количество трестов, но в таблице структуры есть только одна запись – трест.

Таким образом, каждый элемент структуры хранит текст SQL запроса на получение дочерних элементов, за исключением элементов, которые не имеют детей. Структура запроса может быть произвольной, но должна обязательно возвращать указанные пять полей.

Опускаемся по дереву чуть ниже, теперь нам нужно получить список участков для конкретного треста. В этом случае в элементе Участки хранится такой SQL запрос:




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