ŚredniWaga: 4-8 pkt

Relacje i Kwerendy Wielotabelowe

Wszystko, co musisz wiedzieć o łączeniu tabel na maturze. Klucz główny, klucz obcy, relacje jeden do wielu oraz INNER JOIN. To absolutny pewniak 100%.

  1. Dlaczego właściwie musimy łączyć tabele?

Na maturze z informatyki dane nigdy nie są podane na tacy w jednym wielkim arkuszu. Zamiast tego, CKE rzuca Ci 3-4 pliki tekstowe (np. uczniowie.txt, oceny.txt, przedmioty.txt).

Po ich zaimportowaniu do Accessa lub środowiska SQL stają się one osobnymi bytami. Aby wyciągnąć z nich użyteczne informacje, musimy je ze sobą posklejać, tworząc relacyjną bazę danych. Sukces całego zadania zależy od tego, czy poprawnie zidentyfikujesz i połączysz odpowiednie klucze.

  1. Dwa najważniejsze pojęcia: Klucz Główny i Obcy

Zanim zaczniesz pisać kwerendy, musisz zbudować "mosty" między tabelami. Pamiętaj o dwóch złotych zasadach:

🔑 Klucz główny (PK)

Primary Key to unikalny identyfikator każdego rekordu. W tej tabeli wartości absolutnie nie mogą się powtarzać!

Np. ID_ucznia czy PESEL.

🔗 Klucz obcy (FK)

Foreign Key to pole w innej tabeli, odwołujące się do klucza głównego. Tutaj wartości mogą (i będą!) się powtarzać.

Np. jeden uczeń może mieć wiele ocen.

💡 Złota zasada łączenia:

Zawsze łączymy Klucz główny z Kluczem obcym. W ten sposób tworzymy klasyczną dla matury relację typu jeden do wielu, oznaczaną matematycznie jako 1:N1:N.

  1. Jak wyciągnąć dane? JOIN vs Access

💻 Środowisko SQL

Używamy polecenia JOIN (najczęściej INNER JOIN). Zwraca ono tylko i wyłącznie te wiersze, które mają pasujące wartości w obu połączonych tabelach.

🖱️ Microsoft Access

Wystarczy w widoku projektu kwerendy dodać odpowiednie tabele i przeciągnąć myszką pole klucza głównego do klucza obcego. Gdy zobaczysz czarną linię łączącą tabele – gotowe! Access sam w tle wygeneruje kod z INNER JOIN.

  1. Klasyczne zadanie maturalne w praktyce

Mamy trzy typowe tabele: Uczniowie (ID_ucznia, Imie, Nazwisko), Oceny (ID_oceny, Wartosc, ID_ucznia, ID_przedmiotu) oraz Przedmioty (ID_przedmiotu, Nazwa_przedmiotu).

Zadanie

Polecenie z arkusza:

"Podaj imiona i nazwiska uczniów, którzy otrzymali ocenę niedostateczną (wartość 1) z przedmiotu o nazwie 'Informatyka'."

Zapisz kolejne kroki budowania relacji i kwerendy w SQL.
💡 Pokaż rozwiązanie krok po kroku
  • 1

    Krok 1: Zrozumienie "mostu" (Tabeli pośredniej)

    Nie możemy połączyć Uczniów bezpośrednio z Przedmiotami, bo nie mają wspólnego klucza. Musimy użyć tabeli Oceny jako mostu, ponieważ zawiera ona zarówno ID_ucznia, jak i ID_przedmiotu.

  • 2

    Krok 2: Łączenie tabel (JOIN)

    Łączymy pierwszą parę: Uczniowie INNER JOIN Oceny ON Uczniowie.ID_ucznia = Oceny.ID_ucznia, a do wyniku dołączamy trzecią tabelę: INNER JOIN Przedmioty ON Oceny.ID_przedmiotu = Przedmioty.ID_przedmiotu.

  • 3

    Krok 3: Nałożenie warunków i złożenie kodu

    Dodajemy warunki do klauzuli WHERE (Wartość = 1 oraz Nazwa = 'Informatyka').

    SELECT Uczniowie.Imie, Uczniowie.Nazwisko
    FROM Uczniowie
    INNER JOIN Oceny ON Uczniowie.ID_ucznia = Oceny.ID_ucznia
    INNER JOIN Przedmioty ON Oceny.ID_przedmiotu = Przedmioty.ID_przedmiotu
    WHERE Oceny.Wartosc = 1 AND Przedmioty.Nazwa_przedmiotu = 'Informatyka';

  1. Maturalne miny (Na co koniecznie uważać!)

🧨 Gubienie tabel pośrednich

Próba łączenia tabel, które nie mają wspólnego klucza, natychmiast wyrzuci błąd. Zawsze sprawdzaj, czy nie potrzebujesz środkowej tabeli jako "mostu".

⚠️ Niejednoznaczność nazw kolumn

Jeśli pole ID_ucznia znajduje się w kilku tabelach, sam zapis SELECT ID_ucznia zmyli bazę. Musisz zawsze precyzować pochodzenie: Tabela.Kolumna (np. Uczniowie.ID_ucznia).

👻 Pułapka LEFT JOIN

Zwykły INNER JOIN pomija rekordy bez pary. Jeśli jednak CKE zapyta: "Podaj wszystkich uczniów wraz z liczbą wypożyczeń, nawet tych, którzy nic nie wypożyczyli", wymusza to użycie LEFT JOIN!

Nadal czujesz się niepewnie?

To tylko jeden z pewniaków. Na kursie przechodzimy przez nie wszystkie, krok po kroku, aż poczujesz ten spokój.

Pomóżcie mi zdać maturę!