BAZA贜YCH PROJEKT

POLITECHNIKA WROC艁AWSKA

WYDZIA艁 ELEKTRONIKI

Kierunek: Automatyka i Robotyka (AIR)

Specjalno艣膰: Komputerowe Sieci Sterowania (ARK)

PROJEKT BAZY DANYCH

Rozgrywki sportowe

Autorzy:

Mateusz G膮siorek

Pawe艂 Ruci艅ski

Prowadz膮cy prace:

dr in偶. Grzegorz Mzyk

WROC艁AW 2012

Projekt zosta艂 wykonany w programie Oracle Client Express 11 - Application Express 4.0.2.00.09

Temat:, Jako przyk艂ad do implementacji wzi臋to pod uwag臋 niepe艂n膮 (10 zespo艂贸w) polsk膮 lig臋 pi艂ki no偶nej (Ekstraklasa).

Baza sk艂ada si臋 z dw贸ch tablic:

W projekcie starano si臋 o jak najbardziej optymalna wersj臋 programu rozgrywek sportowych st膮d implementacja dw贸ch tablic. Takie ustawienie tabel pozwala na wyci膮gni臋cie wszystkich podstawowych statystyk, kt贸re mo偶na zgromadzi膰 w tabeli ko艅cowej rozgrywek sportowych.

Wstawianie element贸w odbywa艂o si臋 poprzez administratora, kt贸ry posiada dost臋p do ca艂e bazy danych, dodano elementy odpowiadaj膮ce pomniejszonej ekstraklasie polskiej. Tabela zawiera pierwsze 10 dru偶yn z tabeli ko艅cowej T-mobile ekstraklasy polskiej sezonu 2011/2012.

W nast臋pnym kroku stworzono powi膮zania pomi臋dzy tablicami wykorzystuj膮c wbudowan膮 opcj臋 鈥瀜uery builder鈥:

Rezultat:

Wykorzystano takie po艂膮czenie, poniewa偶 zapewnia ona mo偶liwo艣膰 przyk艂adowej zmiany nazwy dru偶yny w nast臋pnym sezonie (w przypadku awansu lub spadku kt贸re艣 z dru偶yn), bez konieczno艣ci przerabiania wszystkich meczy.

APLIKACJA:

Tworzymy aplikacj臋 wykorzystuj膮c gotowego kreatora:

Numer aplikacji, kt贸ry nadajemy jest konieczny, aby u偶ytkownik m贸g艂 uruchomi膰 aplikacj臋 (podajemy j膮 w adresie URL). Jest mo偶liwo艣膰 zmiany poprzez tworzenie alias贸w jednak na potrzeby tego projektu adres pozostaje lokalny

Logowanie do aplikacji odbywa si臋 poprzez panel usera:

Na stronie znajduj膮 si臋 cztery podstrony:

OPIS TWORZENIA POSZCZEG脫LNYCH STRON:

TABELA:

Rezultat:

