Данное домашнее задание посвящено схеме базе данных, связанной с футбольным командами. Схема расположена в hw_diagram.jpg

Описание таблиц

Positions

Позиции игроков id - уникальный идентификатор позиции Name - Название таблицы

Coaches

Таблица тренеров id - уникальный идентификатор тренера Name - имя тренера

Teams

Таблица команд id - уникальный идентификатор команды Name - имя команды Location - расположение команды Coach_id - идентификатор тренера

Players

Таблица игроков Id - уникальный идентификатор игрока Name - имя игрока Age - возраст игрока Position_id - идентификатор позиции Team_id - идентификатор команды Start_date - дата начала игры в команде

PlayersArchive

Архив по игрокам (информация о том, в какой команде игрок играл ранее) player_id - идентификатор игрока team_id - идентификатор команды start_date - дата начала игры end_date - дата окончания игры

Задание 1

Реализовать перенакатываемые sql-скрипты по схеме hw_diagram, приложенного ниже.


In [ ]:

Задание 2

Написать sql-скрипт, осуществляюший добавление всех возможных позиций игроков. (В данной задаче можно ограничится четырьмя - вратарь, защитник, полузащитник, нападающий)


In [ ]:

Задание 3

Написать функцию, осуществляющую добавление тренера. На вход функции подается имя тренера. При невозможности вставки функция должна обработать данное исключение и вывести пользователю информацию о проблеме

После написания функции необходимо добавить несколько тренеров для таблицы.


In [ ]:

Задание 4

Написать функцию, осуществляющую добавление команды. На вход функция принимает (имя команды, местоположение, имя тренера). На выходе должна быть добавлена команда.

После написания функции необходимо добавить несколько команд


In [ ]:

Задание 5

Написать функцию, осуществляющую обновление информации о команде. У функции на входе должен быть один обязательный параметр - название команды и два необязательных параметра - имя тренера и местоположение. При этом хотя бы один из необязательных параметров должен быть заполнен. Функция должна обновлять значение переданных необязательных параметров.

После написания функции вызовите данную функцию несколько раз


In [ ]:

Задание 6

Написать функцию, осуществляющую добавление нового футболиста в таблицу игроков. На входе (имя, возраст, название позиции, название команды, дата перехода в команду(необязательный параметр)). Если дата перехода не указана, то нужно использовать текущую дату. Предусмотреть различные ошибки (такие как неверное имя позиции, неверное название команды, возраст < 10 и > 50 и т.п.)

После написания функции необходимо добавить несколько игроков.


In [ ]:

Задание 7

Написать функцию для перевода игрока в другую команду. Данная функция должна осуществить архивирование текущей записи в таблице игроков в таблицу players_archive с заполнение end_date - датой начала игры за новую команду - 1 день. А также осуществлять изменение поля в таблице Players. При возникновении ошибки должен осуществляться полный откат транзакции.


In [ ]: