русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Объектная модель SQL


Дата добавления: 2013-12-24; просмотров: 964; Нарушение авторских прав


Три манифеста баз данных

ОБЪЕКТНЫЕ ТЕХНОЛОГИИ В СУБД

Ведущими специалистами в области СУБД было предложено три манифеста баз данных. Все эти манифесты предлагают включить в СУБД поддержку объектно-ориентированной парадигмы (ООП). Первый манифест соответствует объектно-ориентированным БД, второй стремиться сохранить SQL, добавив в него поддержку ООП – объектно-реляционные СУБД, третий манифест призывает сохранить реляционную парадигму путем отказа от языка SQL. При этом ООП и реляционная парадигма должны применяться совместно, но быть ортогональными (например, данные хранятся в РБД, но доступ к ним производится через объектно-ориентированную надстройку). Подробнее о трех манифестах БД см. [2].

Сформирована по второму манифесту БД (Стоунбрейкер и др.) и соответствует направлению объектно-реляционных БД. Включает два основных отличительных компонента – структурные определяемые пользователями типы данных (User Defined Type – UDT) и типизированные таблицы (Typed Table). Первый компонент позволяет определять новые типы данных, которые могут быть гораздо более сложными, чем встроенные типы данных языка SQL. При определении структурного UDT требуется специфицировать не только содержащиеся в нем элементы данных, но и семантику типа данных, т.е. его поведение на основе интерфейса вызовов методов. Второй компонент – типизированные таблицы – позволяет определять таблицы, строки которых являются экземплярами (или значениями) UDT, с которым явно ассоциируется таблица. UDT образуют иерархию наследования, типизированные таблицы также образуют иерархию наследования, взаимосвязанную с иерархией UDT.

Дополнения к SQL в соответствии с объектной моделью:

  1. Массивы, например: INTEGER ARRAY [10]
  2. Анонимный строчный тип– это конструктор типов, позволяющий производить безымянные типы строк (кортежей). Любой возможный строчный тип получается путем использования ROW . При определении столбца, значения которого должны принадлежать некоторому строчному типу, используется конструкция ROW ( fld 1 , fld 2 , …, fld n) , где каждый элемент fldi , определяющий поле строчного типа, задается в виде тройки fldname - название , fldtype - тип, fldoptions - опции.
  3. индивидуальные UDT- аналог доменов, призванный их заменить – типы, определенные на одном базовом типе.

Примеры запросов, демонстрирующие возможности объектного расширения SQL для БД «Работники-Отделы-Проекты», приведены на Лист. 54 - Лист. 60.



Лист. 54. Приведение типов

CREATE TYPE EMP_NO AS INTEGER FINAL;

CREATE TYPE DEPT_NO AS INTEGER FINAL;

CREATE TYPE PRO_NO AS INTEGER FINAL;

CREATE TABLE EMP (

EMP_ID EMP_NO,
EMP_NAME VARCHAR(20),
DEPT_ID DEPT_NO,

PRO_ID PRO_NO ) ;

SELECT EMP_NAME
FROM EMP
WHERE CAST(EMP_ID TO INTEGER) > CAST(DEPT_ID TO INTEGER) ;

Лист. 55. Типизированные таблицы

CREATE TYPE EMP_T AS (
EMP_NAME VARCHAR(20),
EMP_BDATE DATE,
EMP_SAL SALARY,
DEPT REF (DEPT) )
INSTANTIABLE
NOT FINAL
REF IS SYSTEM GENERATED
INSTANCE METHOD age ()
RETURNS DECIMAL (3,1)

CREATE TYPE PROGRAMMER_T UNDER EMP_T AS (
PROG_LANG VARCHAR (10) )
INSTANTIABLE
NOT FINAL

CREATE TYPE DEPT_T AS (
DEPT_NO INTEGER,
DEPT_NAME VARCHAR(200),
DEPT_MNG REF (EMP) )

INSTANTIABLE
NOT FINAL

CREATE TABLE EMP OF EMP_T
( REF IS DEPT_ID SYSTEM GENERATED,
DEPT WITH OPTIONS SCOPE DEPT )

CREATE TABLE PROGRAMMER OF PROGRAMMER_T UNDER EMP

CREATE TABLE DEPT OF DEPT_T

( REF IS EMP_ID SYSTEM GENERATED,
DEPT_MNG WITH OPTIONS SCOPE EMP )

Пример выборки, в том числе с подтаблицами: сначала будет произведена выборка имен служащих, удовлетворяющих условию, из таблицы EMP , затем – из таблицы PROGRAMMER , и эти промежуточные результаты будут скомбинированы в окончательный результат путем применения операции объединения (UNION) - Лист. 56.

Лист. 56. Выборка при наследовании

SELECT EMP_NAME
FROM EMP
WHERE EMP_SAL < 20000.00;

Выборка только служащих (см. Лист. 57)

Лист. 57. Выборка без учета наследования

SELECT EMP_NAME
FROM ONLY ( EMP )
WHERE EMP_SAL < 20000.00 ;

 

В отличие от традиционного SQL, в объектном SQL не обязательно перечислять все таблицы, используемые в запросе в разделе From (см. Лист. 58).

Лист. 58. Выборка атрибута по ссылке

SELECT EMP_NAME, DEPT -> DEPT_NAME
FROM EMP
WHERE EMP_SAL < 20000.00 ;

SELECT EMP_NAME, DEPT -> DEPT_MNG -> EMP_NAME
FROM EMP
WHERE EMP_SAL < 20000.00 ;

 

В соответствии с принципом инкапсуляции, методы можно вызывать внутри запросов (см. Лист. 59).

Лист. 59. Вызов методов в запросе

SELECT DEPT_MNG -> EMP_NAME, DEPT_MNG -> age ()
FROM DEPT
WHERE DEPT_NO = 605 ;

Имеется возможность полностью выбрать экземпляр структурного типа, идентифицируемый ссылочным значением (в SQL :1999 это называется разрешением ссылки – reference resolution ) - Лист. 60.

Лист. 60. Запрос с разрешением ссылки

SELECT DEREF ( DEPT_MNG )
FROM DEPT
WHERE DEPT_NO = 605;

Д/З 11. Представьте предметную область из Д/З 1 в виде ОРБД (пользовательские типы и типизированные таблицы). Напишите запрос, в котором должна быть выборка из типизированных таблиц, переходы по ссылкам и вызов методов.



<== предыдущая лекция | следующая лекция ==>
ОБЗОР ПЕРСПЕКТИВНЫХ НАПРАВЛЕНИЙ БАЗ ДАННЫХ | Модель данных ODMG и язык OQL


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.759 сек.