Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Ćwiczenia związane z grupowaniem danych przeprowadzimy na przykładzie bazy danych dziennika szkolnego, pochodzącej z zadania maturalnego.

Zadanie zostało opracowane przez Centralną Komisję Egzaminacyjną i pojawiło się na egzaminie maturalnym z informatyki w maju 2010 r. (poziom rozszerzony, cz. II). Cały arkusz można znaleźć na stronie internetowej CKE.

Niezbędne do zrealizowania kwerend pliki bazodanowe (w zależności od użytkowanego DBMSDBMSDBMS):

  • Szkola.accdb dla pakietu MS Access,

  • Szkola.odb dla oprogramowania LibreOffice Base.

można pobrać tutaj:

R4Kxt3R6TB1JR

Plik ZIP zawierający przykładową bazę danych.

Plik ZIP o rozmiarze 1.16 MB w języku polskim

Sposób importu rekordów z plików tekstowych, udostępnionych w zadaniu maturalnym, do bazy danych w wybranym formacie oraz dokładny opis modelu danych wraz z jego ograniczeniami przedstawiono w e‑materiale: Wprowadzenie do kwerend, etap IDzjP3iyvcWprowadzenie do kwerend, etap I.

W bazie danych powinny znajdować się zaimportowane tabele:

  • Uczniowie – z atrybutami opisującymi uczniów szkoły: IDucznia, nazwisko, imie, ulica, dom, IDklasy;

  • Oceny – z danymi na temat uzyskanych ocen: IDocenyIDucznia, Ocena, Data, IDprzedmiotu;

  • Przedmioty – z danymi o realizowanych w szkole przedmiotach: IDprzedmiotu, NazwaPrzedmiotu, Nazwisko_naucz, Imie_naucz.

Ważne!

Warto pamiętać o analizie modelu danych, której dokonaliśmy w e‑materiale: Wprowadzenie do kwerend, etap IPSNzn2826Wprowadzenie do kwerend, etap I.

Wskazaliśmy wówczas wiele niedoskonałości modelu danych, który zastosowano w podanym zadaniu maturalnym. Rozważmy np. często pojawiającą się sytuację, gdy w szkole zatrudnieni zostaliby dwaj nauczyciele, prowadzący ten sam przedmiot. Wówczas tabela Przedmioty traci spójność, gdyż aktualnie pozwala przypisać tylko jednego nauczyciela do jednego przedmiotu. To pokazuje, jak błędy popełnione w fazie projektowania logicznego modelu (brak wydzielenia nauczycieli do osobnej tabeli) utrudniają lub nawet uniemożliwiają późniejszą pracę z danymi.

Oprócz tabel baza danych musi posiadać zdefiniowane powiązania logiczne (relacje), występujące pomiędzy kluczami podstawowymi i obcymi, co również omówiono szczegółowo w I etapie tej serii e‑materiałów.

Zadanie 1

Przygotuj zestawienie średnich ocen uzyskanych przez wszystkich uczniów klasy 2a dla każdego przedmiotu szkolnego. Podaj kolejno: nazwę przedmiotu oraz średnią ocenę klasy z danych zajęć szkolnych. Wyniki uporządkuj malejąco, według średniej oceny. Ocenę średnią zaokrąglij do czterech miejsc po przecinku.

Grupowanie to proces dzielenia rekordów według pewnego kryterium. Samo dokonanie takiego podziału nie stanowi jednak celu operacji grupowania.

Podział rekordów służy jedynie pośrednio do wyznaczenia wartości funkcji agregującej dla każdej z grup. Tego typu funkcje znamy już z etapu III tej serii e‑materiałów.

Ważne!

Aby można było mówić o grupowaniu danych, nie wystarczy podać nazwy atrybutu, według którego podzielimy rekordy na poszczególne grupy. Musi także istnieć cel grupowania, czyli funkcja agregująca określająca, jaki rodzaj analizy wyznaczymy dla każdej z grup.

