Объекты системы Miracle (часть IV)
Общая методика программирования объектов базы данных

Общая методика программирования объектов базы данных

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

Общее описание

  Объект базы данных представляет собой таблицу БД, с заданной структурой.

ФамилияИмяОтчество
ИвановСергейПетрович
ПушкинаЕленаАнатольевна
← Заголовок таблицы
← Запись №1
← Запись №2

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

Добавление записи

  Организация нового набора значений (записи) в объекте БД состоит из трех шагов:

  1. Организация буфера под новую запись
    ФамилияИмяОтчество
    ИвановСергейПетрович
    ПушкинаЕленаАнатольевна
       
  2. Заполнение характеристик
    ФамилияИмяОтчество
    ИвановСергейПетрович
    ПушкинаЕленаАнатольевна
    ОгурцовФедорФедорович
  3. Сохранение записи в БД

  После удачного сохранения значений в базе данных, пользователь не может получить моментальный доступ к новой записи, так как она не входит в выборку начального состояния. Для организации доступа к данным необходимо - перечитать объект базы данных. После успешного перечитывания, если новая запись отвечает установленным критериям выборки, запись становиться доступной.

ФамилияИмяОтчество
ИвановСергейПетрович
ПушкинаЕленаАнатольевна
ОгурцовФедорФедорович

Удаление записи

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

ФамилияИмяОтчество
ИвановСергейПетрович
ПушкинаЕленаАнатольевна
ОгурцовФедорФедорович
 
 
← Текущая запись
 

  После успешного удаления записи необходимо перечитать объект базы данных.

ФамилияИмяОтчество
ИвановСергейПетрович
ОгурцовФедорФедорович

  Данный подход используется и при применении каскадного удаления данных.

Модификация значений в записи

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

Удаленное изменение данных

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

Таблица действий при модификации содержимого объекта БД

ДействияПроблемыДействия
Добавление новой записиНет доступа к “новой” записи Перечитать объект базы данных
Удаление записиДоступ к позиции удаленной записи Перечитать объект базы данных
Модификация записи  
Удаленное изменение данныхВозможен доступ либо к удаленным записям или нет доступа к добавленным записямПеречитать объект базы данных

Особенности работы при активных связях подчиненной таблицы

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

  

  Через организованный интерфейс мы имеем доступ к значениям в этих таблицах. Где на одну запись в таблице “Реестр заказов” может быть несколько записей в “Журнале выполнения работ”. Одновременно с нами еще один пользователь имеет доступ к этим же объектам базы данных, где добавляет новую запись в “Реестре заказов”, и удаляет запись в “Журнале выполнения заказов”. Мы получаем уведомление - Удаленное изменение данных по каждому журналу. Для корректного предоставления информации необходимо - перечитать объект базы данных, однако эту процедуру, возможно, применить только по отношению к «мастер таблице», в нашем примере “Реестр заказов”. Новый набор данных в подчиненной таблице - “Журнале выполнения заказа” будет предоставлен автоматически, как только будет произведено перемещение в «мастер таблице». Однако такой подход гарантирует однозначное предоставление информации только после перемещения в «мастер таблице» и активизации механизмов предоставления значений из подчиненной таблицы. Без применения этих механизмов, данные из подчиненной таблицы могут быть некорректны до момента применения процедуры - перечитать объект базы данных.

Программирование приложений использующих базы данных.
Общие сведения

  БАЗА ДАННЫХ, упорядоченная совокупность данных, предназначенных для хранения, накопления и обработки с помощью ЭВМ. Для создания и ведения Б.д. (обновления, обеспечения доступа к ним по запросам и выдачи их пользователю) используется набор языковых и программных средств, над. системой управления Б.д. (СУБД).
  Все приложения системы Miracle использующих в своей работе объекты БД являются клиентами базы данных. Что говорит о механизме взаимодействия клиентского приложения и СУБД, где Клиент запрашивает информацию у Сервера, в ответ на что Сервер БД предоставляет ему необходимые данные. При этом Клиент не владеет всеми данными, а осуществляет взаимодействие с Сервером баз данных, организовывая необходимый доступ к информации, методам их извлечения и пополнения. Взаимоотношения между SQL-Сервером и Клиентом строятся на базе механизмов выборок, являющимся результатом работы SQL запроса, и механизмом команд Серверу баз данных, на осуществление определенных действий.
  Сервер БД координирует работу всех активных клиентов, осуществляя обработку их запросов, обновление данных и т.д. Результат запросов к базе данных хранится на SQL-Сервере и передается на клиентские места по мере обращения за информацией. Что исключает передачу больших объемов данных на клиентские места и рационально использует мощность сервера баз данных. Система Miracle предоставляет удобный, простой и вместе с этим мощный механизм проектирования и управления базой данных. Вам не придется вдаваться в тонкости конструирования сложных SQL предложений, для достижения высокопрофессиональных результатов.
  Все приложения разрабатываемые вами в системы Miracle будут являются пользовательским интерфейсом для взаимодействия с базой данных. При этом конечный пользователь должен быть совершенно не в курсе механизмов работы с СУБД и именно на программисте лежит ответственность по предоставлению необходимого и понятного интерфейса работы. В свою очередь система Miracle предоставляет программисту необходимый набор компонентов для проектирования и управления СУБД.

Структура базы данных
Таблица

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

Рисунок 1 Таблица “Города”

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

Рисунок 2 Отношения между таблицами

  При этом следует помнить, что отношения между таблицами, проектируемые в рамках Конструктора баз данных, являются - проектными. Т.е., данные отношения могут быть использованы как метод управления данными в таблицах, но это не осуществляются автоматически. Проектные отношения в системе Miracle строятся от “подчиненного” к “мастеру”. Для этих целей организовывается специализированная характеристика в объекте БД, “связь с другим объектом базы данных”.

Отношения как метод отбора данных
Понятие отношений

  Отношения это связи между объектами базы данных. Специфическое отношение связи или просто отношение связи, называют также отношение родитель-потомок или отношение зависимости существования. Отношение устанавливает связь между объектами базы данных, при которой каждый экземпляр одной сущности, называемой родительской сущностью, ассоциирован с произвольным количеством экземпляров второй сущности (сущности-потомка). Каждый экземпляр сущности-родителя может иметь ноль, один или более связанных с ним экземпляров сущности-потомка. Следует помнить что проектные отношения строятся от потомка к родителю. Т.е. именно в сущности-потомок имеется характеристика “связь с другим объектом”, что и устанавливает проектное отношение к выбранной сущности-родителя. Такой подход поддерживается различными методологиями построения информационной модели, например IDEF1X. Характеристика, устанавливающая отношения - линк-поле предоставляет дополнительные механизмы доступа к информации в сущности-родитель.

Отношения между таблицами (мастер-подчиненный)

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

Рисунок 3 Пример отношения Мастер-подчиненная-Мастер

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

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
Реестр читателей
Иванов
Петров
Лукошкина
Сидоров
Малова

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
Книга “Б”20-11-199622-11-1996Лукошкина
Книга “Г”30-11-199625-12-1996Петров
Книга “В”02-12-199603-12-1996Лукошкина
Книга “Б”10-12-199620-12-1996Малова
Книга “А”25-12-199627-12-1996Лукошкина
Книга “Д”25-12-199630-12-1996Иванов

  Проектные отношения между таблицами могут быть активизированы в разных направлениях. А именно, в направлении 1-N, когда набор данных в “подчиненной” таблице зависит от выбранной “записи” в мастер таблице. В нашем примере, активизация связи между “журналом выдачи книг” и “реестром книг”, в данном направлении позволит получать доступ в таблице “журнал выдачи книг” только к тем записям, которые принадлежат выбранной записи в “реестре книг”. Пример предоставляемой информации в таблицах, после активизации проектных отношений.

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
 
 
← Выбранная запись
 
 
 

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
Книга “Б”20-11-199622-11-1996Лукошкина
Книга “Б”10-12-199620-12-1996Малова

  Одновременная активизация связи между “журналом выдачи книг” и “реестром пользователей” в направлении N-1, позволяет получить одну запись в таблице “реестр читателей” на выбранную запись в “журнале выдачи книг”.

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
Реестр читателей
Малова

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)  
Книга “Б”20-11-199622-11-1996Лукошкина  
Книга “Б”10-12-199620-12-1996Малова ← Выбранная запись

  Это второе направление отношений между таблицами, когда проектное отношение “подчиненная→мастер” используется в обратном направлении. В этом случае в подчиненной “мастер таблице”, всегда будет доступна только одна запись.
  Управляя проектными отношениями между таблицами, возможно, достигать необходимого уровня “отбора” информации, не прибегая к сложными методам “выборки”.

