Студопедія
рос | укр

Головна сторінка Випадкова сторінка


КАТЕГОРІЇ:

АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія






Алкогольна інтоксикація 17 страница


Дата добавления: 2015-09-15; просмотров: 474



К представлениям, как и к базовым таблицам, в общем случае применимы инструкции манипулирования данными. Однако если из базовых таблиц можно удалять и обновлять любые строки и вводить в такие таблицы новые строки, то этого нельзя сказать о представлениях. Если команды модификации могут выполняться в представлении, представление называется модифицируемым; в противном случае оно предназначено только для чтения при запросе. В теории бах данных определены критерии, по которым определяют, является ли представление модифицируемым или нет. Считается, что представление является модифицируемым, если оно:

· относиться к одной и только одной базовой таблице;

· содержит первичный ключ этой таблицы;

· не имеет никаких полей, которые бы являлись агрегатными функциями;

· не содержит DISTINCT, GROUP BY или HAVING в своем определении;

· не использует подзапросы;

· может быть использовано в другом представлении, но это представление также модифицируемо;

· не использует константы, строки, или выражения среди выбранных полей вывода;

· содержит любые поля основной таблицы, которые имеют ограничение NOT NULL, если другое ограничение по умолчанию не определено.

На практике ответ на вопрос о модифицируемости представлений оказывается неоднозначным, и теоретически модифицируемое представление может оказаться не модифицируемым или наоборот. Безусловно, модифицируемыми являются представления, полученные из единственной базовой таблицы простым исключением некоторых ее строк и/или столбцов, обычно называемые «представление-подмножество строк и столбцов».

Различия между модифицируемыми и не модифицируемыми представлениями очевидны. Модифицируемые представления используются в основном точно так же, как и базовые таблицы. Фактически, пользователи не могут даже осознать, является ли объект, который они запрашивают, базовой таблицей или представлением. Это – превосходный механизм защиты конфиденциальной информации или тех частей таблицы, которые не относятся к потребностям данного пользователя. Пользователям предоставляют только интересующие их данные в наиболее удобной для них форме (окно в таблицу или в любое соединение любых таблиц).

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

В PostgreSQL все создаваемые представления по умолчанию являются не модифицируемыми. Чтобы сделать представление модифицируемым (если это возможно !), необходимо создать правило (RULE), которое обеспечивает выполнение требуемых действий над другими таблицами. Вообще, с помощью правил можно исполнять дополнительные действия при выполнении тех или иных команд над любыми таблицами или представления. Создать правило можно с помощью инструкции:

CREATE [ OR REPLACE ] RULE { таблица | представление } AS
ON { SELECT | INSERT | UPDATE | DELETE.}

TO таблица [ WHERE условие ]

DO [ [ALSO] | INSTEAD ] { NOTHING | команда | ( команда ; команда [ ; ... ] ) }

команда ::= SELECT | INSERT | UPDATE | DELETE | NOTIFY

где ALSO - указывает на то, что команды, содержащиеся в правиле, будут выполняться как дополнение к исходной команде, INSTEAD - вместо исходной команды, NOTHING - ничего не будет выполняться.

Примеры:

/* создаем не модифицируемое представление */

CREATE VIEW "Просроченные _доставки_1" (“Заказ”, “Получатель”) AS

SELECT "Заказ", "Заказчик", "Дата_время"
FROM "Доставка" INNER JOIN “Заказы”
ON "Доставка”."Заказ" = “Заказы”.”Код_заказа”

WHERE NOT("Доставка".”Доставлен”)

ORDER BY 3;

SELECT * FROM "Просроченная доставка ";

/* создаем модифицируемое представление */

CREATE OR REPLACE VIEW "Просроченные_ доставки_2" AS

SELECT "Заказ", "Дата_время"

FROM "Доставка"

WHERE NOT(”Доставлен”);


<== предыдущая лекция | следующая лекция ==>
Алкогольна інтоксикація 16 страница | Алкогольна інтоксикація 18 страница
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | <== 17 ==> | 18 | 19 |
Studopedia.info - Студопедия - 2014-2024 год . (0.255 сек.) російська версія | українська версія

Генерация страницы за: 0.255 сек.
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7