Przeczytaj
Zadanie 1. Fanka
Gosia mieszka w Kucykowie i jest fanką lokalnej kobiecej drużyny piłki nożnej Galop Kucykowo. Gosia zbiera informacje o wszystkich wynikach oficjalnych meczów tej drużyny.
Informacje te zapisuje w plikach: Druzyny.txt
, Sedziowie.txt
, Wyniki.txt
. Pierwszy rekord w każdym z plików jest nagłówkiem. Dane w każdym rekordzie oddzielone są znakiem tabulacji.
Pliki potrzebne do rozwiązania tego zadania znajdują się w załączniku:
Zadanie zostało opracowane przez Centralną Komisję Egzaminacyjną i pojawiło się na egzaminie maturalnym z informatyki w maju roku (poziom rozszerzony, część ). Cały arkusz można znaleźć na stronie internetowej CKE.
W pliku Druzyny.txt
każdy rekord danych zawiera informacje o drużynie przeciwnej:
Id_druzyny
– identyfikator drużyny, liczba z zakresu od 1 do 100;Nazwa
– nazwa drużyny, tekst o maksymalnej długości 30 znaków;Miasto
– miasto pochodzenia drużyny, tekst o maksymalnej długości 30 znaków.
Przykład Druzyny.txt
:
W pliku Sedziowie.txt
każdy wiersz danych zawiera informacje o jednym sędzi:
Nr_licencji
– numer licencji, tekst o długości 6 znaków;Imie
– imię sędziego, tekst o maksymalnej długości 20 znaków;Nazwisko
– nazwisko sędziego, tekst o maksymalnej długości 50 znaków.
Przykład Sedziowie.txt
:
W pliku Wyniki.txt
każdy wiersz danych zawiera informacje o wynikach jednego meczu rozegranego przez drużynę Galop Kucykowo:
Data_meczu
– data rozegrania meczu (w formacie rrrr‑mm‑dd);Rodzaj_meczu
– rodzaj meczu (T – towarzyski, L – ligowy, P – pucharowy; jeden znak);Gdzie
– miejsce rozegrania meczu (W – wyjazdowy, D – u siebie; jeden znak);Id_druzyny
– identyfikator drużyny przeciwnej, liczba z zakresu od 1 do 100;Nr_licencji
– numer licencji sędziego meczu, tekst o długości 6 znaków;Bramki_zdobyte
– bramki zdobyte przez Galop Kucykowo, liczba z zakresu od 0 do 20;Bramki_stracone
– bramki stracone przez Galop Kucykowo, liczba z zakresu od 0 do 20.
Przykład Wyniki.txt
:
Wykorzystaj dostępne narzędzia informatyczne oraz dane zawarte w plikach druzyny.txt
, sedziowie.txt
i wyniki.txt
i wykonaj zadania. Odpowiedzi poprzedzone numerami zadań zapisz w pliku tekstowym wyniki.txt
.
Rozwiązanie zadania
Przygotuj nowy plik bazy danych o nazwie: Fanka.accdb
.
Import danych z plików tekstowych i relacje w Microsoft Access
Rozpoczynamy od przeniesienia danych udostępnionych w zadaniu (w postaci plików tekstowych) do tabel systemu bazodanowego, nie zapominając o sprawdzeniu typów danych oraz o ustanowieniu odpowiednich kluczy podstawowychkluczy podstawowych i relacjirelacji (powiązań) pomiędzy atrybutami tabel:
Import danych z plików tekstowych i relacje w LibreOffice Base
Importujemy tabelę Druzyny, otwierając plik tekstowy druzyny.txt
w narzędziu LibreOffice Calc, nie zmieniając przy tym domyślnych opcji importu pliku tekstowego. Upewniamy się, że w opcjach wyboru separatora zaznaczono pole przy tabulatorze:
Po otwarciu pliku w arkuszu kalkulacyjnym z menu Edycja
wybieramy opcję Zaznacz
, następnie Zaznacz obszar danych
lub naciskamy kombinację klawiszy Ctrl + *
. W ten sposób zaznaczymy wszystkie dane, znajdujące się w arkuszu:
Pora skopiować zaznaczony obszar danych kombinacją klawiszy Ctrl + C
, po czym przejść do narzędzia LibreOffice Base i upewnić się, że w oknie Baza danych
aktywną zakładką jest zakładka Tabele
:
Teraz możemy wkleić informacje ze schowka za pomocą kombinacji klawiszy Ctrl + V
. Spowoduje to otwarcie kreatora Kopiuj tabelę
. Poprawną konfigurację zatwierdzamy przyciskiem Dalej
, po czym przenosimy wszystkie skopiowane kolumny do nowo utworzonej tabeli:
W trzecim kroku kreatora upewniamy się co do typu wartości każdej kolumny – w przypadku tabeli Druzyny wszystkie atrybuty są typu Tekst [ VARCHAR ]
.
Nie należy także zapomnieć o ustanowieniu w tabeli klucza podstawowego – klikając prawym przyciskiem myszy w atrybut Id_druzyny
, zaznaczamy opcję Klucz główny
:
Spowodowało to dodanie małej ikonki klucza przy wskazanym atrybucie. Możemy zakończyć import tabeli, klikając przycisk Utwórz
.
Analogicznie postępujemy z pozostałymi tabelami, importując dane przy użyciu narzędzia LibreOffice Calc jako pośrednika w procesie przenoszenia plików tekstowych do bazy danych. Pamiętajmy, aby zawsze w pierwszym kroku kreatora importu zaznaczona była opcja Definicje i dane
. Typy danych dobieramy zgodnie z opisem kolumn w treści zadania.
Warto jeszcze zauważyć, iż tabela Wyniki nie zawiera atrybutu, który mógłby stać się kluczem głównym – w związku z tym pozwalamy kreatorowi dodać własny klucz podstawowy, np. o nazwie Id_meczu
:
W celu stworzenia relacji pomiędzy zaimportowanymi tabelami z menu wybieramy Narzędzia
| Relacje
, po czym dodajemy wszystkie trzy tabele do projektu relacji.
Ustanawiamy następujące powiązania pomiędzy kluczami podstawowymi i obcymi:
Zadanie 1.1
1.1 a: Podaj, ile towarzyskich, ile ligowych oraz ile pucharowych meczów rozegrała drużyna Galop Kucykowo z drużynami ze swego miasta.
1.1 b: W którym roku drużyna Galop Kucykowo rozegrała najwięcej meczów z drużynami ze swego miasta (łącznie wszystkie rodzaje meczów)? Podaj rok i liczbę tych meczów.
Rozwiązanie w Microsoft Access
Rozwiązanie 1.1 a
Rozwiązanie 1.1 b
Rozwiązanie w LibreOffice Base
Aby utworzyć nową kwerendękwerendę w LibreOffice Base, należy w sekcji Baza danych
kliknąć w zakładkę o nazwie Kwerendy
, po czym wybrać opcję Utwórz projekt kwerendy
:
Rozwiązanie 1.1a
Projekt kwerendy 1a
wyznaczającej liczbę towarzyskich, ligowych oraz pucharowych meczów rozegranych przez Galop Kucykowo z drużynami ze swego miasta wygląda analogicznie jak w MS Access – rekordy grupujemy według atrybutu Rodzaj_meczu
, zaś funkcja agregująca zlicza liczbę rekordów.
Warto zwrócić uwagę, iż wartości kolumny Miasto nie chcemy pokazywać w rezultatach – dlatego nie zaznaczono pola Widoczny dla tego atrybutu. Natomiast kryterium wartości tej kolumny jest oczywiście wymagane w grupowaniu, aby zliczane były tylko wyniki meczów z drużynami z Kucykowa.
Rozwiązanie 1.1b
Projekt kwerendy 1b
wyznaczającej rok, w którym drużyna Galop Kucykowo rozegrała najwięcej meczów z drużynami ze swego miasta, prezentuje się następująco:
Do wyjęcia roku z kolumny Data_meczu posłużono się funkcją o łatwej do zapamiętania nazwie YEAR()
. Warto też zauważyć konieczność posortowania wyników malejąco, według wyznaczonej wartości liczby meczów.
Co ciekawe, argumentem funkcji agregującej, która oblicza liczbę meczów, mógł być dowolny atrybut tabeli Wyniki – w końcu zliczamy rekordy tej tabeli, a nie wartości w którejkolwiek z kolumn. W przedstawionym rozwiązaniu zdecydowano się na atrybut Id_meczu
.
Liczbę zwracanych przez zapytanie rezultatów ograniczono do jednego wiersza (patrz: czerwona ramka) – w ten sposób otrzymujemy rok z największą liczbą meczów z drużynami z Kucykowa, jako że wyniki uprzednio posortowano malejąco.
Poprawna odpowiedź 1.1a:
Liczba meczów:
L 113
P 25
T 6
Poprawna odpowiedź 1.1b:
w roku 2007
liczba meczów rozegranych z drużynami ze swojego miasta: 21
Schemat oceniania
3 punkty – za prawidłową odpowiedź w całym poleceniu (oba podpunkty), w tym:
1 punkt – podpunkt 1a – za poprawną liczbę meczów,
2 punkty – podpunkt 1b - w tym: 1 punkt za podanie prawidłowego roku oraz 1 punkt za prawidłową liczbę meczów rozegranych z drużynami ze swego miasta,
0 punktów – za odpowiedź błędną albo za brak odpowiedzi.
Zadanie 1.2
Podaj listę zawierającą nazwy drużyn, z którymi drużyna Galop Kucykowo ma zerowy bilans bramkowy, tzn. łączna liczba bramek zdobytych we wszystkich meczach rozegranych z daną drużyną jest równa łącznej liczbie bramek straconych w tych meczach.
Rozwiązanie w Microsoft Access
Rozwiązanie w LibreOffice Base
W kwerendzie wyznaczamy wartość nowego atrybutu wirtualnego Bilans
, którego wartość powstaje jako różnica w liczbie bramek zdobytych i straconych. Poszukiwana przez nas wartość to bilans zerowy, co uwzględniono w kryterium.
Jednak w zapytaniu nie chodzi o bilans pojedynczego spotkania, lecz o bilans wszystkich meczów z daną drużyną. Stąd rekordy zgrupowano według nazw poszczególnych zespołów oraz zsumowano bilanse wszystkich rozegranych z nimi spotkań:
Poprawna odpowiedź:
Nocne Pumy
Zwinne Mewy
Schemat oceniania
2 punkty – za prawidłową odpowiedź,
1 punkt – za podanie poprawnych dwóch ID_druzyny (84 i 48),
0 punktów – za odpowiedź błędną lub brak odpowiedzi.
Zadanie 1.3
Podaj liczby meczów wyjazdowych – wygranych, przegranych i zremisowanych – drużyny Galop Kucykowo.
Rozwiązanie w Microsoft Access
Rozwiązanie w LibreOffice Base
Instrukcję IIf
znaną z MS Access możemy zastąpić w LibreOffice Base funkcją CASEWHEN()
:
Zawartość wpisana w czerwoną ramkę jest analogiczna do rozwiązania przedstawionego dla programu MS Access:
Jest to zagnieżdżona instrukcja, która realizuje logikę trzech możliwych scenariuszy – w zależności od wartości bilansu bramkowego, wartością nowego atrybutu Rezultat meczu
będzie słowo: Wygrana
, Przegrana
lub Remis
.
Dysponując takimi trzema wartościami jednoznacznie definiującymi wynik spotkania, łatwo już dokonać grupowania ze zliczeniem liczby rekordów pasujących do każdej z tych trzech kategorii.
Poprawna odpowiedź:
przegrana: 452
remis: 170
wygrana: 579
Schemat oceniania
3 punkty – za prawidłową odpowiedź, po jednym punkcie za każdy rekord,
2 punkty – za odpowiedź uzyskaną bez zastosowania filtra na mecze wyjazdowe (Przegrana: 910, Remis: 352, Wygrana: 1185),
0 punktów – za inną błędną odpowiedź albo za brak odpowiedzi.
Słownik
zwany też kluczem głównym (ang. primary key) to jedno lub więcej pól (atrybutów), których wartość jednoznacznie identyfikuje każdy rekord w tabeli; taka cecha klucza nazywana jest unikatowością (unikalnością); klucz podstawowy służy do powiązania rekordów w jednej tabeli z rekordami z innej tabeli
(inaczej: zapytanie) czynność polegająca na zbieraniu lub poszukiwaniu informacji w bazach danych; kwerendy mogą mieć na celu wyłącznie pobranie danych, jak i ich usuwanie, dodawanie czy modyfikację
powiązanie logiczne występujące między dwoma tabelami realizowane za pomocą kluczy albo specjalnej tabeli (tabela łącząca); w oryginalnej nomenklaturze, którą wprowadził E. F. Codd, relacja oznaczała podzbiór iloczynu kartezjańskiego, czyli tabelę; współcześnie używamy tego terminu raczej w odniesieniu do powiązań logicznych pomiędzy tabelami, niż do samych tabel