Отношения между таблицами (мастер-подчиненный-мастер)

  Система Miracle позволяет одновременно активизировать несколько проектных отношений одновременно. Например, описанные выше таблицы, возможно, использовать следующим образом. Активизировав подчинение “журнала выдачи книг” к “реестру книг”, достигается выборка данных в подчиненной таблице по активной (выбранной) записи в объекте БД “реестр книг”. Одновременная активизация подчинения “журнала выдачи книг” к “реестру читателей” достигается одновременная выборка данных в “реестре выдачи книг” по выбранным записям в активных мастер-таблицах.
  В нашем примере набор предоставляемых данных выглядит следующим образом:

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
Реестр читателей
Иванов
Петров
Лукошкина
Сидоров
Малова

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
Книга “Г”30-11-199625-12-1996 Петров

  Одновременное использование нескольких активных мастер-таблиц позволяет получать эффективный и простой в проектировании пользовательских приложений механизм управления базой данных.

Древовидные отношения, ссылка таблицами на саму себя.

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

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

  Данный тип отношений позволяет разрешить “ограниченность” вложенности, использовав только одну таблицу для хранения однотипной информации. Поясним на примере предложенный метод.

Объединение

  Следующий метод отбора информации из таблиц - объединение. Данный механизм позволяет организовывать отбор данных по принципу предоставления информации в подчиненной таблице не на выбранную запись в мастер таблице, а на все данные, на доступные записи в мастер таблице.
  Предположим нам необходимо иметь пользовательское приложение позволяющее отображать список читателей получавших выбранную книгу. Для этой цели необходимо активизировать проектные отношения между “реестром выдачи книг” и “журналом книг” по схеме 1-N. Таким образом, достигаем выборки данных в “реестром выдачи книг” на выбранную запись в объекте базы данных “журналом книг”.

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
 
 
← Выбранная запись
 
 
 

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
Книга “Б”20-11-199622-11-1996Лукошкина
Книга “Б”10-12-199620-12-1996Малова

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

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
Реестр читателей
Лукошкина
Малова

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
Книга “Б”20-11-199622-11-1996Лукошкина
Книга “Б”10-12-199620-12-1996Малова

  Система Miracle не накладывает ограничений на количество и механизмы активизации проектных отношений.