W zadaniu rekordy reprezentujące oceny w dzienniku grupujemy według atrybutu NazwaPrzedmiotu, zaś celem operacji jest wyznaczenie średniej oceny.

Ponieważ rekordy zostaną podzielone na grupy według nazwy przedmiotu, to otrzymamy wartość średniej oceny osobno dla każdej grupy (każdego szkolnego przedmiotu). Funkcją agregującą jest więc funkcja Średnia:

Przykładowe rozwiązanie w MS Access

R18luYHHrROb21
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Warto zwrócić uwagę, iż w zadaniu interesują nas tylko oceny uczniów z klasy 2a, stąd nałożono dodatkowe kryterium dla pola IDklasy. Uzyskane wartości średnie uporządkowano także malejąco w wierszu Sortuj.

Co istotne, to że również dla atrybutu IDklasy w wierszu Suma włączono grupowanie.

Operacja grupowania oczywiście może odbywać się według więcej niż jednego atrybutu, lecz w tym zadaniu z racji nałożonego kryterium na pole IDklasy jedyną zwracaną w wynikach zapytania grupą będą i tak tylko uczniowie klasy 2a.

Przypomnijmy także, iż dostęp do wiersza Suma uzyskamy w MS Access po wciśnięciu odpowiedniego przycisku na zakładce Projektowanie:

RLKVg8VuGlzql1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Ponieważ wartość średnia uzyskana dla każdej grupy (czyli w praktyce dla każdego przedmiotu szkolnego) ma zostać zaokrąglona do czterech miejsc po przecinku, to po kliknięciu na pole Ocena w widoku projektu, przechodzimy do panelu Arkusz właściwości:

R1Hq3MrT5nGl31
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Tutaj, analogicznie jak to przedstawiono w etapie III tego bloku e‑materiałów, określamy stałoprzecinkowy format wartości oraz liczbę miejsc dziesiętnych:

R1KTb69wSLpbf
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Teraz powinniśmy już dysponować poprawnymi, zaokrąglonymi średnimi ocenami dla każdego przedmiotu szkolnego realizowanego w klasie 2a.

Poprawne wyniki kwerendy

RYpQp7MmAAQpA
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
  • Zwróconych rekordów: 11

Grupowanie to potężny mechanizm bazodanowy – wystarczyło jedno zapytanie, aby uzyskać średnią ocenę klasy 2a dla wszystkich jedenastu przedmiotów szkolnych!

Zamiast pisać jedenaście kwerend różniących się tylko wartością atrybutu NazwaPrzedmiotu, stworzyliśmy jedną kwerendę, która podzieliła na grupy wszystkie oceny według wartości tego pola.

To nie tylko podział – celem grupowania było wyznaczenie średniej osobno dla każdego przedmiotu (w praktyce grupy rekordów). To właśnie dlatego w grupowaniu musi zostać określona funkcja agregująca.

Przykładowe rozwiązanie w LibreOffice Base

Konstrukcja kwerendy grupującej w LibreOffice Base jest podobna do rozwiązania z pakietu Microsoft Access. Najważniejsza różnica dotyczy wykorzystania rzutowania (konwersji) typu funkcją CAST w polu zawierającym średnią:

R1SQfbGz54WrB
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wartość średniej zostaje skonwertowana do typu zmiennoprzecinkowego DOUBLE, aby można było następnie w widoku danych zaokrąglić tę wartość do czterech miejsc dziesiętnych. Klikamy prawym przyciskiem myszy na kolumnie z uzyskaną średnią, wybierając opcję Formatowanie kolumn:

R12ZnNSQ8jmLU1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wersja parametryczna zapytania w MS Access

W sytuacji, w której interesuje nas średnia uczniów z każdego przedmiotu szkolnego, jednak dla nazwy klasy wprowadzonej z klawiatury:

RNDTTvmbhkQ111
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wersja parametryczna zapytania w LibreOffice Base

Klasycznie zamiast używać nawiasów kwadratowych [ ], znanych z Microsoft Access, zastosowano zapis z operatorem dwukropka i nazwą atrybutu IDklasy o wartości wprowadzanej z klawiatury:

