Использование моделей и миграций в Sequel
Приложение, реализованное в рамках лекции можно скачать по ссылке. Для распаковки архива воспользуйтесь командой 7z x FILE.7z
.
Предметная область
Давайте реализуем приложение-конкурент для сайтов, позволяющих вести журнал прочитанных произведений.
Произведение описывается следующим:
- Название
- Язык
- Год написания
- Список авторов
- Количество символов (размер в страницах)
Автор произведения описывается следующим:
- Фамилия
- Имя
- Отчество
- Второе имя
- Дата рождения
Книга описывается следующим:
- Название
- Список произведений
- Дата издания
- Тираж
- ISBN, опциональное поле
Издательство описывается следующими полями:
- Название
- Дата основания
- Список книг
Читатель описывается следующими полями:
- Псевдоним
- Электронная почта
Читатель может оставлять отзывы к книгам и произведениям.
Задача №1. Формирование модели данных
Используйте инструмент draw.io для формирования модели данных приложения.
При формировании модели точно указывайте типы данных и их размерность. Список поддерживаемых Sequel-типов можно узнать в документации http://sequel.jeremyevans.net/rdoc/files/doc/schema_modification_rdoc.html
Задача №2. Формирование миграций
Опишите схему приложения с помощью набора миграций. В каждой миграции должна создаваться одна только одна таблица. Миграции описаны в официальной документации. Проверьте работу каждой из миграций.
Задача №3. Формирование классов-моделей
Для каждой таблицы сформируйте классы-модели. В классах-моделях укажите связи с другими таблицами.
С использованием данных классов заполните базу данных. Для заполнения можете использовать информацию об Айзеке Азимове.
Задача №4. Работа на уровне моделей
Используя сформированные классы-модели решите следующие задачи:
- Узнать список авторов конкретного издательства
- Найти первое издание произведения
- Отобразить список авторов, отсортировав по количеству изданных книг (тираж)
- Найти самого “толстого” автора: у которого по произведениям суммарно больше всего страниц
- Найти самого популярного у издательств автора: которого печатают больше всего разных издательств
- Или найти автора-однолюба, который печатается исключительно в 1 издательстве
- Найти авторов “пишу в стол”, у которых есть произведение с разницей в дате написания и дате первого издания этого произведения больше 15 лет
- Добавить авторам дату смерти и найти список “непризнанных” писателей, которых впервые опубликовали после смерти
- Проверить, могли ли два писателя творить в соавторстве: т.е. есть ли у них совместные книги или они жили (в творческом возрасте, т.е. от 20 и до смерти) в одно время и писали на одном языке
- Найти автора-полиглота, который писал на 3 языках и более
- Найти “вредные издательства”, у которых выше всего процент переименованных книг (книг с одним произведением, у которых название издания не совпадает с названием произведения)