Клон объекта базы данных

  Часто бывает необходимо иметь одновременно несколько выборок данных в одной таблице. Это возможно достигнуть, использовав механизм “клонирования объекта базы данных”. Клон не является новой физической копией необходимой таблицы, а представляет собой ее виртуальное повторение.
  Рассмотрим пример использования клонов. Предположим, что в рамках одного приложения необходимо предоставить интерфейс по отображению данных в таблице “журнале выдачи книг” по выбранной книге, имя читателя в “реестре читателей” и список всех книг выдаваемых найденному читателю. Для достижения данного результата нам необходимо:

  1. активизировать отношения между таблицей “журналом выдачи книг” и “реестром книг” по схеме 1-N.
    Реестр книг
    Книга “А”
    Книга “Б”
    Книга “В”
    Книга “Г”
    Книга “Д”
     
     
    ← Выбранная запись
     
     
     

    КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
    Книга “Б”20-11-199622-11-1996Лукошкина
    Книга “Б”10-12-199620-12-1996Малова
  2. активизировать отношения между таблицей “журналом выдачи книг” и “реестром читателей” по схеме N-1.
    Реестр книг
    Книга “А”
    Книга “Б”
    Книга “В”
    Книга “Г”
    Книга “Д”
     
     
    ← Выбранная запись
     
     
     

    КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)  
    Книга “Б”20-11-1996 22-11-1996Лукошкина ← Выбранная запись
    Книга “Б”10-12-1996 20-12-1996Малова  

    Реестр читателей
    Лукошкина

  3. активизировать отношения между таблицей “реестр читателей” и клоном “журнал выдачи книг” по схеме 1-N. Что позволит получить список книг, выдаваемый найденному читателю.
    Реестр книг
    Книга “А”
    Книга “Б”
    Книга “В”
    Книга “Г”
    Книга “Д”
     
     
    ← Выбранная запись
     
     
     

    КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)  
    Книга “Б”20-11-1996 22-11-1996Лукошкина ← Выбранная запись
    Книга “Б”10-12-1996 20-12-1996Малова  

    Реестр читателей
    Лукошкина

    КНИГА (поле ссылкаДата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка) Клон
    Книга “Б”20-11-1996 22-11-1996Лукошкина 
    Книга “В”02-12-199603-12-1996 Лукошкина 
    Книга “А”25-12-1996 27-12-1996Лукошкина 
  4. активизировать отношения между клоном таблицы “журнал выдачи книг” и клоном “реестра книг” по схеме объединения. Что позволит получить полный список выдаваемых книг найденному читателю.
    Реестр книг
    Книга “А”
    Книга “Б”
    Книга “В”
    Книга “Г”
    Книга “Д”

    КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
    Книга “Б”20-11-199622-11-1996Лукошкина
    Книга “Б”10-12-199620-12-1996Малова

    Реестр читателей
    Лукошкина

    КНИГА (поле ссылкаДата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)Клон
    Книга “Б”20-11-199622-11-1996Лукошкина 
    Книга “В”02-12-199603-12-1996Лукошкина 
    Книга “А”25-12-199627-12-1996Лукошкина 

    Реестр книг
    Книга “А”
    Книга “Б”
    Книга “В”

  При этом в базе данных на SQL-сервере существует только три таблицы содержащие информацию. Общая схема используемых таблиц и клонов может выглядеть следующим образом:

X:\MIRACLE\TSK\BOOK.TSK, Mon Jun 02 17:54:43 1997
T1 :    * Реестр книг                        
 ^
 |__ T3 :    * Журнал выдачи книг           (связь 1-N)
   ^
   |__ -T2 :    * Реестр читателей            (связь N-1)
     ^
     |__ T3 : 1:    * Журнал выдачи книг     (связь 1-N), клон-1

T1 : 1:  * Реестр книг                       (объединение), клон-1

  Информация, указанная курсивом, является дополнительной. И не представляется в реальном отчете о структуре объектов БД, используемых в проекте приложения.

Выборка

  Выборка - представляет собой механизм получения данных по заданным критериям. Работая с сервером базы данных, и осуществляя доступ к данным через механизм запросов, вы всегда получаете “выборку”. Поэтому состояние таблиц в выборке наиболее частое. Работа с таблицами в выборке, несколько отличается от работы с прямым доступом. Программирование в системе Miracle в большей части будет основано на различном использовании выборок, как метод получения необходимого набора информации. При этом следует помнить, что статус таблицы может задавать начальный критерий выборки, который невозможно отменить. Так таблицы имеющие статус от “структура” до “пользователь” всегда накладывают определенные критерии выборки. Что приводит к тому, что общение с данным классом таблиц всегда основано на механизме выборок. Механизм выборки предоставляет мощный метод по управлению базой данных, с переносом обработки выполнения с клиентского компьютера на сервер баз данных.
  При работе с выборкой следует помнить, что реальное осуществление выборки по указанному предложению будет осуществлено только в момент попытки использования информации, или иной работы с таблицей, в которой применили выборку. Следовательно, все сообщения от таблиц имеющих отношения с рассматриваемой таблицей не будут видоизменять свой набор данных, даже если активизирована команда синхронизация данных с ведущей таблицей. Так же, если условия выборки соответствуют текущему состоянию таблицы, то обработка дублирующего предложения будет отменена.

