| Version 4 (modified by , 4 days ago) ( diff ) |
|---|
Креирање база на податоци
Членови на тим:
- Aлександар Тодороски 231153
- Антонио Трајковски 231156
- Вељко Аџиќ 231267
Спорт
Тука може да се види како е креирана табелата и како е потпунета. Користено е готово множество од податоци при полнење на податоци. Вкупен број на записи е 40.
Спортска категорија
Во сликата може да се види како е креирана табелата SPORT_CATEGORY. Има поставено ограничување на gender да е од вредност 'M' или 'F', и надворешен клуч sport_id кој референцира id од sport. За полнењето користено е готово податочно множество кое е адаптирано во SQL. Вкупен број на записи но табелата изнесува 337.
Држава
Дефиниција на ентитетот COUNTRY е прикажана подолу. Табелата е пополнета со податоци кои се добиени од готово множество и адаптирано во SQL. Вкупно податоци генерирани се 165.
Спонсор
Табелата SPONSOR е дефинирана на следен начин. За пополнување на податоци е искористено готово множество кое е адаптирано во SQL. Вкупно редови генерирани е 10.001.
Тип на натпревар
Дефиниција на COMPETITION_TYPE е прикажана подолу. Податоците во ова табела се внесени од готово множество кое е адаптирано во SQL. Вкупен број податоци се 17.
Федерација
Ентитетот FEDERATION има 2 други ентитети кои наследуваат од него, INTERNATIONAL_FEDERATION и NATIONAL_FEDERATION. Основната табела ограничување за уникатно име и надворешен клуч кон спорт. Табелата за интернационална федерација има примарен клуч што е исто така надворешен клуч кој референцира кон федерација и каскадно се брише. Националната федерација, како и интернационална, има примарен клуч што е исто така надворешен клуч кон федерација, но има дополнително надворешен клуч кој референцира кон држава и има надворешен клуч кон интернационална федерација во која членува.
Податоците за национална федерација се генерираат на тој начин што за секоја комбинација од спорт и држава се генерира запис во FEDERATION, потоа генерира запис во NATIONAL_FEDERATION користејќи ги генерираните податоци од FEDERATION.
На сличен начин се генерираат и за INTERNATIONAL_FEDERATION, каде за секој спорт се генерира федерација, потоа користејќи ги тие записи од федерација се полни и табелата за интернационална федерација.
Ова ни генерира 6.640 федерации, од кои 6.600 се национални и 40 се интернационални.
Спортски клуб
Табелата SPORT_CLUB е дефинирана со ограничување да има уникатен пар име и држава, и е дефиниран надворешен клуч country_id кој референцира кон табелата за држава. Податоците за ова табела се генерираат со две кверија.
Првото квери генерира национални репрезентации за секоја комбинација на држава и спортска категорија.
Второто квери генерира податоци со помош на привремена табела temp_clubs_names (готово множество од имиња на клубови) кади ги спојува случајно со една држава.
Вкупно се генерирани 42.477 редици.
Спортски тим
Ова табела е дефинирана со два надворешни клуча каде еден референцира кон спортска категорија и другиот кон спортски клуб. Податоците се генерираат со две кверија, едно генерира тимови за национални репрезентации, а другото за обични клубови тимоив.
За првото квери се користи секоја комбинација на национална репрезентација клуб и спортска категорија каде се генерира тим.
За второто квери се користи секој клуб што не е национална репрезентација и се зема 5 случајни спортски категории.
Ова ни генерира 478.725 редици.
Клуб-федерација
Табелата CLUB_FEDERATION претставува членство на клуб во некоја федерација. Табелата е дефинирана со ограничување кое проверува валидноста на почетен и краен датум, и надворешни клучеви кои референцираат кон федерација и кон клуб соодветно.
Се генерираат членства во првото квери така што за секоја комбинација на клуб што е национална репрезентација и национална федерација која е во иста држава како клубот се поставува случаен почетен датум пред 40 до 50 години.
Во второто квери за секој тим од секој клуб се земаат сите спортови кои играат тие тимови и од нив се спојува секоја национална федерација. Со овие комбинации се генерира членство кое почнало пред 30 до 35 години (случаен избор).
Ова табела има 951.120 редици.
Регион
Табелата REGION е дефинирана со примарен клуч id, име, и флег дали е дел од држава. Генерирана е од статичко множество на податоци и динамички генерирано од секоја држава поделена на северен, источен, западен и јужен регион. Ова табела има вкупно 1.345 редици.
Држава-регион
Ова табела претставува врска помеѓу држава и регион, имајќи само 2 надворешни клуча кои референцираат кон соодветната табела, и исто така нивната комбинација е примарен клуч.
Редиците се генерираат динамички со спојување на северен, јужен, источен и западен регион на секоја држава со таа држава. Исто се внесуваат податоци од готово множество.
Вкупен број на податоци но ова табела изнесува 1.447.
Локација
Табелата LOCATION е дефинирана со ограничување за капаците да е позитивен, ограничување името да е уникатно за држава, и со надворешен клуч кој референцира кон табела за држава.
Податоците се генерираат со случајна комбинација на неколку множества од имиња и случајни вредност, каде за секоја држава се генерира случајно помеѓу 300 и 1.060 локации. Ова генерира 108.697 редици.
Спонсортство
Ентитетот SPONSORSHIP претставува спонзорство помеѓу спонзор и тим и е дефиниран со окраничување amount да е позитивна, ограничување кое проверува валидност на почетен и краен датум, и два надворешни клуча кои соодветно референцираат кон спортски тим и спонзор.
Вредности за ова табела се генерираат на тој начин што за секој тим се спојува со 7 случајни спонзори и се доделуваат случајни вредности за почетен и краен датум и за исплатата. Ова генерира 3.351.076 вредности.
Национална лига
Ова табела е дефинирана со ограничување за проверка на валидност на date_started и date_disbanded, и надворешни клучеви кои референцираат кон спортска категорија, национална федерација и регион.
Податоците динамички се генерирани на тој начин што за секоја спортска категорија се спојуваат сите национални федерации и се генерира запис каде се избира случаен датум на започнување пред 5 до 6 години.
За оваа табела се генерирани 55.605 податоци.
Сезона
Табелата за SEASON е дефинирана со ограничување кое го проверува валидноста на почетниот и крајниот датум, и со надворешен клуч кој референцира кон национална лига.
За секоја национална лига се генерираат по 4 сезони, секоја една година по друга во последните 4 години со случајна варијација на почеток на сезоната за 0 до 30 дена.
Ова ни генерира 278.026 редици.
Натпревар
Оваа табела е дефинирана со ограничување кое го проверува почетниот и крајниот датум. Дополнително има надворешни клучеви кои референцираат кон тип на натпревар, федерација која го организира натпреварот и кон сезона (доколку е дел од некоја сезона).
Генерирање на податоци за оваа табела се врши така што за секоја сезона се спојува национална лига на таа сезона и се спојува тип на натпревар според име на лигата.
Ова ни генерира 278.026 редици, исто како и сезона.
Сезона-тим
Табелата SEASON_SPORT_TEAM претставува врска помеѓу сезона и спортски тим. Дефинирана е со комплексен примарен клуч кој е создаден од надворешни клучеви што референцираат кон сезона и спортски тим соодветно.
Податоците се генерираат со спојување секоја сезона со 20 случајни тимови од лигата на која припаѓа сезоната. Со оваа квери се генерираат 2.103.219 редици.
Дуел
Оваа табела е дефинирана се ограничување кое проверува дали домаќинот и противникот се различни, и надворешни клучеви кои референцираат кон натпревар (ако е NULL тогаш се подразбира дека е пријателска утакмица), клучевите home_team_id и away_team_id кои референцираат кон спортски тим, надворешен клуч кој референцира кон локација, и клуч кој референцира кон спортска категорија. Вредностите на home_team_score и away_team_score се NULL доколку дуелот е закажан за во иднина.
Со кверито се генерираат податоци за дуели помеѓу национални репрезентации од иста спортска категорија. За секој дуел случајно се избира локација, се генерира случаен датум во минатото или иднината за најмногу 5 години. За веќе одиграните натпревари се доделуваат случајни резултати според правилата дефинирани во score_logic за соодветниот спорт. На овој начин се добиваат реалистични податоци со различни датуми, локации и резултати за повеќе спортови.
Дополнително го имаме и ова квери за генерирање на на дуели на нерепрезентациски натпревари. Работи на сличен принцип на претходното, но ова квери извршува дополнителни проверки.
Двете кверија генерираат вкупно 16.069.000 дуели.
Човек
Табелата PERSON е дефинирана со ограничување датумот на раѓање да е подоцна од 01.01.1900 и полот да има вредност M или F. Дополнително има дефинирано надворешен клуч кој референцира кон табелата за држава.
Генерирање на редици за оваа табела се врши во две кверија, едното генерира машки, дугото женски. Генерирањето користи привремени табели temp_male_names, temp_female_names и temp_surnames кои се генерирани од готово множество од имиња и презимиња. Во двете си избира случајен датум на раѓање, случајно име и презиме и случајна држава на раѓање, потоа се генерира ЕМБГ според генерираниот датум на раѓање.
Од ова се генерирани 13.206.598 редици.
Судија
Табелата REFEREE наследува од PERSON па затоа примарниот клуч е исто така надворешен клуч кој референцира кон човек и е поставено каскадно да се брише. Исто така има и надворешни клучеви кои референцираат кон федерација и спортска категорија соодветно.
Пред да се генерираат судии, се креира привремена табела tmp_people која ѓи содржи сите луѓе подредени на случаен начин. Со помош на оваа табела за секоја федерација се спојуваат 100 редици од привремената табела. Со ова се генерираат 5.594.200 судии.
Тренер
Табелата COACH, исто како REFEREE, наследува од PERSON и затоа примарниот клуч е надворешниот клуч кој референцира кон човек е каскадно се брише. Исто има и надворешни клучеви кои референцираат кон федерација и спортска категорија.
За генерирање податоци за оваа табел прво се креира нова привремена табела tmp_people_no_referee која ги содржи останатите вредности кои не се искористени во генерирање на судии. На сличен принцип како судии, се генерираат вреднстите и за тренер така за секој тим случајно се спојува федерација и се одбираат две случајни луѓе. За оваа табела се генерирани 552.125 редици.
Спортист
SPORTSPERSON е дефинирана со надворешен клуч кој референцира човек и е поставено каскадно да се брише (бидејќи наследува од таа табела), и клуч кој референцира спортска категорија.
Пред генерирање на податоци се креира привремена табела tmp_sportspersons_pool која ги содржи сите останатите луѓе што не биле доделени како сидуја или тренер. Според тимовите се доделуваат случајно спортски категории на спортистот. Вака се генерираат 2.180.588 спортисти.
…
Attachments (29)
- sport.png (76.0 KB ) - added by 5 days ago.
- sport_category.png (463.2 KB ) - added by 5 days ago.
- country.png (174.3 KB ) - added by 5 days ago.
- sponsor.png (90.6 KB ) - added by 4 days ago.
- competition_type.png (81.2 KB ) - added by 4 days ago.
- federation_def.png (76.6 KB ) - added by 4 days ago.
- federation_gen.png (82.2 KB ) - added by 4 days ago.
- sport_club.png (99.3 KB ) - added by 4 days ago.
- sport_team.png (104.9 KB ) - added by 4 days ago.
- club_federation.png (129.0 KB ) - added by 4 days ago.
- region.png (108.3 KB ) - added by 4 days ago.
- country_region.png (150.4 KB ) - added by 4 days ago.
- location.png (214.1 KB ) - added by 4 days ago.
- sponsorship.png (100.3 KB ) - added by 4 days ago.
- national_league.png (100.2 KB ) - added by 4 days ago.
- season.png (64.8 KB ) - added by 4 days ago.
- competition.png (101.1 KB ) - added by 4 days ago.
- season_sport_team.png (109.8 KB ) - added by 4 days ago.
- duel.png (300.9 KB ) - added by 4 days ago.
- duel_2.png (400.3 KB ) - added by 4 days ago.
- person.png (205.9 KB ) - added by 4 days ago.
- referee.png (119.6 KB ) - added by 4 days ago.
- coach.png (151.5 KB ) - added by 4 days ago.
- sportsperson.png (109.8 KB ) - added by 4 days ago.
- coaching_team.png (119.3 KB ) - added by 4 days ago.
- sportsperson_contract.png (334.8 KB ) - added by 4 days ago.
- team_roster.png (392.4 KB ) - added by 4 days ago.
- refereeing_duel.png (229.6 KB ) - added by 4 days ago.
- score.png (195.0 KB ) - added by 4 days ago.
