Tworzymy stron臋 `report鈥, jako kod strony podajemy:

select TEAM_NAME,

( NVL( (select count(*) from GAMES where (HOME_ID=TEAM_ID) AND (HOME_SCORE>=0)),0) +

NVL( (select count(*) from GAMES where (AWAY_ID=TEAM_ID) AND (AWAY_SCORE>=0)),0) ) as MECZE,

( NVL( (select sum(HOME_SCORE) from GAMES where HOME_ID=TEAM_ID),0) +

NVL( (select sum(AWAY_SCORE) from GAMES where AWAY_ID=TEAM_ID),0) ) as STRZELONE,

( NVL( (select sum(AWAY_SCORE) from GAMES where HOME_ID=TEAM_ID),0) + NVL(

(select sum(HOME_SCORE) from GAMES where AWAY_ID=TEAM_ID),0) ) as STRACONE,

( NVL( (select count(*) from GAMES where (HOME_SCORE > AWAY_SCORE) AND (HOME_ID=TEAM_ID)),0) +

NVL( (select count(*) from GAMES where (HOME_SCORE < AWAY_SCORE) AND (AWAY_ID=TEAM_ID)),0) ) as WYGRANE,

( NVL( (select count(*) from GAMES where (HOME_SCORE < AWAY_SCORE) AND (HOME_ID=TEAM_ID)),0) +

NVL( (select count(*) from GAMES where (HOME_SCORE > AWAY_SCORE) AND (AWAY_ID=TEAM_ID)),0) ) as PRZEGRANE,

( NVL( (select count(*) from GAMES where (HOME_SCORE = AWAY_SCORE) AND (HOME_ID=TEAM_ID)),0) +

NVL( (select count(*) from GAMES where (HOME_SCORE = AWAY_SCORE) AND (AWAY_ID=TEAM_ID)),0) ) as REMISY,

( ( NVL(( select count(*) from GAMES where ( HOME_SCORE > AWAY_SCORE ) AND (

HOME_ID=TEAM_ID ) ),0)*3 ) +

( NVL(( select count(*) from GAMES where ( HOME_SCORE < AWAY_SCORE ) AND (

AWAY_ID=TEAM_ID ) ),0)*3 ) +

( NVL(( select count(*) from GAMES where ( HOME_SCORE = AWAY_SCORE ) AND (

AWAY_ID=TEAM_ID ) ),0) ) +

( NVL(( select count(*) from GAMES where ( HOME_SCORE = AWAY_SCORE ) AND (

HOME_ID=TEAM_ID ) ),0) ) ) as PUNKTY

from TEAMS

order by PUNKTY desc

Kod programu w pierwszej kolejno艣ci generuje liczb臋 meczy, sumuj膮c mecze, w kt贸rych gra dana dru偶yna u siebie, oraz na wyje藕dzie. Dodatkowo sprawdza czy mecz si臋 odby艂.

Nast臋pnie wylicza bramki strzelone, stracone, jako sum臋 p贸l odpowiedzialnych za wynik.

Liczb臋 meczy wygranych, oraz przegranych (tam gdzie pole bramki dru偶yny jest wi臋ksze od pola bramki rywale)

Na sam koniec wylicza punkty, mno偶膮c, przez 3 je偶eli bramki s膮 wi臋ksze kt贸re艣 z dru偶yn, oraz dodaj膮c, 1 gdy bramki s膮 sobie r贸wne (remis)

TERMINARZ:

Rezultat:

Tworzymy stron臋 `report鈥, jako kod strony podajemy:

select "GAMES"."MATCH_ID" as "MATCH_ID",

"TEAMS"."TEAM_NAME" as "TEAM_NAME",

"TEAMS_1"."TEAM_NAME" as "TEAM1_NAME",

"GAMES"."HOME_SCORE" as "HOME_SCORE",

"GAMES"."AWAY_SCORE" as "AWAY_SCORE",

"GAMES"."MATCH_DATE" as "MATCH_DATE",

"GAMES"."FIXTURE" as "FIXTURE"

from "TEAMS" "TEAMS_1",

"TEAMS" "TEAMS",

"GAMES" "GAMES"

where "GAMES"."AWAY_ID"="TEAMS_1"."TEAM_ID"(+)

and "GAMES"."HOME_ID"="TEAMS"."TEAM_ID"(+)

order by FIXTURE asc

Zaznaczamy dodatkowo opcj臋 interaktywny, dzi臋ki czemu u偶ytkownik mo偶e wyszukiwa膰 odpowiedni element, sortowa膰 wed艂ug potrzebnych do uzyskania danych. Ustawieniem podstawowym jest sortowanie po kolejce, w kt贸rej odby艂 si臋 mecz.

STATYSTYKI:

Rezultat:

select TEAM_NAME,

NVL(( select count(*) from GAMES where ( HOME_SCORE = 0 ) AND ( HOME_ID=TEAM_ID ) ),0) as CZYSTE_KONTO_GOSP,

NVL(( select count(*) from GAMES where ( HOME_SCORE = 0 ) AND ( HOME_ID=TEAM_ID ) ),0) as CZYSTE_KONTO_GOSC,