В таблице

  Применение выборки к таблице позволяет получить необходимый набор данных отвечающих заданным критериям. Критерий выборки представляет собой условие отбора данных. По каждой характеристики объекта базы данных можно устанавливать необходимые условия выборки. Объект базы данных имеет элементарный интерфейс задания условий выборки. Для организации сложных условий включающих несколько условий по одному полю и т.д. используйте специализированных объект “Выборка и сортировка”. Не смотря на метод задания условий выборки, конечный результат выборка данных будет одинаковый. предположим необходимо получить список выдаваемых книг с 20-11-1996г. по 05-12-1996г. Для достижения этого результата необходимо:

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

    Реестр книг
    Книга “А”
    Книга “Б”
    Книга “В”
    Книга “Г”
    Книга “Д”

    КНИГА (поле ссылка) Дата выдачи Дата сдачи ЧИТАТЕЛЬ (поле ссылка)
    Книга “Б” 20-11-1996 22-11-1996 Лукошкина
    Книга “Г” 30-11-1996 25-12-1996 Петров
    Книга “В” 02-12-1996 03-12-1996 Лукошкина
    Книга “Б” 10-12-1996 20-12-1996 Малова
    Книга “А” 25-12-1996 27-12-1996 Лукошкина
    Книга “Д” 25-12-1996 30-12-1996 Иванов

  2. осуществив выборку данных в таблице “журнал выдачи книг” по условию - “Дата выдачи >=20-11-1996 и Дата выдачи <=05-12-1996” получаем следующую картину:
    Реестр книг
    Книга “А”
    Книга “В”
    Книга “Г”

    КНИГА (поле ссылка) Дата выдачи Дата сдачи ЧИТАТЕЛЬ (поле ссылка)
    Книга “Б” 20-11-1996 22-11-1996 Лукошкина
    Книга “Г” 30-11-1996 25-12-1996 Петров
    Книга “В” 02-12-1996 03-12-1996 Лукошкина

  Таким образом, количество данных в таблице “реестр книг” сократился, т.к. в таблице “журнал выдачи книг” количество записей ссылается только на ограниченный круг записей в таблице “реестр книг”. Напомним, что между этими таблицами активизирован механизм объединения по схеме N-1, что и позволяет разрешить поставленную задачу.

Выборка в таблице с активными отношениями

  Использование выборок к таблицам имеющих активные отношения не привносит, каких либо изменений, кроме установки дополнительные правила по предоставлению информации. Так при активных отношениях между таблицей “журнал выдачи книг” и “реестр книг” по схеме N-1, после применения выборки по условию описанного выше, мы получаем следующую картину:

Реестр книг
Книга “Г”

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)  
Книга “Б”20-11-199622-11-1996Лукошкина  
Книга “Г”30-11-199625-12-1996Петров ← Выбранная запись
Книга “В”02-12-199603-12-1996Лукошкина  

  Как видно из приведенного примера выборка не повлияла на объем предоставляемой информации, в других таблицах. При этом возможно одновременная выборка в нескольких таблицах без различия являются оно в активных отношениях или нет. Так устанавливая условия выборки в таблице “реестр книг” - “название книги=Книга А”, мы получаем следующую картину:

Реестр книг

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка) 
Книга “Б”20-11-199622-11-1996Лукошкина 
Книга “Г”30-11-199625-12-1996Петров ← Выбранная запись
Книга “В”02-12-199603-12-1996Лукошкина 

  Т.е. не смотря на то, что потенциально в таблице “реестр книг” существуют записи, на которые есть ссылки в объекте базы данных “журнал выдачи книг”, они не соответствуют условиям выборки по таблице “реестр книг”.
  Система Miracle не предоставляет механизм по организации межтабличных условий отбора данных. Для этих целей используйте методы активизации проектных отношений и задания необходимых условий выборки по каждой таблице. Подробности задания выборок представлено в описании работы соответствующих механизмов, тип отношений.

Тип отношений

  Как говорилось ранее, проектные отношения между таблицами позволяют организовывать необходимый доступ к информации. Вид отношений может быть как 1-N и N-1. Т.е. проектные отношения “подчиненный→мастер” могут быть использованы в двух направлениях. Первое направление, когда на одну запись в «мастер-таблице» предоставляется доступный набор записей в подчиненной таблице. В данном наборе может быть от нуля до бесконечности записей, принадлежащих (имеющих ссылку на запись в мастер таблице). Так же проектные отношения могут быть использованы и в обратном направлении. Когда таблица, имеющая ссылку на другу таблицу активизирует данное отношение по схеме N-1, тем самым становится мастером по отношению к проектной «мастер-таблице». Что в свою очередь позволяет получать в подчиненной таблице только одну запись на запись в «мастер-таблице». Это верно только в том случае, если у записи в «мастер-таблице» есть ссылка на запись в подчиненной таблице. Одновременна активизация нескольких проектных отношений, позволяет строить “ромбовидные” связи между таблицами.

Рисунок 4 Пример "ромбовидны" отношений таблиц

  Система Miracle не оговаривает специальных правил по активизации проектных отношений между таблицами. Только вы сами определяете, какие отношения и в каком направлении вам необходимы. Т.е. активизация отношений их направление может меняться логикой или правилами работы программы в течении работы пользовательского приложения. Все что необходимо, так это наличие проектных отношений между таблицами. Поэтому проектируемая база данных должна является “достаточным” информационным пространством разрабатываемой системы. С тем, что бы на этапе разработки пользовательских приложений была возможность проектировать необходимое управление объектам базы данных по выбранным таблицам.

Рисунок 5 Пример информационного пространства

  Проектирование, дополнение, модификация структуры базы данных осуществляется в рамках “Конструктора базы данных” входящего в штатный состав системы Miracle.

Линк-поле

  Линк-поле является характеристикой объекта базы данных и позволяет получать доступ к информации сущности-родитель. Например, рассмотрим таблицы, имеющие следующие отношения:

Реестр книг
Книга “А”
Книга “Б”
Книга “В”
Книга “Г”
Книга “Д”
Реестр читателей
Иванов
Петров
Лукошкина
Сидоров
Малова

КНИГА (поле ссылка)Дата выдачи Дата сдачиЧИТАТЕЛЬ (поле ссылка)
Книга “Б”20-11-199622-11-1996Лукошкина
Книга “Г”30-11-199625-12-1996Петров
Книга “В”02-12-199603-12-1996Лукошкина
Книга “Б”10-12-199620-12-1996Малова
Книга “А”25-12-199627-12-1996Лукошкина
Книга “Д”25-12-199630-12-1996Иванов

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

Журнал выдачи книгНазвание объекта базы данных
   Дата выдачиХарактеристика
   Дата сдачиХарактеристика
   КнигаХарактеристика (Линк- поле)
     Название книги Характеристика в сущности-родитель
   ЧитательХарактеристика (Линк-поле)
     ИмяХарактеристика в сущности-родитель

  Механизм “линк-поля” предоставляет простой способ организации доступа к информации, получаемой по методике активизации отношения N-1.

