wiki:DatabaseProgramming

Version 5 (modified by 231267, 5 days ago) ( diff )

--

Програмирање база на податоци

Членови на тим:

  • Aлександар Тодороски 231153
  • Антонио Трајковски 231156
  • Вељко Аџиќ 231267

Тригери

1. trg_check_contract

Овој тригер се извршува пред додавање или ажурирање на ред во sportsperson_contract. Доколку клубот на новиот договор е национална репрезентација и спортистот не е од таа држава фрла грешка. Исто така, осигурува дека спортистот има најмногу еден договор за национална репрезентација и најмногу еден активен договор за стандарден клуб.

2. trg_check_team_roster

Овој тригер врши проверка на team_roster пред секое додавање или ажурирање. Се проверува дека бројот на играчи не го надминува дозволениот капацитетот, новододадениот играч има активен договор во целото времетраење на дуелот и дека не е дел од друга екипа за тој дуел.

3. trg_check_team_sport_and_rep

Тригерот врши валидација пред додавање или ажурирање на ред во duel. Се проверува дали клубовите на тимовите постојат, се осигурува дуелот да е против две национални репрезентации или два обични тима. Дополнително проверува за секој тим дали нивната федерација е активна до датумот на дуелот, и проверува дали тимовите играат во соодветна спортска категорија за тој дуел.

Функции

Освен функциите што се користат во тригери, единствена друга функција во овој систем е valid_date_range. Таа се користи да провери дали внесен опсег на датуми е валиден.

Процедури

1. Регистрација на спортист

Оваа процедура ни овозможува да се регистрира нов спортист. Ги валидира внесените податоци и креира нови записи во person и sportsperson. Оваа процедура ја отстранува потребата за проверка и валидација на влезни податоци од апликацијата и за одржување на наследството sportsperson од person.

2. Регистрација на тренер

Процедурата register_coach ни овозможува да се регистрира нов тренер каде извршува валидација на влезните податоци и го одржува наследството на coach од person. Целта на процедурата е да ја отстранува потребата за проверка и валидација на влезни податоци од апликацијата и за одржување на наследството.

3. Регистрација на судија

Со оваа процедура може да се регистрира нов судија каде се валидираат влезните податоци и се одржува наследството на referee од person. Процедурата има цел да ја отстрани потребата за проверка и валидација на влезни податоци од апликацијата и за одржување на наследството.

4. Додавање нов договор

add_contract е процедура која се користи за додавање или обновување на договор на играч. Прво се проверува дали постои играч, дали се валидни почетен и краен датум, дали е валидна сумата, и доколку се помине оди на додавање договор. Ако играчот има активен договор со неопределен рок, или договор што завршил, се проверува валидноста на клубот и дополнително почетниот датум да е по завршниот датум на стариот договор, се затвора стариот договор и се додава нов. Ако играчот нема претходен договор се прескокнуваат овие проверки и само се додава новиот договор во системот.

5. Позајмување играч

Процедурата borrow_player овозможува позајмување на играчи од еден клуб во друг. Тука како основни проверки имаме дали времето е соодветно, дали играчот постои, дали клубовите постојат. Потоа се проверува дали играчот има договор со клубот и дополнително дали е валиден периодот за позајмување. Ако поминат сите проверки, ќе се заврши стариот договор, ќе се креира нов договор со позајмувачкиот клуб, и ќе се креира нов договор со стариот клуб кој почнува од датумот на завршување на позајмувањето до стариот завршен датум.

6. Промоција на спортист во тренер

promote_sportsperson_to_coach е процедура која ни помага еден играч да се промовира во тренер. Се проверува дали играчот постои, да не е веќе промовиран, дали постои федерација и да нема активен договор. Ако се поминат сите проверки се креира нов тренер во системот.

7. Создавање нова сезона

start_new_season е процедура која помага при започнување на нова сезона за одредена лига. Прво се вршат проверки за годината и лигата, потоа се додаваат новите датуми за почеток и крај на сезоната, ја додаваме сезоната во главната табела и другите табели што зависат од неа. Дополнително, автоматски се креираат тимови во сезоната, се креираат натпревари и се генерираат дуели.

8. Презакажување на дуел

reschedule_duel е процедура која има улога да презакаже дуел. Извршува валидација на влезните податоци (дали постои дуел, дали е валидно новото време), а потоа се вршат дополнителни проверки дали судијата, домаќинот и противникот се слободни тој период, ако се тогаш се ажурира почетокот на дуелот.

9. Доделување судија на дуел

Процедурата assign_referee_for_duel овозможува доделување на судија на одреден дуел. Откако се изврши проверка дали дадениот дуел постои, се одбира случаен судија кој е слободен во периодот на дуелот. Доколку дуелот е дел од натпревар се бара судија од федерација која го организира натпреварот. Ако се најде судија се додава нов запис во refereeing_duel. Оваа процедура ја отстранува потребата апликацијата да бара и доделува судија за некој натпревар.

10. Додавање спонзорство на тим

add_sponsorship_to_team е процедура која е задолжена за додавање спонзорства на одреден тим. Се земаат името на тимот и на спонзорот и се проверуваат дали постојат, се проверува дали сумата е позитивна, дали периодот на спонзорство е валиден и се проверува дали тој тим со тој спонзор има активно спонзорство во тој период. Ако поминат сите проверки тогаш се додава ново спонзорство за тој тим.

11. Преименување спортски клуб

Процедурата rename_sport_club има улога да го смени името на одреден спортски клуб и сите негови клубови кои го користат името на клубот. Се извршуваат проверки дали постои клубот, дали е репрезентација (каде не смее да се промени името на национална репрезентација), и се проверува дали постои клуб со новото име во таа држава. Ако сите проверки поминат се ажурира записот во sport_club и се ажурираат имињата на сите тимови во тој клуб да го содржат новото име на клубот.

Attachments (25)

Note: See TracWiki for help on using the wiki.