Найти в Дзене

Постреляционная модель

Классическая реляционная модель предполагает неделимость данных, хранящихся в полях записей таблиц. Это означает, что информация в таблице представляется в первой нормальной форме (подраздел 5.2). Суще­ствует ряд случаев, когда это ограничение мешает эффективной реализации приложений.

Постреляционная модель данных представляет собой расширенную ре­ляционную модель, снимающую ограничение неделимости данных, храня­щихся в записях таблиц. Постреляционная модель данных допускает мно­гозначные поля — поля, значения которых состоят из подзначений. Набор значений многозначных полей считается самостоятельной таблицей, встро­енной в основную таблицу.

На рис. 2.6 на примере информации о накладных и товарах для сравнения приведено представление одних и тех же данных с помощью реляционной (а) и постреляционной (б) моделей. Таблица INVOICES (накладные) содер­жит данные о номерах накладных (INVNO) и номерах покупателей (СUSTNO). В таблице INVOICE.ITEMS(накладные-товары) содержатся Данные о каждой из накладных: номер накладной (INVNO), название товара (GOODS) и количество товара (QTY). Таблица INVOICES связана с таблицей INVOICE.ITEMS по полю INVNO.

Как видно из рисунка, по сравнению с реляционной моделью в постреляционной модели данные хранятся более эффективно, а при обработке не требуется выполнять операцию соединения данных из двух таблиц. Для доказательства на рис. 2.7 приводятся примеры операторов SELECT выбо­ра данных из всех полей базы на языке SQL для реляционной (а) и постре­ляционной (б) моделей.

Помимо обеспечения вложенности полей постреляционная модель под­держивает ассоциированные многозначные поля (множественные группы). Совокупность ассоциированных полей называется ассоциацией.

Рис. 2.6. Структуры данных реляционной и постреляционной модели
Рис. 2.6. Структуры данных реляционной и постреляционной модели

При этом в строке первое значение одного столбца ассоциации соответствует пер­вым значениям всех других столбцов ассоциации. Аналогичным образом связаны все вторые значения столбцов и т. д.

а) SELECT

INVOICES.INVNO, CUSTNO, GOODS, QTY

FROM

INVOICES, INVOICE.ITEMS

WHERE

INVOICES. INVNO=INVOICE.ITEMS. INVNO;

6) SELECT

INVNO, CUSTNO, GOODS, QTY

FROM

INVOICES;

Рис. 2.7. Операторы SQL для реляционной и постреляционной моделей

На длину полей и количество полей в записях таблицы не накладыва­ется требование постоянства. Это означает, что структура данных и таб­лиц имеют большую гибкость.

Поскольку постреляционная модель допускает хранение в таблицах ненормализованных данных, возникает проблема обеспечения целост­ности и непротиворечивости данных. Эта проблема решается включени­ем в СУБД механизмов, подобных хранимым процедурам в клиент-сер­верных системах.

Для описания функций контроля значений в полях имеется возможность создавать процедуры (коды конверсии и коды корреляции), автоматически вызываемые до или после обращения к данным. Коды корреляции выпол­няются сразу после чтения данных, перед их обработкой. Коды конверсии, наоборот, выполняются после обработки данных.

Достоинством постреляционной модели является возможность пред­ставления совокупности связанных реляционных таблиц одной постреляционной таблицей. Это обеспечивает высокую наглядность представления информации и повышение эффективности ее обработки.

Недостатком постреляционной модели является сложность решения про-блемы обеспечения целостности и непротиворечивости хранимых данных.

Рассмотренная нами постреляционная модель данных поддерживается СУБД uniVers. К числу других СУБД, основанных на постреляционной мо­дели данных, относятся также системы Bubba и Dasdb.