Придумать свою предметную область и продумать схему БД для неё.
В качестве предметной области была взята абстрактная ММОРПГ. В базе данных хранятся персонажи, информация о них и игровых мирах, в которых дозволено играть (список фиксированный, логически подразумевается, что добавлять миры, также классы и расы дозволено только условному администратору и рядовой пользователь может добавлять только своего персонажа). Из информации представленной в базе данных можно просмотреть никнейм персонажа, расовую принадлежность героя и особенности подсчёта характеристик этой расы(в отдельной таблице), класс персонажа и его описание(также в отдельной таблице), уровень, игровой мир, в котором зарегистрирован игровой персонаж, и описание миров(также в отдельной таблице), имя ездового животного героя. Также стоит отметить, что при добавлении уровень автоматически не ставится равным 1, что подразумевает функцию импорта персонажа.

Критерии к БД:
[1] БД должна быть в третьей нормальной форме или выше;
• Все условия соблюдены. Все атрибуты зависят от первичного ключа целиком, а не от какой-то его части. • Все атрибуты зависят от первичного ключа, но не от других атрибутов
[2] Минимальное количество таблиц – 4;
• Данная база данных состоит ровно из 4-ёх таблиц.
[3] Все подключения из GUI должны осуществляться выделенным, не root, пользователем;
• Подключаемся с помощью созданного пользователя postgres: engine = create_engine('postgresql://postgres:1597@localhost/proj', echo=True)
[4] Должен существовать как минимум один индекс, созданный вами по выбранному текстовому не ключевому полю;
• Создан индекс "nickname" для столбца character_name: "nickname" btree (character_name)
[5] В одной из таблиц должно присутствовать поле, заполняемое/изменяемое только триггером (например, «общая стоимость бронирования» в таблице «бронирования», которое автоматически высчитывается при добавлении/изменении/удалении билетов, входящих в это бронирование)
• Таких полей даже два amount_of_players в таблицах races и worlds.
Реализовать программу GUI со следующим функционалом: [1] Создание базы данных (важно(!) именно create database, а не только create table) [2] Удаление базы данных [3] Вывод содержимого таблиц [4] Очистка(частичная - одной, и полная - всех) таблиц [5] Добавление новых данных [6] Поиск по заранее выбранному (вами) текстовому не ключевому полю [7] Обновление кортежа [8] Удаление по заранее выбранному текстовому не ключевому полю [9] Удаление конкретной записи, выбранной пользователем
Все вышеперечисленные функции реализованы и работают через функциональные кнопки GUI.