RYpXe2z3Nlzqy
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Podstawowe zasady grupowania danych przeprowadzanego w pakietach Microsoft Access oraz LibreOffice Base brzmią więc następująco:

  1. Jeżeli w projekcie kwerendy włączono grupowanie według któregoś z atrybutów, to wszystkie pozostałe pola kwerendy również muszą wziąć udział w grupowaniu, chyba że dla pola wskazano funkcję agregującą zamiast grupowania.

  2. Jedno z pól musi mieć wskazaną z listy funkcję agregującą, gdyż nie może istnieć grupowanie, które nie ma swojego matematycznego celu.

Wersja kwerendy z polem obliczeniowym

Przygotujemy teraz alternatywną wersję kwerendy z zadania pierwszego. Będzie ona zawierać w rezultatach dodatkowe pole obliczeniowe o nazwie: Wynik, w którym pojawi się zapisana słownie informacja, zależna od wartości średniej uzyskanej przez klasę 2a dla każdego przedmiotu:

  • dla wartości średniej mniejszej od 3,000 informacja: niezadowalający;

  • dla wartości średniej większej lub równej 3,000 informacja: zadowalający.

Kwerenda z polem obliczeniowym w MS Access

Aby rozwiązać to zadanie, w MS Access tworzymy nową kwerendę Ocena wyników klasy 2a na podstawie wcześniej zapytania o nazwie Średnie ocen z przedmiotów 2a:

RXEDXYPwAP95u
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Jednak tym razem do rezultatów kwerendy dodajemy nowe pole obliczeniowe o nazwie Wynik, którego wartość ustalamy w zależności od pola ŚredniaOfOcena – wartość w polu oznaczonym czerwoną ramką jest następująca:

Wynik: IIf([ŚredniaOfOcena]<3;"niezadowalający";"zadowalający")

Rozpoczynamy od zfediniowania nazwy pola obliczeniowego, zaś jego wartość zależy od spełnienia (bądź nie) warunku instrukcji warunkowej.

Poprawne wyniki kwerendy z polem obliczeniowym

RJxYrcjRtCTqF
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
  • Zwróconych rekordów: 11

Kwerenda z polem obliczeniowym w LibreOffice Base

Analogicznie do rozwiązania w MS Access, skorzystamy z wcześniej stworzonego zapytania o nazwie Średnie ocen z przedmiotów 2a:

RpQloaoAbPxCC
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Co ważne, LibreOffice Base wymaga usunięcia z tego zapytania malejącego sortowania wyników (patrz czerwona ramka) – w tym pakiecie można tego dokonać dopiero w kwerendzie pochodnej:

Rk9Gqz41zopdQ
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Do rezultatów kwerendy dodaliśmy nowe pole obliczeniowe o nazwie Wynik, którego wartość ustalamy w zależności od pola ŚredniaOcen – wartość w polu oznaczonym czerwoną ramką jest następująca:

CASEWHEN( [ŚredniaOcen] < 3, 'niezadowalający', 'zadowalający' )

Wyniki będą analogiczne jak w MS Access, zauważmy też włączenie sortowania malejącego dopiero w kwerendzie Ocena wyników klasy 2a zawierającej pole obliczeniowe.

Wnioski płynące z zadania

  • Chcąc wykorzystać funkcję agregującą w celu obliczenia wartości podsumowującej dla grupy rekordów, należy zastanowić się, jakie pola wybrać do grupowania,

  • Zaokrąglenie wartości otrzymanej w wyniku wykonania funkcji agregującej wymaga określenia formatu wartości oraz liczby miejsc dziesiętnych.

  • Zapytanie używające mechanizmu grupowania może być kwerendą parametryczną,

  • Dodatkowe pole obliczeniowe pozwala wyznaczyć wartości powstające na podstawie pól pierwotnie zwróconych w rezultatach kwerendy.

Zadanie 2

