Объектные СУБД

Автор работы: Пользователь скрыл имя, 28 Февраля 2014 в 06:48, курсовая работа

Краткое описание

В настоящее время еще не принят единый стандарт для разработки объектных СУБД.
Цель данной курсовой работы – рассмотреть теоретические аспекты проектирования объектных баз данных.
Для достижения цели курсовой работы поставлены следующие задачи:
Подобрать и изучить литературу по данной теме;
Исследовать состояние и разработанность данной темы;

Содержание

Введение
Основная часть
Общие понятия объектных СУБД
Объектно-ориентированные СУБД
Объектно-реляционные СУБД
Заключение
Глоссарий
Список использованных источников

Прикрепленные файлы: 1 файл

Курсовая.doc

— 247.00 Кб (Скачать документ)

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

•    Реляционные СУБД задумывались для обеспечения ассоциативного доступа с учетом информационного содержимого, поэтому они обладают слабыми средствами навигационного доступа, т.е. доступа по принципу перемещения между отдельными записями.

  В ответ на все возрастающую сложность приложений баз данных появились две "новые" модели: объектно-ориентированная модель данных (Object-Oriented Data Model — OODM) и объектно-реляционная модель данных (Object-Relational Data Model — ORDM), которая прежде называлась расширенной реляционной моделью данных (Extended Relational Data Model — ERDM). Объектные СУБД способны поддерживать стандартные деловые приложения с помощью таких же средств и таких же простых операций, как их реляционные аналоги. В частности, в следующей спецификации SQL3, предпринята попытка устранить многие из описанных выше недостатков. Например, предусмотрена возможность определения новых типов данных и операций как части языка определения данных, а также возможность добавления новых конструкций для того, чтобы сделать язык вычислительно полным.

 

 

 

 

1.3 Объектные типы и  объектные таблицы

Объектные типы в Oracle8 являются аналогом типа записи в IUS. Как и в IUS, для доступа к отдельным полям значений объектного типа используется “точечная” нотация.

В Oracle 8 i при определении объектного типа можно, помимо спецификации структуры значений этого типа, определить и набор методов данного типа. Методы представляют собой функции или процедуры, написанные на PL/SQL, Java, C или другом языке и сохранённые в БД или вне её (при наличии регистрации в БД).

Любой метод объектного типа попадает в одну из трёх категорий:

  • методы-члены
  • статические методы
  • методы сравнения.

Методы-члены вызываются в нотации

имя_объекта.имя_метода ( список_параметров ) имеют неявный параметр SELF и могут обращаться к значениям атрибутов объекта.

Статические методы вызываются в нотации

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

Методы сравненияслужат для сравнения экземпляров объектов. Сравнение объектов может производиться с помощью методов вида MAP или вида ORDER. Метод типа MAP принимает в качестве параметра объект некоторого объектного типа, а возвращает значение одного из встроенных типов, которое может использоваться в операциях сравнения и сортировки. Таким образом, этот метод выполняет отображение объекта на значение одного из встроенных типов.

Метод типа ORDER сравнивает два объекта и возвращает –1, если первый объект меньше второго, 0,  если объекты равны, и 1, если первый объект больше второго.

Если при определении объектного типа метод сравнения не задан, то объекты этого типа можно сравнивать только на равенство/неравенство, причём объекты не должны содержать элементов тип LOB. Тогда объекты считаются считаться равными, в том и только в том случае, когда все их элементы не содержат неопределенных значений, и значения соответствующих элементов совпадают.

Каждый объектный тип имеет определяемый системой метод-конструктор, который создаёт новый объект этого типа и присваивает значения его атрибутам. Метод-конструктор – это функция, которая возвращает объект данного типа. Имя метода-конструктора совпадает с именем объектного типа, имена и типы параметров конструктора – с именами и типами атрибутов объектного типа.

Объектной таблицей в Oracle 8 называется таблица, строки которой имеют объектный тип. В Oracle 8 не поддерживалось наследование (ни типов, ни таблиц), но уже в Oracle 8 i появилась возможность наследования таблиц почти в той же форме, как это делалось в IUS , но без поддержки параллельной иерархии наследования объектных типов.

К объектным представлениям можно обращаться так же, как и к объектным таблицам (по крайней мере, по выборке данных). Можно определять объектные представления на основе других представлений (возможно, объектных).

Использование ссылочных типов

В Oracle 8 строки объектных таблиц называются строчными объектами ( row objects), а столбцы этих строк – столбцевыми объектами ( column objects ). Для всех строчных объектов обеспечивается возможность уникальной идентификации. Используется понятие объектного идентификатора, и столбец любой таблицы может быть определен на встроенном типе REF. Значения этого столбца являются своего рода указателями на строчные объекты той же самой или другой объектной таблицы. Считается, что REF - значение, указывающее на некоторый строчный объект, и сам этот строчный объект имеют разные, хотя и связные типы данных. Как утверждает Oracle , запросы с путевыми выражениями, основанными на наличии столбцов ссылочного типа, выполняются быстрее, чем эквивалентные запросы с соединениями.

Типы коллекций в Oracle 8

В Oracle 8 поддерживаются две разновидности типов коллекций: табличные типы(table types) и типы массивов. Значениями каждого типа коллекции являются коллекции (таблицы или массивы) элементов одного и того же типы (типа элемента). Тип элемента может быть встроенным или объектным типом, но не типом коллекции. Поскольку табличный тип является оригинальным изобретением компании Oracle, остановимся на нем немного подробнее. Табличный тип создается конструкцией следующего вида:

