База данных
create table books(
id integer GENERATED BY DEFAULT AS IDENTITY PRIMARY key,
title text
);
create table authors(
id integer GENERATED BY DEFAULT AS IDENTITY PRIMARY key,
last_name text,
first_name text,
second_name text
);
create table authorship(
book_id integer references books(id),
author_id integer references authors(id),
seq_num integer
);
insert into books
values
(1, 'Сказка о царе Салтане'),
(2, 'Муму'),
(3, 'Трудно быть богом'),
(4, 'Война и мир'),
(5, 'Путешествие в некоторые удаленные страны мира в четырех частях: сочинение Лемуэля Гулливера, сначала хирурга, а затем капитана нескольких кораблей'),
(6, 'Хрестоматия');
insert into authors
values
(1, 'Пушкин', 'Александр', 'Сергеевич'),
(2, 'Тургенев', 'Иван', 'Сергеевич'),
(3, 'Стругацкий', 'Борис', 'Натанович'),
(4, 'Стругацкий', 'Аркадий', 'Натанович'),
(5, 'Толстой', 'Лев', 'Николаевич'),
(6, 'Свифт', 'Джонатан', '');
insert into authorship
values
(1,1,1),
(2,2,1),
(3,3,2),
(3,4,1),
(4,5,1),
(5,6,1),
(6,1,1),
(6,5,2),
(6,2,3);
Задание
Выполнить следующие задания, скрипт запросов и результаты выполнения занесите в отчет:
· Реализуйте скрипт, позволяющий удалить все пользовательские объекты с базы данных. Код запроса, результат (до и после) отобразить в отчете
· Создайте функцию имя книги(book_name) для формирования названия книги. Функция принимает два параметра (идентификатор книги(id) и заголовок(tittle)) и возвращает строку, составленную из заголовка и списка авторов в порядке seq_num. Имя каждого
автора формируется функций author_name. Создайте представление, в котором указывается идентификатор книги, вызов созданной функции (Исходные данные находятся в файле: «book_shop.txt» и «log_schema_book_shop.png»).
· Измените созданную функцию: если у книги больше двух авторов, то в названии указываются только первые два и в конце добавляется "и д.р.". Пример:
Выводится: "Хрестоматия. Пушкин А. С., Толстой Л. Н., Тургенев И. С."
Ожидается: Хрестоматия. Пушкин А. С., Толстой Л. Н. и др.