Przygotuj zestawienie pięciu najlepszych uczniów szkoły, czyli osób, które uzyskały najwyższą średnią ze wszystkich otrzymanych ocen. Podaj kolejno: wartość obliczonej średniej z dokładnością do czterech miejsc dziesiętnych, imię i nazwisko ucznia, jego identyfikator w systemie bazodanowym oraz nazwę klasy, do której uczęszcza.

W rozwiązaniu tego polecenia również warto użyć mechaniki grupowania danych. Wszystkie oceny chcemy podzielić na grupy według osób, które dany stopień w dzienniku uzyskały.

Następnie dla każdej grupy ocen konkretnego ucznia danej klasy wyznaczymy średnią tych wartości – funkcją agregującą będzie więc Średnia:

Przykładowe rozwiązanie w Microsoft Access

R1XWplMJIPSyj1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Zwróćmy jednak uwagę, że może zdarzyć się, iż w dzienniku szkolnym pojawią się osoby o identycznych imionach i nazwiskach. W analizowanej bazie danych istnieją aż trzy uczennice o imieniu i nazwisku Magdalena Zielinska – w klasach: 1c, 1e, 2b. Można to sprawdzić w tabeli Uczniowie.

Ciekawostka

Zwróćmy uwagę – obecność atrybutu unikalnego IDucznia w rezultatach kwerendy pozwala uniknąć błędu wynikającego z ewentualnej zbieżności nazwisk uczniów.

Ponieważ interesuje nas piątka najlepszych uczniów w szkole, wynikowe średnie sortujemy malejąco oraz zwracamy tylko pięć pierwszych rekordów – patrz czerwona ramka obok opcji Zwróć na zakładce Projektowanie.

Zaokrąglenie wartości realizujemy identycznie jak w poprzednim poleceniu.

Poprawne wyniki kwerendy

R1TeivIYPZQpG
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
  • Zwróconych rekordów: 5

Przykładowe rozwiązanie w LibreOffice Base

Mechanika grupowania jest identyczna jak w Microsoft Access; nie zapominajmy o uwzględnieniu atrybutu unikalnego opisującego ucznia oraz o ograniczeniu liczby zwracanych przez kwerendę rekordów do pięciu:

R15UNyP0KlSTz1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Ponownie, z powodu konieczności zaokrąglenia wartości, konwertujemy wynik średniej do typu zmiennoprzecinkowego DOUBLE oraz w widoku danych klikamy prawym przyciskiem myszy na kolumnie z uzyskaną średnią, wybierając opcję Formatowanie kolumn.

Wersja parametryczna zapytania w Microsoft Access

Załóżmy, że tym razem interesuje nas pięciu uczniów o najwyższej średniej, lecz tylko uczęszczających do klasy, której nazwę wprowadzimy z klawiatury:

Rfn6RFy6ZfaUP1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
Ciekawostka

Oczywiście może się zdarzyć, iż uczeń na szóstym miejscu w zestawieniu osiągnie dokładnie taką samą wartość średniej jak osoba na miejscu piątym!

Jak zachowa się Microsoft Access oraz LibreOffice Base w sytuacji uzyskania wyników ex aequo?

Rozważmy rezultaty powyższej kwerendy zwrócone dla klasy 2b:

R1KApyTHoevUQ
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Co wydarzyłoby się w przypadku przebudowania kwerendy w taki sposób, aby zwracała średnią tylko najlepszego ucznia?

Zachowania obu pakietów są następujące:

  • Microsoft Access pomimo zastosowania klauzuli TOP 1 w zapytaniu zwraca w rezultatach kwerendy oba rekordy,

  • LibreOffice Base zwraca w analogicznej sytuacji tylko jeden z rekordów, nie sygnalizując wystąpienia remisu.

Wersja parametryczna zapytania w LibreOffice Base

Ponownie zamiast nawiasów kwadratowych wykorzystujemy zapis :IDklasy.

ROonOYIMOLRRQ1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wnioski płynące z zadania

  • W zapytaniach zawsze korzystamy z atrybutu unikalnego w grupowaniu, tak aby zbieżność imienia i nazwiska nie spowodowała wyznaczenia średniej np. trojga uczniów, zamiast dla każdej osoby oddzielnie.

  • Zarówno Microsoft Access, jak i LibreOffice Base umożliwiają ograniczenie liczby zwracanych rekordów.

  • Ograniczenie liczby zwracanych rekordów w połączeniu z mechaniką sortowania wyników pozwala znaleźć top X wartości największych lub najmniejszych, gdzie przez X rozumiemy liczbę zwracanych przez kwerendę wierszy.

Zadanie 3

Stwórz zestawienie średniej wartości ze wszystkich ocen, które wystawił w dzienniku każdy z nauczycieli. Podaj kolejno: nazwisko i imię nauczyciela oraz średnią ze wszystkich ocen umieszczonych w dzienniku przez tę osobę. Zestawienie uporządkuj rosnąco według wartości średniej, czyli od osoby teoretycznie oceniającej uczniów najsurowiej, zaś wartość średniej podaj z dokładnością do czterech miejsc po przecinku.

W modelu danych dziennika szkolnego istnieje łącznie jedenaścioro nauczycieli, wśród których nie występuje zbieżność imienia i nazwiska. Grupowania rekordów możemy zatem dokonać jedynie według pól Nazwisko_naucz oraz Imie_naucz, zaś funkcją agregującą będzie Średnia wyznaczona dla pola Ocena.

Ważne!

Jak wspominaliśmy w analizie modelu danych przeprowadzonej jeszcze w etapie I niniejszych ćwiczeń: Wprowadzenie do kwerend, etap IDzjP3iyvcWprowadzenie do kwerend, etap I, w bazie danych powinna istnieć tabela Nauczyciele, dzięki czemu każdy wykładowca posiadałby własny unikalny identyfikator – wówczas nawet ewentualna zbieżność imion czy nazwisk nauczycieli nie stanowiłaby najmniejszego problemu.

Przykładowe rozwiązanie w Microsoft Access

R1FJ12SK84mz8
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Ponieważ chcemy uporządkować wyniki, rozpoczynając od nauczyciela, który wystawia ocenę średnio najniższą, to w wierszu Sortuj wybrany został porządek rosnący.

Poprawne wyniki kwerendy

Zaokrąglenie średnich ocen do czterech miejsc po przecinku uzyskujemy w Microsoft Access tak samo, jak opisano w zadaniu pierwszym.

RuivrcB7OkV5v
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
  • Zwróconych rekordów: 11

Ciekawostka

Domyślny alias ŚredniaOfOcena ustanowiony automatycznie przez Microsoft Access możemy zmienić – wystarczy w widoku projektu kwerendy dopisać w wybranej kolumnie nazwę pola zakończoną dwukropkiem:

RSNEAcSE7DMU1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

w ten sposób zmienimy domyślny alias ŚredniaOfOcena na samodzielnie zdefiniowaną wartość: Średnia.

Przykładowe rozwiązanie w LibreOffice Base

Nie zapominamy o zastosowaniu funkcji CAST, ponieważ chcemy zaokrąglić wyniki w widoku danych. Zwróćmy też uwagę, iż nowemu atrybutów nadano alias Srednia, co nie jest może koniecznością, ale może okazać się przydatne do łatwiejszej analizy wyników kwerendy.

RksAPAOgsFh4n
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Przypomnijmy, że w widoku danych klikamy prawym przyciskiem myszy na kolumnie z uzyskaną średnią, wybierając opcję Formatowanie kolumn, tam ustawiając pożądaną liczbę miejsc dziesiętnych – w razie wątpliwości zajrzyj do opisu zadania pierwszego.

Wersja parametryczna zapytania w Microsoft Access

Załóżmy, iż tym razem interesuje nas średnia ocena wystawiana przez nauczyciela nie w całej szkole, lecz tylko w klasie, której nazwę wprowadzimy z klawiatury:

RQDsfjwkz5cuP
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wersja parametryczna zapytania w LibreOffice Base