Защита

  Осуществляя проектирование управляющей логики приложения, возможно, использовать различные операции над данными. Все операции применяются по отношению к текущему набору данных - записи. Однако возможно использовать и групповые операции. Применение, которых будет относиться ко всему доступному набору данных. Детальное описание предоставляемых команд будет содержать подробности работы, как в одиночном, так и групповом применении. Единственное что хотелось подчеркнуть так это то, что применение различных команд будет исполняться с учетом “доступа” пользователя к данным. Так попытка удаления информации из объекта базы данных со статусом “узел” не приведет к ожидаемому результату, если доступ к данным основан на механизмы консолидации информации для вышестоящих узлов. Тем самым система защищает информацию от не санкционированного изменения пользователями не имеющего полного доступа к данным. Это так же распространяется и на применение таких операций как каскадное удаление. Выполнение данного механизма будет осуществлен с учетом “доступности” данных, а не их предоставления. Например, в системе имеется ряд таблиц имеющих статус “узел”.

  Для работы с данными таблицами создано приложения (назовем его “Контроль заказов”), предоставленное для работы различным служащим. Иерархия на Сервере управления выглядит следующим образом:

Предприятие
    |
    |-- Отдел № 1
         |-- Служащий -А-
         |      |-- Контроль заказов
         |
         |-- Отдел № 2
              |-- Служащий -Б-
                     |-- Контроль заказов

  Каждый из служащих эксплуатировал приложение “Контроль заказов”. Так как статус объектов базы данных “узел”, информация создаваемая служащим -Б- доступна служащему -А- Предположим что в указанных таблицах хранится следующая информация:

Реестр заказов
Заказ 1 (служащий -А-)
 
Заказ 2 (служащий -А-)
 
 
Заказ 1 (служащий -Б-)
Заказ 3 (служащий -А-)
Заказ 2 (служащий -Б-)
 
Заказ 3 (служащий -А-)
 
Заказ 3 (служащий -Б-)
Журнал выполнения заказов
21-09-1996
27-09-1996
11-09-1996
22-09-1996
30-09-1996
10-09-1996
15-10-1996
18-09-1996
23-09-1996
23-09-1996
11-11-1996
22-11-1996

  Не смотря на то, что служащему -А- предоставлены данные и из подчиненных узлов, при попытке применения каскадного удаления к данным в “Реестре заказов”, данная команда будет применима только к доступным для данного пользователя записям. Состояние таблиц после выполнения команды:

Реестр заказов
Заказ 1 (служащий -Б-)
Заказ 2 (служащий -Б-)
 
Заказ 3 (служащий -Б-)
Журнал выполнения заказов
10-09-1996
18-09-1996
23-09-1996
22-11-1996

  Таким образом, использование таблиц с различным статусом вносит системные методы контроля над целостностью информации в объектах базы данных.

Проектирование

  Проектирование информационного пространства необходимого для выполнения поставленных задач зависит от характера требований. Система Miracle предполагает использование большого количества таблиц находящихся в различных отношениях. При этом эксплуатация “клонов” объектов базы данных позволяет иметь ряд таблиц эксплуатирующих в различных режимах. Структура базы данных должна проектироваться с учетом требований реляционной модели и с учетом возможных статусов объектов базы данных. Что позволяет проетировать системывклющающих управляющую плоскость в информационную модель. Т.е. совмещение иерархической модели управления доступом к данным, хранимых в реляционной модели.

SQL-запросы (предложения)

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

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

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

Уникальность значений в объектах БД

  Согласно заданной структуре таблицы, набор полей или данные одного поля могут иметь уникальность, что приводит к использованию системного механизма слежения “за информационной целостностью” данных хранимых в объектах БД.

Использование БД

  Использование базы данных для разных целей может требовать различного подхода по их управлению. Конечно, конкретное применение механизмов доступа к информации в большей степени зависит от характера решаемой задачи, однако применение разных методов для разных целей может значительно облегчить проектирование пользовательских приложений.

Для организации ввода данных

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

