русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Отображение данных


Дата добавления: 2015-07-09; просмотров: 631; Нарушение авторских прав


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

В частности, вам придётся решить основной вопрос – что делать, когда пользователь требует вывести “следующий” объект? Таким объектом может быть: следующий потомок родителя текущего объекта; первый потомок текущего объекта; следующий родитель, если текущий объект является единственным потомком, или даже первый потомок следующего “родственника” (sibling). В визуальном интерфейсе интуитивные ожидания пользователя основаны на положении текущего объекта в иерархии, способе его отображения и действиях самого пользователя, а не только на логическом протоколе, определяемом абстрактной структурой данных приложения.

Помимо компонента TDBGrid, очевидным кандидатом для отображения иерархических данных являются компонент TTreeView. Этот компонент были создан специально для отображения древовидных структур, а не традиционных линейных списков. Он может занимать довольно большую область экрана, поэтому не стоит применять его везде, где пользователь должен выбрать объект иерархии. Кроме того, при работе с этим компонентом желательно загружать в память всю структуру. Компонент можно настроить так, чтобы “ветки” загружались по мере надобности, однако такая гибкость достигается ценой снижения производительности.

Целостность структуры и циклические ссылки



По иронии судьбы рекурсивная иерархия в одной таблице заметно упрощает обеспечение целостности структуры: одно поле таблицы ссылается на другое, принадлежащее этой же таблице. При этом защищаются все потомки объекта. Если же объединяющие значения находятся в нескольких полях или таблицах, в результате чего становится возможной многоуровневая группировка или установка сложных связей, обеспечить целостность структуры будет сложнее

Для программы, работающей с иерархией, наибольшую опасность представляют циклические ссылки. Если объект ссылается на несуществующего родителя, проблему можно заметить и исправить. Но, если родитель объекта оказывается одновременно и его потомком (если объекты разделены несколькими промежуточными поколениями, такую ситуацию будет нелегко обнаружить), программа зацикливается.

Где же выход? Можно проверять каждого “кандидата в предки” и смотреть, не присутствует ли какие-либо из его предков в текущем “семействе” (правда, это будет накладно с точки зрения производительности). Кроме того, в программу можно вставить счётчик-предохранитель, который инициирует исключение после определённого количества циклов поиска. Одно из преимуществ графических иерархических элементов как раз и заключается в том, что пользователь просто не сможет создать циклическую ссылку, так как это противоречит логике работы с элементом.

При работе с иерархиями используется “семейная” терминология (родители, внуки, предки, потомки), поскольку семья является самым распространённым примером объектов (в данном случае – людей), объединённых иерархическими отношениями. Этот пример напомнит вам одну простую истину – хотя вы можете построить систему, предназначенную для обобщённой обработки рекурсивных иерархий, ценность каждого объекта определяется той уникальной информацией, которая в нём хранится. В то же время место объекта в иерархическом дереве - не более чем условное обозначение связи с другими объектами. Иерархическая структура всего лишь помогает сохранить и найти объект.

 

 

Список литературы

1. Бураков П.В., Петров В.Ю. Введение в системы баз данных: Учебное пособ.

2. Гришков В.И. Исследование возможностей объектного представления данных в прикладных системах.

3. Роб П., Коронел К. Системы баз данных: проектирование, реализация и управление.



<== предыдущая лекция | следующая лекция ==>
Иерархические структуры в реляционных базах данных | Субъекты маркетинга ОУ, их функции


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.01 сек.