Работа с объектами Oracle8. Правила хорошего тона для инструментальных систем

Е. Крылов, Interface Ltd.


Выпустив на рынок первую в мире объектно-реляционную СУБД Oracle8, корпорация Oracle еще раз убедительно подтвердила свое лидерство в мире "высокой моды" для систем обработки данных. Передовые производители инструментальных систем тотчас же отреагировали на это выпуском новых версий. Delphi 4.0 обрела новые функции, предоставив программистам возможности для работы с объектами Oracle8.
Delphi 4.0 содержит новые компоненты, позволяющие создавать эффективные приложения с использованием новых подходов к построению структур данных. Поскольку лидером в этой области является Oracle, то и все типы данных, имеющиеся в Oracle8, поддерживаются и в Delphi 4.0. Корпорация Inprise блестяще с этим справилась, целиком и полностью оправдав свою репутацию лидера на рынке инструментальных средств. Вложенные таблицы пришли на смену более сложным в обращении с ними отношениями "master- detail". Вместо того, чтобы постоянно заботиться о правильности работы с такими конструкциями, разработчики, имеющие дело с Oracle8, представляют себе единую конструкцию вложенной таблицы, не особенно интересуясь, "а что там внутри?". Помимо удобства использование вложенных таблиц принесло четырехкратное увеличение производительности при работе с данными.
Вложенной таблицей называется реляционная таблица с неупорядоченными элементами данных одного типа, которые встроены как столбцы в другую таблицу. С вложенными таблицами можно выполнять такие же операции как с обычными реляционными таблицами. Как уже было сказано выше, использование вложенных таблиц позволяет избежать сложностей, которые возникают при использовании отношений "master-detail". Содержательно это означает, что вместо некоторых столбцов стоят другие, подчиненные таблицы.
Рассмотрим один пример. С помощью утилиты SQL*Plus Oracle8 создадим такую таблицу для хранения данных по учебным курсам некоторого факультета. (Этот пример заимствован из документации по Oracle8 Enterprise Edition – желающие могут рассмотреть его более подробно, воспользовавшись ею).
Итак, определим объектный тип Course, набрав в командной строке SQL*Plus следующий текст:
SQL> CREATE TYPE Course AS OBJECT (
 2 course_no NUMBER(4), 
 3 title VARCHAR2(35),
 4 credits NUMBER(1));
Затем определим тип CourseList как таблицу типа Course. Тип CourseList предназначен для хранения объектов типа Course_Next:
SQL> CREATE TYPE CourseList AS TABLE OF Course;
И наконец создадим таблицу department , которая имеет столбец типа CourseList :
SQL> CREATE TABLE department (
 2 name VARCHAR2(20),
 3 director VARCHAR2(20),
 4 office VARCHAR2(20),
 5 courses CourseList) 
 6 NESTED TABLE courses STORE AS courses_tab;
Каждый пункт в столбце courses представляет собой вложенную таблицу, которая будет содержать информацию о курсах, предлагаемых факультетом (department).
Предложение NESTED TABLE необходимо, чтобы указать на то, что department имеет столбец, являющийся вложенной таблицей. Запустив из Oracle SQL Worksheet этот скрипт, сгенерируем в базе данных таблицу department со вложенной таблицей courses.
Теперь рассмотрим на примере простейшего проекта, как организована работа со вложенными таблицами в Delphi 4.0.
Создадим новый проект и поместим на форму компонент TDatabase.
Установим в свойстве DatabaseName имя базы данных, а в AliasName – ее алиас.
Следующим шагом будет установка компонента TTable. Это делается примерно так же как в предыдущих версиях Delphi. Отличие состоит в том, что в списке свойств компонента появилось новое свойство ObjectView, которое для работы с Oracle8 следует установить в состояние True.
После двойного щелчка мышью по изображению таблицы появится форма Form1.Table1. Нажав на правую клавишу мыши, вызовем редактор полей (Field Editor), затем из меню выберем поле AddFields и добавим поля все поля из таблицы department.
Для того, чтобы сделать доступными поля вложенной таблицы, поместим на форму компонент NestedTable и в раскрывающемся списке для свойства DataSetField выберем Table1COURSES.
Поместим на форму компонент DataSource1 и DataSource2, затем установим их свойства DataSet в Table1 и NestedTable1 соответственно.
Для визуализации данных из таблиц поместим на форму компонент TBDgrid. Установим его свойство DataSet в Table1, в таблице появятся данные.
Добавим компоненты для управления доступом к данным.
И, наконец, последний шаг – запуск приложения. В маленьком окне – данные из вложенной таблицы, для доступа к которой нужно нажать на кнопку "..." в столбце COURSES.

Interface Ltd.


Reklama.Ru. The Banner Network.