Назад в раздел
Работа с объектами Oracle8. Правила хорошего тона для инструментальных систем
div.main {margin-left: 20pt; margin-right: 20pt}
Работа с объектами 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.
|
|
|
|