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%.
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.
Zanim zaczniesz pisać kwerendy, musisz zbudować "mosty" między tabelami. Pamiętaj o dwóch złotych zasadach:
Primary Key to unikalny identyfikator każdego rekordu. W tej tabeli wartości absolutnie nie mogą się powtarzać!
Np. ID_ucznia czy PESEL.
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 .
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.
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.
Mamy trzy typowe tabele: Uczniowie (ID_ucznia, Imie, Nazwisko), Oceny (ID_oceny, Wartosc, ID_ucznia, ID_przedmiotu) oraz Przedmioty (ID_przedmiotu, Nazwa_przedmiotu).
"Podaj imiona i nazwiska uczniów, którzy otrzymali ocenę niedostateczną (wartość 1) z przedmiotu o nazwie 'Informatyka'."
Próba łączenia tabel, które nie mają wspólnego klucza, natychmiast wyrzuci błąd. Zawsze sprawdzaj, czy nie potrzebujesz środkowej tabeli jako "mostu".
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).
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!
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ę!