Меню
Главная
УСЛУГИ
Авторизация/Регистрация
Реклама на сайте
 
Главная arrow Информатика arrow Базы данных
< Предыдущая   СОДЕРЖАНИЕ   Следующая >

Лекция 8. Объектно-реляционная база данных

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

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

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

Виды структур

"Промежуточной" моделью данных между реляционными и объектно-ориентированными базами данных является объектно-реляционная модель (ОРБД).

Ее появление вызвано двумя причинами.

1. Сложностью построения новой модели данных "с листа". Удобнее это делать на основе имеющихся проверенных разработок.

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

Различают, как отмечалось ранее, две разновидности ОРБД – гибридные и расширенные.

1. В гибридных ОРБД [1-3] интерфейс пользователя и алгоритм приложения выполнены с учетом объектно-ориентированного подхода, тогда как собственно БД является реляционной. Примерами могут служить СУБД Paradox и InterBase в рамках программного продукта Delphi. В каком-то смысле гибридной можно считать СУБД Access при использовании языка программирования Visual Basic for Application (VBA).

2. В расширенных (постреляционных) ОРБД предполагается объектно-ориентированное построение собственно базы данных путем использования известных и введения новых типов данных, связанных между собой. Эта связь чаще всего осуществляется созданием методов с помощью триггеров и хранимых процедур. В расширенной объектно-реляционной модели [1-3] допускается, в отличие от реляционной модели данных, неатомарность данных в поле. В таких полях может располагаться другая таблица или массив. К подобным СУБД относятся Informix Universal Server, Oracle 8, UniSQL. В таких СУБД широко используется язык SQL3.

Заметим, что постреляционными [1] называют БД, в которых частично проведена денормализация данных, при этом допускается нетомарность записей.

Рассмотрим более подробно обе разновидности.

Гибридные ОРБД

Эта разновидность ОРБД рассмотрена на примере программного продукта Delphi.

Приложение Delphi изначально предназначалось для автоматизации программирования (объектно-ориентированного программирования), поскольку позволяло резко поднять производительность труда программистов за счет использования готовых "кубиков-программ". Требовалось лишь должным образом соединить эти "кубики".

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

При работе Delphi на экране монитора появляется "картинка" (рис. 8.1). Компоненты-классы разделены на группы, определяемые соответствующими закладками (страницами).

Форма Delphii, сама являясь объектом, служит "коллектором" для объектов. Как только компонент помещается в форму (и получает порядковый номер), он становится объектом.

Заметим, что компоненты TPanel, TBevel также являются контейнерами (в форме), используемыми для форматирования, дизайна (разделения объектов и их выравнивания). Другими "миниконтейнерами" служат компоненты DataModule и TQuickRep (отчет).

Экран для работы с приложением Delphi

Рис. 8.1. Экран для работы с приложением Delphi

Для активного объекта в форме при построении программ в "Инспекторе объектов" могут использоваться свойства (страница "свойства") и события (закладка "события"), обычно запускающие программы-методы.

Все компоненты разделены на следующие основные группы: Standard, Additional, Dialogs, Win32, System, VCL, Internet, DataAccess, DataControl, QReport, Decision Cube, ActiveX. В процессе автоматизированного программирования чаще всего используют первые четыре страницы.

С позиций собственно баз знаний и баз данных следует обратить особое внимание на страницы DataAccess и DataControI. К ним примыкают страницы QReport, Decision Cube.

Состав компонентов некоторых закладок DataAccess и DataControI показан на рис 8.2. На рис. 8.3 и 8.4 показаны свойства и события компонента ТТаblе.

Рассмотрим описание программных возможностей Delphi.

Приложение Delphi может работать с тремя реляционными СУБД: dBase, Paradox – в локальном режиме (рис. 8.3); InterBase, который инсталлируется отдельно, – в режиме клиент-сервер.

Заметим, что СУБД InterBase возможно использовать в двух вариантах: локальном (сервер и клиент на одном компьютере, используется обычно в процессе отладки) и удаленном (сервер и клиент на разных компьютерах).

Состав некоторых страниц компонента Delphi

Рис. 8.2. Состав некоторых страниц компонента Delphi

Независимо от используемой СУБД интерфейс пользователя и алгоритм приложения строится с использованием объектно-ориентированного подхода. Подтвердим кратко это утверждение.

А. Речь первоначально пойдет о реализации собственно базы данных.

А1. Первоначально задается имя БД. С помощью этого имени осуществляется ссылка на БД. Однако при этом требуется указывать порой длинный путь (адрес) доступа, что неудобно при многократном обращении к БД. В силу этого чаще используется али- ас (синоним) БД – имя, заменяющее длинный путь. Построение алиаса ведется с помощью Delphi-утилит BDE Administrator и SQL Explorer.

А2. Создание таблиц БД для СУБД Paradox (локальный режим) и InterBase (режим "клиент-сервер"), равно как и заполнение БД данными, специфично для каждого случая. Нетрудно видеть, что при создании собственно базы данных не используется объектно- ориентированный подход.

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

Интерфейс составляется с учетом пожеланий пользователя. Вид интерфейса зависит от инструментария, предоставляемого СУБД или программным приложением.

В качестве инструментов для интерфейса могут быть система форм (Form), система кнопок, система элементов управления (список, поле со списком и т. д.).

Свойства компонента Table

Рис. 8.3. Свойства компонента Table

Для Delphi исходным инструментом чаще является система форм, вызываемая из головного меню или с помощью системы элементов управления и меню в главной форме.

Б1. Формы Delphi.

События компонента Table

Рис. 8.4. События компонента Table

Б1.1. Формы Delphi часто называют окнами. Окно называют модальным (М), если доступ к предыдущему открытому окну возможен только после закрытия М-окна. В противном случае окно называют немодальным.

Пусть имеются две формы – Form1 и Form2, при этом Form2 вызывается из Form1.

В случае немодального окна для формы Forml пишется программный модуль uniti

procedure TForml .Button 1 Click(Senser: Tobject);

begin

Form2.Show;

end;

Чтобы можно было работать со вторым окном (формой), в программе uniti (раздел implementation) добавляется ссылка на программный модуль unit2 (формы Form2)

implementation

uses unit2;

Теперь из uniti можно запускать немодальное окно Form2.

Чтобы сделать Form2 модальным окном, следует установить ее свойство BorderStyle=bsDialog. При этом надо внести изменения в uniti: вместо Forml.Show написать Form2.ShowModal.

Б1.2. Вместо "ручного" создания многооконного интерфейса возможно использовать шаблоны, в которых выделяются два варианта:

• многодокументный интерфейс (Multiple Document Interface – М DI);

• однодокументный интерфейс (Simple Document Interface – SDI).

При использовании MDI дочерние окна не превышают по размерам родительское окно и могут располагаться мозаикой (Title) или каскадом (Cascade). В родительском окне содержится главное меню приложения. MDI организуется так же, как модальное окно, при этом свойство FormStyle=fsMDIFomi для родительского окна и FormStyle=fsMDIChild – для дочерних окон. При создании MDI возможно использование шаблона или построение MD1 с "нуля".

В последнем случае выбирается File/New головного меню Delphi и в диалоговом окне New Items на странице New выделяют значок Application, вводя по очереди родительское и дочерние окна.

SDI может содержать также несколько окон, при этом дочерние окна не ограничены размерами родительского окна, называемого иногда главным.

В программный модуль unit главного окна включаются ссылки на все дочерние unit-модули:

implementation

uses SDIWdw;

В unit-программах дочерних окон должны быть ссылки на unit- программу главного окна:

imlementation

uses SDIMain;

Перед сворачиванием главного окна первоначально сворачиваются дочерние окна.

Лучше использовать шаблоны SOI (MDI). Для этого обращаются к головному меню Delphi (File/New), входят в диалоговое окно New Items и на вкладке (странице) Projects выбирают необходимый шаблон: SDI (одна форма и один программный модуль) или MDI (две формы и три модуля).

Б2. Последовательность операций работы пользователя может быть задана с помощью меню или системы кнопок.

Б2.1. Формирование меню достаточно просто и потому подробно здесь не рассматривается. Упорядочение элементов меню (фактически – объектов), написание программ для них не отличаются от "привязывания" программ к таким элементам управления, как кнопка, поле со списком и т. д. Заметим лишь, что есть две разновидности меню – главное (TMainMenu страницы Standard) и всплывающее меню (TPopuMenu), вызываемое нажатием правой кнопки мыши.

Б2.2. Другой возможностью задания последовательности операций работы пользователя является использование системы кнопок (TButton, TBitBtn). В Delphi обычно используют меню, а кнопки чаще играют вспомогательную роль и используются, например, для закрытия форм, изменения доступа к элементам меню.

Свойствами меню, равно как и системы кнопок, наиболее часто используемыми, являются Enabled и Visible.

Б3. Гибкость меню обеспечивается использованием элементов управления.

Б3.1. Универсальные элементы управления размещены на страницах Standard, Additional, Dialog палитры компонент. К таким элементам относятся TLabel, TEdit, TMemo, TComboBox. TButton, TBitBtn.

Специфично использование TLabel. Свойство Caption применяют для задания заголовков таблиц БД, названий к таким компонентам, как TEdit, TMemo.

В свою очередь свойства Editl.Text и Memol.Line применяют для задания параметров (одно- и многострочных), например, в запросах. Пожалуй чаще всего перечисленные элементы управления используют свойства Enabled, Visible.

Б3.2. Специализированными элементами управления, связанными непосредственно с БД, являются компоненты страницы DataControl. К ним следует отнести прежде всего DBGrid, DBEEdit, DBNavigator, DBMemo.

Компоненты DBEdit позволяют создать форму базы данных в столбец. Такие формы часто применяются при работе в СУБД Access для заполнения БД.

