Лабораторные работы по курсу «Базы данных»



Pdf көрінісі
бет30/46
Дата12.05.2023
өлшемі0,79 Mb.
#92097
түріПрактикум
1   ...   26   27   28   29   30   31   32   33   ...   46
Байланысты:
2-3 лаб

Пример 6.2: 
Использование ограниченной таблицы: 
CREATE TABLE editions
(isbn text, bookid integer, edition integer, publisherid integer, publication 
date, type char, 
CONSTRAINT pkey PRIMARY KEY (isbn),
CONSTRAINT integrity CHECK (bookid IS NOT NULL
AND edition IS NOT NULL).
CONSTRAINT book_exists FOREIGN KEY (book_id)
REFERENCES books (id)
ON DELETE CASCADE
ON UPDATE CASCADE): 
Ограничение integrity гарантирует, что поля book_id и edition не 
содержат псевдозначения NULL. 
Наконец, ограничение book_exists при помощи конструкций FOREIGN 
KEY и REFERENCES гарантирует, что значение поля book_id встречается в 
поле id таблицы books. Более того, поскольку в секциях ON DELETE и ON 
ACTION встречается ключевое слово CASCADE, любые модификации поля 
id в таблице books приведут к каскадным изменениям записей в таблице 
editions, а при удалении записей из таблицы books будут удалены 
соответствующие записи таблицы editions.
Для этих ограничений в базе данных автоматически строится индекс 
editions_pkey по полю isbn, а также создается триггер. Индекс обеспечивает 
выполнение ограничения PRIMARY KEY, а триггер относится к 
ограничению FOREIGN KEY. 


Создание объектно-реляционных связей 
В PostgreSQL поддерживается механизм создания объектно-
реляционных связей, называемый наследованием. Таблица может 
наследовать некоторые атрибуты своих полей от одной или нескольких 
других таблиц, что приводит к созданию отношений типа «предок—
потомок». В результате производные таблицы («потомки») обладают теми же 
полями и ограничениями, что и их базовые таблицы («предки»), а также 
дополняются собственными полями. 
При составлении запроса к базовой таблице можно потребовать, чтобы 
запрос произвел выборку только из самой таблицы или же просмотрел как 
таблицу, так и ее производные таблицы. С другой стороны, в результаты 
запроса к производной таблице никогда не включаются записи из базовой 
таблицы. 
Производная таблица создается командой SQL CREATE TABLE, в 
которую включается секция INHERITS. Секция состоит из ключевого слова 
INHERITS и имени базовой таблицы (или нескольких таблиц). 
CREATE TABLE производная_таблица определение
INHERITS ( базовая_таблица [, ...] ) 
В этом определении производная_таблица — имя создаваемой 
таблицы, определение — полное определение таблицы со всеми 
стандартными секциями команды CREATE TABLE, а базовая_таблица — 
таблица, структура которой наследуется новой таблицей. Дополнительные 
имена базовых таблиц перечисляются через запятую. 


Достарыңызбен бөлісу:
1   ...   26   27   28   29   30   31   32   33   ...   46




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет