Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt.rtf
Скачиваний:
283
Добавлен:
19.08.2013
Размер:
4.05 Mб
Скачать

14.1.3. Обзор распространенных постреляционных субд

В настоящее время к числу распространенных постреляционных СУБД можно отнести:

  • UniVerse (Vmark Software);

  • Postgres (University of California at Berkeley – UCB);

  • Cache’ (Intersystems).

Ниже приведено краткое описание особенностей синтаксиса для этих СУБД в части создания таблиц, имеющих множественные атрибуты, и составления запросов к таким таблицам. Основное изложение ведется на примере фрагмента базы данных «Сессии». Следует отметить, что в СУБД Cache’ реализован также и объектно-ориентированный подход к управлению базой данных.

UniVerse

В данной СУБД используется расширение стандарта ANSI SQL. Для описания множественного атрибута используется ключевое слово MULTIVALUED, а для механизма ассоциации – ASSOC. Множественный атрибут трактуется как вложенная таблица с одним атрибутом.

Создание таблиц выглядит следующим образом:

CREATE TABLE Студент (

ID INTEGER,

Фамилия_И_О CHARACTER VARYING(50),

Домашний_адрес CHARACTER VARYING(100),

Телефон CHARACTER VARYING(20),

Номер_группы CHARACTER VARYING(10),

Дисциплина INTEGER MULTIVALUED,

Семестр INTEGER MULTIVALUED,

Оценка INTEGER MULTIVALUED,

ASSOC Дисциплина (Семестр, Оценка),

PRIMARY KEY (ID)

)

CREATE TABLE Преподаватель (

ID INTEGER,

Фамилия_И_О CHARACTER VARYING(50),

Домашний_адрес CHARACTER VARYING(100),

Телефон CHARACTER VARYING(20),

Кафедра INTEGER,

Должность CHARACTER VARYING(20),

Дисциплина INTEGER MULTIVALUED,

Семестр INTEGER MULTIVALUED,

ASSOC Дисциплина (Семестр),

PRIMARY KEY (ID)

)

CREATE TABLE Дисциплина (

ID INTEGER,

Наименование CHARACTER VARYING(50),

Семестр INTEGER MULTIVALUED,

Преподаватель INTEGER MULTIVALUED,

ASSOC Семестр (Преподаватель),

PRIMARY KEY (ID)

)

Postgres (слайд 5)

В данной СУБД используется вариант стандарта SQL-3 под названием PostgreSQL. Он реализует все основные команды языка SQL, а также позволяет использовать команды и типы данных языка программирования (например, Си). PostgreSQL позволяет создавать множественные атрибуты с внутренней структурой (например, вложенные таблицы с несколькими атрибутами). В настоящее время Postgres относят к классу объектно-реляционных СУБД. В ней реализовано наследование таблиц и некоторые другие объектно-ориентированные механизмы.

Множественные поля реализуются в виде массивов. Создание таблиц выглядит следующим образом:

CREATE TYPE TMarks AS (Дисциплина INTEGER, Семестр INTEGER, Оценка INTEGER)

CREATE TABLE Студент (

ID INTEGER,

Фамилия_И_О CHARACTER VARYING(50),

Домашний_адрес CHARACTER VARYING(100),

Телефон CHARACTER VARYING(20),

Номер_группы CHARACTER VARYING(10),

Оценки TMarks ARRAY[],

PRIMARY KEY (ID)

)

CREATE TYPE TDiscip AS (Дисциплина INTEGER, Семестр INTEGER)

CREATE TABLE Преподаватель (

ID INTEGER,

Фамилия_И_О CHARACTER VARYING(50),

Домашний_адрес CHARACTER VARYING(100),

Телефон CHARACTER VARYING(20),

Кафедра INTEGER,

Должность CHARACTER VARYING(20),

ДП TDiscip ARRAY[],

PRIMARY KEY (ID)

)

CREATE TYPE TPrep AS (Преподаватель INTEGER, Семестр INTEGER)

CREATE TABLE Дисциплина (

ID INTEGER,

Наименование CHARACTER VARYING(50),

Ведет TPrep ARRAY[],

PRIMARY KEY (ID)

)

Множественные атрибуты хранятся в массивах переменной длины со сложным типом данных. Запрос для вывода только средствами SQL будет слишком сложным, и поэтому здесь не приводится. Для эффективного выполнения такого запроса необходимо воспользоваться расширенными возможностями PostgreSQL (написать специальную функцию на высокоуровневом языке программирования).

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

CREATE TABLE Персона (

ID INTEGER,

Фамилия_И_О CHARACTER VARYING(50),

Домашний_адрес CHARACTER VARYING(100),

Телефон CHARACTER VARYING(20),

PRIMARY KEY (ID)

)

CREATE TABLE Преподаватель (

Кафедра INTEGER,

Должность CHARACTER VARYING(20),

ДП TDiscip ARRAY[]

) Персона

CREATE TABLE Студент (

Номер_группы CHARACTER VARYING(10),

Оценки TMarks ARRAY[]

) Персона

Это позволяет повысить выразительные способности SQL при описании структур данных, а также снизить затраты на их описание.

Cache

Cache’ довольно условно можно отнести к постреляционным СУБД. В чистом виде в ней не реализована НФ2. «Постреляционность» Cache’ обусловлена возможностью связывания реляционной модели данных с объектно-ориентированной моделью штатными средствами СУБД. С одной стороны это не прямой способ реализации НФ2. Но с другой – предоставляет разработчикам более широкие возможности, присущие объектно-ориентированному подходу. Поэтому, Cache’ относят как к классу постреляционных, так и к классу объектно-ориентированных СУБД.

Соседние файлы в предмете Базы данных