Б4. Сообщение. Его можно сделать обычным, используя, например,

MessageDlg(Query1['Name'], mtlnformation, [mbOk], О);

Однако предпочтительнее применить схему исключительной ситуации try ... except

begin

try

Query1['Plan']< Queryl ['Fakt']

except

ShowMessage('Число вакансий меньше числа принимаемых. Измените правила или должности принимаемых');

Exit;

end;

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

В. Алгоритм приложения. Программы приложений могут быть написаны на одном или сочетании трех языков: интерфейсный SQL, вложенный SQL, Object Pascal (OP) .

B.l. Возможны три "цепочки" доступа (рис. 8.5):

TTable – TDataSource – TDBGrid (чаще используется в СУБД Paradox);

TQuery – TDataSource – TDBGrid (чаще применяются для СУБД InterBase);

TStoredProc – TDataSource – TDBGrid (ислользуют только для СУБД InterBase).

Объектно-ориентированный интерфейс пользователя (приложение Delphi)

Рис. 8.5. Объектно-ориентированный интерфейс пользователя (приложение Delphi):

BDE – Borland Database Engine (ядро Delphi)

Будем их далее называть "цепочками" Table, Query и StoredProc соответственно.

В этих "цепочках" компонент TDBGrid является визуальным, а остальные – невизуальны. Компоненты TTable, TQuery, TStoredProc обеспечивают непосредственный доступ к БД (по алиасу), тогда как компонента TDataSource играет роль "размножителя": к нему могут подключаться визуальные компоненты TDBNavigator, TDBText, TDBEdit, TDBMemo, TDBListBox, TDBComboBox и другие. Эти подключаемые компоненты (если "спрятать" компонент TDBGrid с помощью свойства Visible или, лучше, Enabled) могут образовывать "аналог" форм Access (для заполнения БД). Понятие "форма" в смысле Access в Delphi отсутствует.

Связи в "цепочках" устанавливаются в статическом режиме (построения доступа), либо в динамическом при выполнении программы.

"Цепочка" StoredProc специфична и используется только в режиме клиент-сервер, да и то редко.

В.2. Наряду с перечисленными "цепочками" могут использоваться и "укороченные цепочки", составленные из невизуальных объектов, контейнером для которых служит модуль (объектов) DataModule.

Такой контейнер организуется через меню Delphi (File/ NewDataModule). Связь между компонентами TTable – TDataSource и TQuery – TDataSource устанавливается так же, как это делается в форме при использовании ее в качестве контейнера для рассмотренных ранее "цепочек".

DataModule сохраняется под каким-либо именем, и для него создается программный модуль unit, имя которого добавляется в тексты программных модулей других форм приложения (File/Use Unit). При ссылках на такой модуль (объектов) следует сначала указать его имя, например DataModulel.DataSourcel.

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

В первом случае это имеет место при создании БД (заполнении БД данными). Обновление может осуществляться непосредственно в таблицах или через своеобразные формы, составленные из компонент TDBEdit. Такие обновления не вызывают затруднений.

В3. Вложенный SQL используется только в режиме клиент- сервер.

В4. Интерфейсный SQL используется в локальном режиме и режиме клиент-сервер.

Заметим, что интерфейсный язык SQL достаточно гибок при работе с БД, однако в нем нет понятия циклов и переходов. Кроме того, в свойстве SQL компоненты TQuery (или свойстве любой компоненты, например Memo.Text, из которой заимствуется SQL-oпeратор) может быть записан и запущен только один оператор, после выполнения которого его следует удалить и ввести новый. Таким образом, для выполнения нескольких операторов их следует вводить по одному, для чего требуется непростое программное решение, или "встраивать" в операторы Object Pascal.

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

В локальном режиме чаще используют язык Object Pascal, составляющими операторами которого могут быть SQL-операторы.

В5. Основную роль в локальном режиме играет язык программирования Object Pascal. В режиме клиент-сервер он, совместно с интерфейсным языком SQL, используется в клиентской части.

Следует отметить, что в Object Pascal существуют две разновидности программ:

1) "привязанные" непосредственно к событиям;

2) не связанные напрямую с событием (обычно "привязанные к форме") и вызываемые из других программ.

Построение первых программ широко описано в литературе, тогда как о вторых практически не упоминается. Последние пишутся полностью вручную.

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

Таким образом, в гибридной ОРБД интерфейс пользователя и •алгоритм приложения построены с использованием объектно-ориентированного подхода, а собственно база данных – реляционная.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 
Предметы
Агропромышленность
Банковское дело
БЖД
Бухучет и аудит
География
Документоведение
Журналистика
Инвестирование
Информатика
История
Культурология
Литература
Логика
Логистика
Маркетинг
Медицина
Менеджмент
Недвижимость
Педагогика
Политология
Политэкономия
Право
Психология
Религиоведение
Риторика
Социология
Статистика
Страховое дело
Техника
Товароведение
Туризм
Философия
Финансы
Экология
Экономика
Этика и эстетика