NVL(( select count(*) from GAMES where ( HOME_SCORE > 3 ) AND ( HOME_ID=TEAM_ID ) ),0) as WIECEJ_3_GOSP,

NVL(( select count(*) from GAMES where ( AWAY_SCORE > 3 ) AND ( AWAY_ID=TEAM_ID ) ),0) as WIECEJ_3_GOSC,

NVL(( select count(*) from GAMES where ( HOME_SCORE < 3 ) AND ( HOME_ID=TEAM_ID ) ),0) as MNIEJ_3_GOSP,

NVL(( select count(*) from GAMES where ( AWAY_SCORE < 3 ) AND ( AWAY_ID=TEAM_ID ) ),0) as MNIEJ_3_GOSC,

NVL(( select count(*) from GAMES where ( HOME_ID=TEAM_ID ) AND ( HOME_SCORE >=0 ) AND ( HOME_ID=TEAM_ID ) ),0) as MECZ_DOM,

NVL(( select count(*) from GAMES where ( AWAY_ID=TEAM_ID ) AND ( AWAY_SCORE >=0 ) AND ( AWAY_ID=TEAM_ID ) ),0) as MECZ_WYJAZD,

( ROUND(NVL( (select count(*) from GAMES where (HOME_SCORE > AWAY_SCORE) AND (HOME_ID=TEAM_ID)),0) / ( NVL( (select count(*) from GAMES where (HOME_ID=TEAM_ID) AND (HOME_SCORE>=0)),0) +

NVL( (select count(*) from GAMES where (AWAY_ID=TEAM_ID) AND (AWAY_SCORE>=0)),1) )*100,2) ) as "WYGRANE-PRZEGRANE_%"

from TEAMS

order by "WYGRANE-PRZEGRANE_%" desc

Kod ten wylicza mecze, w kt贸rych dru偶yna nie straci艂a bramki u siebie, nie straci艂a bramki na wyje藕dzie, strzeli艂a wi臋cej ni偶 3 bramki u siebie, wi臋cej ni偶 3 bramki na wyje藕dzie, mniej ni偶 3 bramki u siebie i na wyje藕dzie, ile meczy rozegra艂a u siebie, ile meczy rozegra艂a na wyje藕dzie, oraz wylicza stosunek meczy wygranych do przegranych w procentach, zaokr膮glaj膮c wynik.

Sortowanie odbywa si臋 po stosunku wygranych do przegranych

WPISZ WYNIK:

Po naci艣ni臋ciu na przycisk WPISZ WYNIK, zostajemy przeniesieni do panelu logowania, gdzie sprawdzana jest nazwa kapitana oraz jego has艂o.

Jest to zabezpieczenie wynikaj膮ce z odpowiednich przekierowa艅

Naciskaj膮c przycisk 鈥榃PISZ WYNIK鈥 jeste艣my przekierowani na stron臋 z numerem 3 (jest to strona, pod kt贸r膮 znajduje si臋 formularz do wpisywania wyniku), jest to jednak strona zabezpieczona, wymagaj膮ca autoryzacji konta:

Po zalogowaniu si臋 dostajemy dost臋p do edycji naszej tabeli:

select * from (select "TEAMS"."TEAM_NAME" as "HOME",

"TEAMS_1"."TEAM_NAME" as "AWAY",

"GAMES"."HOME_ID" as "ID",

GAMES.MATCH_ID,

"GAMES"."HOME_SCORE" as "HOME_SCORE",

"GAMES"."AWAY_SCORE" as "AWAY_SCORE",

"GAMES"."FIXTURE" as "FIXTURE",

"GAMES"."MATCH_DATE" as "DATA"

from "TEAMS" "TEAMS_1",

"GAMES" "GAMES",

"TEAMS" "TEAMS"

where "TEAMS"."TEAM_ID"(+) ="GAMES"."HOME_ID"

and "TEAMS_1"."TEAM_ID"(+) ="GAMES"."AWAY_ID" )

where ID = (select CAPTAIN_ID from CAPTAIN where upper(CAPTAIN_NAME) = upper(:APP_USER))

or

upper(:APP_USER) = 'SPORT'

order by FIXTURE

Po klikni臋ciu na edycj臋 zostajemy przeniesieni do nast臋pnej strony

gdzie wpisujemy wynik i zatwierdzamy

U呕YTKOWNICY:

Tworzymy u偶ytkownik贸w wykorzystuj膮c wbudowany panel administratora, dodajemy u偶ytkownik贸w w postaci: nazwa (nazwa dru偶yny), oraz has艂o (nazwa dru偶yny). Dodatkowo stworzony automatycznie jest u偶ytkownik SPORT, kt贸ry jest administratorem strony i ma dost臋p do wszystkich mo偶liwych edycji aplikacji.

Dodatkowo stworzono tablic臋 CAPTAIN, w kt贸rej zapisywany jest numer ID kapitana oraz nazwa klubu, kt贸rego kapitanem jest.

Nazwa kapitana jest taka sama jak nazwa klubu, kt贸rego kapitanem jest ( wymagane przy wpisywaniu wynik贸w tylko swojej dru偶yny).

Taka opcja pozwala na stworzenie dodatkowego u偶ytkownika dla danej dru偶yny (w sytuacji, kiedy kapitan nie jest w stanie wprowadzi膰 swojego wyniku). Mo偶na r贸wnie偶 pobiera膰 ID dru偶yny, jednak wtedy przy ch臋ci stworzenia dodatkowego u偶ytkownika np. legia2 jeste艣my zmuszeni przerobi膰 tablice.

Dodatkowo stworzona zosta艂a druga aplikacja, jako osobna liga, w kt贸rej niezale偶nie odbywaj膮 si臋 inne mecze.

WNIOSKI:

  1. Stworzenie 2 tablic pozwala na edycj臋 nazw dru偶yn (w przypadku awansu lub spadku) bez konieczno艣ci zmiany terminarza oraz pozosta艂ych stron

  2. Stworzenie dodatkowej tablicy kapitanowie pozwala na stworzenie dodatkowego u偶ytkownika, kt贸ry mo偶e wprowadzi膰 wynik za kapitana (przyk艂adowo, gdy jest on na zgrupowaniu reprezentacji i w meczu nie uczestniczy)

  3. Stworzenie lig wi膮偶e si臋 z brakiem uniwersalno艣ci z terminarzem. Dodaj膮c kolumn臋 鈥瀕iga鈥 zmuszeni jeste艣my w stanie zrobi膰 dodatkowe zb臋dne wiersze w tablicy terminarz

  4. Prze艂膮czanie aplikacji odbywa si臋 r贸wnie偶 z zabezpieczeniami.

  5. Wpisywanie wyniku jest zabezpieczone, tak, aby u偶ytkownik nie m贸g艂 wpisa膰 niepoprawnego wyniku (np. ujemnego)

  6. Dodatkowo mo偶na stworzy膰 panel administratora do wpisywania terminarzu, jednak jest on generowany w spos贸b dynamiczny z zewn膮trz, i zabezpieczony przez usuni臋cie wierszy, w kt贸rych pola gospodarza oraz go艣cia s膮 takie same.

BIBLIOGRAFIA:


Wyszukiwarka

Podobne podstrony:
projekt o narkomanii(1)
!!! ETAPY CYKLU PROJEKTU !!!id 455 ppt
Wyk艂ad 3 Dokumentacja projektowa i STWiOR
Projekt nr 1pi膮tek
Projet metoda projektu
34 Zasady projektowania strefy wjazdowej do wsi
PROJEKTOWANIE ERGONOMICZNE
Wykorzystanie modelu procesow w projektowaniu systemow informatycznych
Narzedzia wspomagajace zarzadzanie projektem
Zarz膮dzanie projektami 3
Metody Projektowania 2
BYT 109 D faza projektowania
p 43 ZASADY PROJEKTOWANIA I KSZTA艁TOWANIA FUNDAMENT脫W POD MASZYNY
Zarz膮dzanie projektami 4 2
Projektowanie systemow zarzadzania

wi臋cej podobnych podstron