Выпустив на рынок первую в мире объектно-реляционную СУБД Oracle8, корпорация Oracle еще раз убедительно подтвердила свое лидерство в мире “высокой моды” для систем обработки данных. Передовые производители инструментальных систем тотчас же отреагировали на это выпуском новых версий. Delphi в четвертой версии обрела новые возможности, предоставив новые возможности для работы с объектами Oracle8.
Delphi4 снабжена новыми компонентами, позволяющими строить эффективные приложения с использованием новых подходов к построению структур данных. А раз уж лидером в этой области является Oracle, то и все типы данных из Oracle8 должны поддерживаться. Корпорация 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, который предназначен для хранения объектов типа 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.
Delphi4, как уже упоминалось выше, имеет мощные средства для работы с вложенными таблицами. Продемонстрируем это на примере простейшего проекта.
Откроем новый проект, на форму поместим компонент TDatabase.
Для того, чтобы сделать доступными поля вложенной таблицы, поместим на форму компонент NestedTable и в выпадающем списке для свойства DataSetField выберем Table1COURSES.
Поместим на форму компонент DataSource1 и DataSource2, затем установим их свойства DataSet в Table1 и NestedTable1, соответственно.
Для визуализации данных из таблиц, установим на форму компонент TBDgrid.
Установим его свойство DataSet в Table1, в таблице появятся данные(см.
рис внизу).
Координаты автора:
Учебно-консалтинговый центр Interface Ltd.,
тел. (095)135-55-00, 135-25-19,
e-mail: mail@interface.ru