Примечание
ЭТО АРХИВНАЯ ВЕРСИЯ КУРСА!
Материалы предназначаются для пересдающих дисциплину "ОП.08 - Основы проектирования баз данных" в соответствии с учебными планами СПО годов набора ДО 2024-го. Для того чтобы ознакомиться с актуальным курсом "ИТ.03 - Основы проектирования баз данных" включающим интерактивные примеры, перейдите по ссылке.
Материалы были перенесены со старого сайта с минимальной доработкой, поэтому не все возможности курса могут работать как ожидается, где-то может слететь форматирование.
Домашние задания в рамках курса проверяться не будут!
Домашнее задание №3 по дисциплине ОП.08 - Основы проектирования баз данных
В рамках задания рассматривается примерная База Данных книжной полки (коллекции книг).
Схема Базы Данных в виде набора SQL-запросов:
bookshelf.sql
Пояснение по структуре БД:
books— таблица для сущности «Книга», отражает книгиid— уникальный идентификатор в БД, автоматически инкрементируетсяtitle— название книгиyear— год издания книгиshelves_id— идентификатор полки на которой находится книгаfriends_id— идентификатор друга кому книга отдана, если вместо идентификатора значение NULL значит книга находится на месте
authors— таблица для сущности «Автор», отражает авторовid— уникальный идентификатор в БД, автоматически инкрементируетсяname— имя автора
authors_books— вспомогательная таблица для организации связи «многие-ко-многим» между сущностями «Автор» и «Книга», отражает взаимосвязь сущностей, при которой у одного автора может быть несколько книг, а у книги может быть больше одного автора, при этом первичный ключ в таблице составнойbooks_id— идентификатор книгиauthors_id— идентификатор автора
shelves— таблица для сущности «Книжная полка», отражает физическое место нахождения конкретной книги, при котором книга может находиться только на одной полкеid— уникальный идентификатор в БД, автоматически инкрементируетсяtitle— название полки
friends— таблица для сущности «Друг», отражает друзей, которым можно одолжить книгу, при этом когда книга находится у друга, физически в коллекции ее нет, но место на книжной полке с которой ее забирали остается прежним, чтобы в случае возвращения можно было поставить ее на свое местоid— уникальный идентификатор в БД, автоматически инкрементируетсяname— имя другаcontacts— любые контактные данные по которым можно связаться с другом чтобы напомнить вернуть книгу
Задание
Необходимо написать SQL-запросы чтобы выполнить каждую из задач:
- Найти автора с самым большим числом книг и вывести его имя
- Вывести пять самых старых книг у которых указан год издания
- Вывести общее количество книг на полке в кабинете
- Вывести названия, имена авторов и годы издания книг, которые находятся на полке в спальне
- Вывести названия и годы издания книг, написанных автором 'Лев Толстой'
- Вывести название книг, которые написали авторы, чьи имена начинаются на букву "А"
- Вывести название книг и имена авторов для книг, которые находятся на полках, названия которых включают слова «верхняя» или «нижняя»
- Книгу «Божественная комедия» автора «Данте Алигьери» одолжили почитать другу Ивану Иванову, необходимо написать один или несколько запросов которые отразят это событие в БД
- Добавить в базу книгу «Краткие ответы на большие вопросы», год издания 2020, автор «Стивен Хокинг», положить ее на полку в кабинете
Требования к оформлению
Результат выполнения задания должен быть оформлен в виде файлов:
- Файл дампа итоговой БД (после выполнения всех задач) в формате SQL, должен называться:
bookshelf_dump.sql, при этом при подготовке дампа необходимо учесть что в него должны попасть структура и данные только тех таблиц, которые относятся к данной домашней работе - Файл последовательных SQL-запросов для каждого из пунктов задания, должен называться:
bookshelf_tasks.sql, при этом ОБЯЗАТЕЛЬНО учитывать пример формата, описанный ниже.