Для организации обзора и предоставления информации

  Эксплуатация таблиц для обзора может позволить более простую организацию управления, выборки и иных режимов предоставления доступа пользователя к информации.

Транзакция

  Транзакция - действие или группа действий, которые должны быть успешно осуществлены над одной или несколькими таблицами, до того как все такие действия будут подтверждены. Если одно действие (для группы) не может быть выполнено, то все действия в группе или одиночное действие будут отменены. Транзакция обеспечивает информационную целостность базы данных как в многопользовательском режиме доступа к данным, так и при аппаратных сбоев. Система Miracle автоматически предоставляет режим транзакций для каждого действия над объектом базы данных. Для организации транзакции над группой действий используйте механизм База данных представленный объектом системы БД - “База данных
  Рассмотрим пример, необходимо организовать бронирование товара хранимого на складе. Исходя из того, что данный товар, может быть забронирован с нескольких рабочих мест, необходимо организовать группу действий в одной транзакции, с тем, что бы исключить момент бронирования товара на нулевой остаток. В группе действий может быть включен контроль над количеством остатка товара, результаты которого отменит ввод новой брони, если в момент ее регистрации остаток товара стал равен нулю.

Способ доступа к данным

  Организация взаимодействия, управления информацией в базе данных строится с использованием нескольких типов компонентов системы.

Объект базы данных

  Объект базы данных - предоставляет основной, не визуальный (по отношению к конечному пользователю), режим управления и проектирования поведения таблиц. Структура каждой таблицы состоит из:

Навигатор обязательно
Характеристика (поле) (для хранения информации) в зависимости от структуры таблицы
Характеристика (поле) (для организации отношений между таблицами) в зависимости от структуры таблицы

  Количество характеристик (полей), их сочетание и т.д. зависит от требований решаемых задач. Но каждая таблица содержит навигатор позволяющий осуществлять действия по навигации в таблице, организации новой записи, сохранения информации, проведения каскадных и простых удалений записей из таблицы и много другое. Характеристики (поля) таблиц могут быть двух видов, один из которых предназначен для организации хранения информации в определенном типе, другой для организации отношений между таблицами. В зависимости от вида характеристики возможна организация извлечения информации из поля, ее ввод в объект базы данных, установка отношений между таблицами, активизация механизма объединения и т.д. Однако все эти действия не представлены для пользователя в виде специализированных интерфейсов. Эта задача полностью лежит на программистах проектирующие конечные пользовательские приложения.

Визуальные объекты

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

Специализированные объекты

  Специализированные объекты - представляют собой различные компоненты для осуществления строго заданных действий. В штатный состав системы Miracle входят набор различных спецобъектов, позволяющих организовывать схемы выборок по таблицам с возможностью предоставления интерфейсов для конечного пользователя, организовывать группу действий в виде транзакций. При этом ряд специализированных объектов могут использоваться в сочетании с визуальными компонентами для преобразования информации хранимой в БД в более приемлемый вид. Например, в таблице хранится дата регистрации заказа, отображая данную информацию в визуальном компоненте “список”, необходимо представлять дату в виде строки - число, название месяца, год. Достигнуть этого, возможно, организовать следующую информационную цепочку:

Характеристика (поле таблицы)
    ↓ (предоставляет хранящуюся информацию)
Спец.объект - Форматирование-Дата
    ↓ (предоставляет преобразованную информацию)
Поле, Списка (отображение информации)

Заключение

  Дальнейшее описание объекта базы данных отразит конкретное применение тех или иных механизмов в данном компоненте. Описание будет строиться с учетом того, что вы понимаете необходимость описываемых методов и их место в общей концепции управления, ввода, модификации и извлечения информации из таблиц базы данных с применением системы Miracle.



Предыдущий раздел На начал документауции На оглавление Следующий раздел

©1995,1997,2000 НПФ ”И.В.А.”. Все права сохранены.
Название фирм и торговых марок используются только в качестве пояснения.