CREATE TYPE < имя типа > AS TABLE OF < тип  элемента >;

Например, при наличии определения объектного типа EMP _ T можно было бы определить табличный тип DEPENDENTS _ T следующим образом:

CREATE TYPE DEPENDENTS_T AS TABLE OF EMP_T;

После этого можно определить таблицу BOSSES, содержащую столбец, значениями которого являются таблицы, которые содержат данные о подчиненных служащего:

CREATE TABLE BOSSES

(boss      EMP_T, dependentsEMP_T PRIMARY KEY ( boss.EMP_NO ) ) Nested TABLE DEPENDENTS STORE AS DEPENDENTS_TAB;

В результате выполнения этой операции в базе данных будут созданы две таблицы – таблица верхнего уровня BOSSES и вложенная таблица DEPENDENTS _ TAB , содержащая все строчные объекты, которые соответствуют сотрудникам-подчиненным. Конечно, если в таблице верхнего уровня имелось бы несколько столбцов табличного типа, то для каждого из этих столбцов потребовался бы свой раздел Nested TABLE . П родемонстрируем возможность выборки из таблицы с вложенной подтаблицей на примере.

Пример 3.7. Выбрать из таблицы BOSSES все пары “начальник-подчиненный”.

SELECT B.boss.EMP_NO, D.EMP_NO

FROM BOSSES B, TABLE ( B.dependents) D

Должно быть понятно, что этот запрос в сокращенной форме выражает естественное соединение таблиц BOSSES и DEPENDENTS _ TAB . Поэтому в результате не появятся данные о служащих, данные о которых включены в таблицу BOSSES и которые не имеют подчиненных. Чтобы получить данные обо всех сотрудниках, данные о которых включены в таблицу BOSSES , в синтаксисе SQL Oracle 8 требуется задать следующий запрос:

SELECT B.boss.EMP_NO, D.EMP_NO

FROM BOSSES B, TABLE ( B.dependents ) (+) D

Этот запрос соответствует требованию правого внешнего естественного соединения. Во встроенном SQL Oracle 8 имеются и другие способы доступа к вложенным таблицам, которые мы не будем обсуждать в этой статье.

Вторая разновидность типов коллекций в Oracle 8 называется VARRAY , что вполне соответствует стандарту SQL :1999 и означает “массив переменного размера” (varying -length array ). При определении типа массива указываются имя типа, тип элементов и максимальное число элементов, которые может содержать значение определяемого типа. В отличие от значений табличного типа, для элементов значений типа массива поддерживается порядок. 

Как и в случае с множествами (и мультимножествами) в IUS, на уровне прямого SQL в Oracle можно работать только с массивами целиком. Однако существует возможность привести в запросе (или другом операторе SQL) тип массива к табличному типу.

 

  1.  Объектно-ориентированные СУБД

2.1Концепция объективно-ориентированного подхода

 

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

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

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

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

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

Существуют два аспекта инкапсуляции: она может рассматриваться с точки зрения объектно-ориентированного языка программирования (ООЯП) и с точки зрения ее реализации в базе данных. В некоторых объектно-ориентированных языках программирования инкапсуляция обеспечивается за счет использования абстрактных типов данных (Abstract Data Types — ADT). При таком подходе объект состоит из интерфейса и реализации. Интерфейс предоставляет спецификацию операций, которые могут быть выполнены с объектом, а реализация состоит из структуры данных для ADT и функций, которые реализуют этот интерфейс. Для других объектов и пользователей доступен только интерфейс. С точки зрения реализации в базе данных инкапсуляция достигается благодаря тому, что программистам предоставляется право доступа только к интерфейсу. Таким образом, инкапсуляция обеспечивает логическую независимость от данных: внутреннюю реализацию ADT можно изменять, не затрагивая приложения, которые используют эти абстрактные типы данных ADT.

Объекты и атрибуты. В ООЯП  объекты являются ключевым компонентом моделирования. Объект рассматривается как уникально определяемая сущность, которая содержит атрибуты, описывающие состояние объектов "реального мира" и связанные с ними действия. Объект инкапсулирует состояние и правила поведения. Текущее состояние объекта описывается одним или несколькими атрибутами, или переменными экземпляра. Например, отделение риэлторской компании, расположенное по адресу «ул. Маяковского 25», может иметь атрибуты, приведенные в приложении А.

Атрибуты могут быть простыми и составными. Простой атрибут может иметь примитивный тип (например, целое число, строка, действительное число и т.д.) и принимать строковое значение. Например, атрибут  branchNo в табл.1. является простым атрибутом со строковым значением 'ВООЗ'. Составной атрибут может содержать коллекции и/или ссылки. Например, атрибут SalesStaff  является коллекцией объектов типа Staff (сотрудник). Ссылочный атрибут представляет связь между объектами. Он содержит значение (или коллекцию значений), которое само является объектом. Например, атрибут SalesStaff, если говорить точнее, является коллекцией ссылок на объекты типа Staff. Ссылочный атрибут концептуально аналогичен внешнему ключу в реляционной модели данных или указателю в языках программирования. Объект, который содержит один или несколько составных атрибутов, называется составным объектом.

Ссылки на атрибуты обычно формируются с использованием "точечного" обозначения, например, как показано ниже для атрибута street объекта, представляющего отделение:

branchObject.street

Идентификация объектов. Ключевой частью определения объекта является уникальность его идентификации.  В объектно-ориентированной системе каждому объекту в момент его создания присваивается идентификатор объекта (Object IDentifier — OID), который обладает следующими свойствами:

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

Информация о работе Объектные СУБД