Ponownie używamy operatora dwukropka oraz nazwy atrybutu, którego wartość wprowadzimy z klawiatury:

RkuTqImzEsTdd
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wnioski płynące z zadania

  • Model danych dziennika szkolnego nie jest poprawnie znormalizowany – patrz etap I tej serii e‑materiałów. Z tego powodu, podziału wszystkich ocen na grupy według nauczyciela, który ocenę wystawił dokonaliśmy po imieniu i nazwisku prowadzącego zajęcia.

  • W przypadku ocen szkolnych często przychodzi nam używać funkcji agregującej Średnia. Nic jednak nie stoi na przeszkodzie, żeby wykorzystywać w grupowaniu także inne znane nam funkcje, na przykład: Policz, Suma itd. Dobór funkcji agregującej to ważna umiejętność inżyniera baz danych.

Zadanie 4

Przygotuj zestawienie wszystkich uczniów w szkole, którym nie wystawiono w dzienniku ani jednej oceny z matematyki. Podaj kolejno: nazwisko i imię ucznia oraz IDklasy, do której uczęszcza.

W tej kwerendzie wykorzystamy mechanizm łączenia zestawów danych (ang. join). Aby znaleźć uczniów, którzy nie otrzymali żadnej oceny z matematyki, dokonamy złączenia:

  • tabeli Uczniowie, w której znajdują się wszyscy uczniowie szkoły,

  • kwerendy, która wyjmie z tabeli Oceny jedynie oceny z matematyki.

Kiedy dokonamy złączenia tych dwóch zestawów danych w jedną tabelę (pamiętając o logicznym powiązaniu występującym w atrybucie IDucznia), okaże się, że wartości w kolumnach pochodzących z kwerendy pozostaną puste dla tych uczniów, którzy nie otrzymali żadnej noty z matematyki.

Innymi słowy: jeśli uczeń o zadanym IDucznia występował jedynie w tabeli Uczniowie, zaś nie udało się znaleźć takiej samej wartości IDucznia w wynikach kwerendy, oznacza to, że ten uczeń nie otrzymał żadnej oceny z matematyki.

Taką sytuację można wykryć w rezultatach złączenia, używając w kryterium wyszukiwania odpowiednio:

  • Is Null w programie Microsoft Access,

  • IS EMPTY w pakiecie LibreOffice Base.

Przedstawmy zatem teraz sposób wykorzystania tych zapisów w praktyce.

Przykładowe rozwiązanie w Microsoft Access

Rozpoczynamy od stworzenia pomocniczej kwerendy, która wyjmie z dziennika szkolnego jedynie oceny z matematyki:

RQz0mJZjW2tkD
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

W zwracanych rezultatach pojawił się dodatkowo atrybut IDucznia, którego nie sposób pominąć, ponieważ pozostaje w powiązaniu logicznym z tabelą Uczniowie. System bazodanowy musi wiedzieć, czyje oceny zwracamy w kwerendzie – bez tej wiedzy nie udała się ustalić, którzy uczniowie ocen nie posiadają.

Program Microsoft Access udostępnia nam wygodny kreator do konstruowania złączeń wyszukujących wartości Is Null w kryterium kwerendy:

RjfLCrsZERtjl1
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Poszukujemy uczniów znajdujących się co prawda w tabeli Uczniowie, lecz nieobecnych („niepasujących”) w wynikach kwerendy wyszukującej wszystkie oceny z matematyki. Interesuje nas zatem ostatnia opcja na liście możliwych do utworzenia kwerend:

R5hVC3WykBfPp
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Warto wczytać się w udostępniony w powyższym oknie (patrz niebieska ramka) opis rodzaju tworzonej kwerendy – jest to dokładnie mechanika takiego złączenia, które okazuje się przydatne w tym zadaniu.

Rozpoczynamy od wskazania tabeli, w której znajdują się rekordy (w tym zadaniu są to uczniowie) być może nieposiadający rekordów pokrewnych w innym zestawie danych (w przypadku naszego zadania nieposiadający ocen z matematyki):

RER3GYCdFR2rM
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Kolejny krok jest logiczny – wskazujemy drugi zestaw danych, w którym dla powiązanego rekordu może wystąpić Is Null w wartości kryterium:

RnxEaTle09PYh
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Teraz trzeba wskazać atrybut, który stanowi powiązanie logiczne pomiędzy dwoma określonymi wcześniej zestawami danych:

Rh0hu0riwiCvc
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Zgodnie z poleceniem wybieramy pożądany zestaw informacji dotyczących ucznia:

RKgXvb4KFmc0d
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

W ostatnim kroku nazywamy wynikową kwerendę:

R6L8YiiOMvX0l
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Gdy zajrzymy do projektu świeżo utworzonej przez kreator kwerendy, zauważymy, że rzeczywiście wykorzystano klauzulę Is Null w wartości kryterium:

R1MTdriTMXK4R
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Poprawne wyniki kwerendy

R1C5HafnC7oic
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.
  • Zwróconych rekordów: 9

Przykładowe rozwiązanie w LibreOffice Base

Rozpoczynamy od przygotowania kwerendy pomocniczej, która zawierać będzie wszystkie wystawione w dzienniku oceny z matematyki:

RFfINeNCdQu04
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Pakiet LibreOffice Base nie udostępnia nam kreatora wyszukiwania niepasujących danych, lecz możemy sami przygotować projekt takiej kwerendy.

Po wstawieniu do danych źródłowych kwerendy tabeli Uczniowie oraz zapytania zwracającego wszystkie oceny z matematyki, tworzymy „nitkę” powiązania logicznego pomiędzy dwoma zestawami danych, po czym klikamy na nią prawym przyciskiem myszy, wybierając opcję Edycja...:

RbLhm3GZ8n2VG
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Pamiętajmy, iż znanemu z Microsoft Access zapisowi Is Null w LibreOffice Base odpowiada wartość kryterium: IS EMPTY.

W oknie właściwości złączenia wybieramy Złączenie prawostronne. Dlaczego? Zwróćmy uwagę, że tabela Uczniowie znalazła się po prawej stronie okna (patrz niebieska ramka poniżej), stąd to właśnie do tej „pełnej” tabeli (zawierającej wszystkie dostępne wartości IDucznia) dołączamy tabelę teoretycznie „mniejszą”, gdyż zawierającą wartości IDucznia jedynie tych osób, które otrzymały oceny z matematyki:

Rw7Xz4ERy6m21
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wskazujemy w powyższym oknie atrybut IDucznia jako złączone pola.

Wnioski płynące z zadania

  • Skorzystanie z zapisu Is Null w progamie Microsoft Access lub IS EMPTYLibreOffice Base umożliwia wyszukanie rekordów nieposiadających wartości pokrewnych w innym, złączonym zestawie danych. W praktyce mogą to być np. uczniowie nieposiadający oceny z matematyki w dzienniku szkolnym czy klienci sklepu internetowego, którzy niczego jeszcze w serwisie nie zamówili.

Słownik

kwerenda
kwerenda

(ang. query – zapytanie); jest to zapisane z użyciem języka SQL polecenie skierowane do systemu bazodanowego, którego celem może być: pobranie, dodanie, modyfikacja lub usunięcie danych albo sposobu ich przechowywania w systemie

DBMS
DBMS

(ang. Database Management System) lub w wersji polskiej: SZBD (System Zarządzania Bazą Danych) to oprogramowanie, które obsługuje wszystkie działania administracyjne związane z bazami danych i odpowiada za realizację podstawowych funkcji: zarządzanie użytkownikami, ochronę integralności danych, zapewnienie możliwości wykonywania na zgromadzonych informacjach kwerend, dbanie o bezpieczeństwo zbioru informacji; przykładowe systemy DBMS: MySQL, MariaDB, FireBird, PostgreSQL, Microsoft SQL Server, SQLite, Oracle Database, Microsoft Access, LibreOffice Base