Bazy Danych: Fundamenty, Import i Relacje
Import pliku tekstowego bez utraty danych, typy pól, klucz główny i obcy oraz relacje — czyli etap, który przesądza o wszystkich późniejszych kwerendach.
Wstęp: pięć minut, od których zależy całe zadanie
Zadanie z bazy danych na maturze prawie zawsze zaczyna się tak samo: dostajesz pliki tekstowe albo CSV i masz zbudować z nich bazę. To nudny etap, ale każdy błąd popełniony tutaj wraca z odsetkami. Data wczytana jako tekst nie da się posortować chronologicznie, kwota z przecinkiem zamiast kropki nie zsumuje się w agregacji, a brak relacji zamieni złączenie w iloczyn kartezjański. Ten dział to lista kontrolna pierwszych pięciu minut pracy przy komputerze.
📋 Spis treści
1 Import pliku tekstowego krok po kroku
Zanim cokolwiek zaimportujesz, otwórz plik w notatniku. Trzydzieści sekund oglądania danych oszczędza kwadrans poprawiania tabeli. Sprawdzasz cztery rzeczy: czym rozdzielone są kolumny, czy pierwszy wiersz to nagłówki, jaki jest separator dziesiętny i czy polskie znaki wyświetlają się poprawnie.
- Ogranicznik. Tabulator, średnik albo przecinek. W polskich plikach CSV najczęściej jest to średnik, bo przecinek pełni rolę separatora dziesiętnego.
- Pierwszy wiersz zawiera nazwy kolumn. Jeśli tego nie zaznaczysz, nagłówki wylądują jako zwykły rekord i zepsują typ całej kolumny.
- Kodowanie znaków. Gdy zamiast „ą” widzisz krzaki, wróć i wybierz inne kodowanie: pliki CKE bywają w UTF-8, starsze w Windows-1250.
- Typ każdej kolumny. Kreator zgaduje i często się myli, zwłaszcza przy datach i kwotach. To jedyny moment, w którym możesz to ustawić bez przepisywania danych.
Jeśli w pliku kwoty zapisano jako 1234,50, a system oczekuje kropki, kolumna wczyta się jako tekst. Objaw jest charakterystyczny: wartości wyrównują się do lewej, a funkcja sumująca zwraca zero albo błąd. Ratunek to import kolumny jako tekstu i konwersja w kwerendzie albo poprawienie separatora w pliku przed importem, w edytorze tekstu, opcją zamiany wszystkich wystąpień.
2 Typy pól i skutki złego wyboru
Typ pola nie jest kosmetyką. Decyduje o tym, jak dane się sortują, czy da się na nich liczyć i czy porównanie zadziała. Najczęstsze pomyłki dotyczą trzech kolumn: daty, kwoty i numeru, który tylko wygląda na liczbę.
- ceny, kwoty, oceny, wagi — typ liczbowy lub walutowy
- daty zamówień, urodzenia, wypożyczenia — typ data i godzina
- wszystko, co będziesz sumować, uśredniać albo porównywać zakresem
- kod pocztowy — myślnik i zera wiodące
- numer telefonu, PESEL, numer indeksu
- identyfikatory z literami, na przykład
ZAM/2026/041
Data wczytana jako tekst posortuje się alfabetycznie. Przy zapisie 01.02.2026 i 15.01.2026 tekstowo „pierwszy lutego” wyląduje przed „piętnastym stycznia”, bo porównywane są kolejne znaki, a nie momenty w czasie.
Format RRRR-MM-DD jest jedynym, który sortuje się poprawnie także jako tekst. Jeśli musisz ratować kolumnę tekstową, przekształć ją funkcją konwersji daty w polu obliczeniowym, zanim zaczniesz filtrować zakresem.
3 Klucz główny i klucz obcy
Klucz główny jednoznacznie wskazuje rekord w tabeli: nie może się powtarzać ani być pusty. Klucz obcy to pole, które przechowuje wartość klucza głównego z innej tabeli i w ten sposób łączy dane. W typowym zadaniu tabela Zamowienia ma kolumnę ID_klienta, która wskazuje rekord w tabeli Klienci.
Klienci ID <- klucz glowny, unikalny Nazwisko Miasto Zamowienia Numer <- klucz glowny ID_klienta <- klucz obcy, wskazuje Klienci.ID Wartosc Data
Gdyby przy każdym zamówieniu powtarzać nazwisko i adres klienta, to jedna zmiana adresu wymagałaby poprawienia setek wierszy, a literówka w jednym z nich rozbiłaby grupowanie: „Kowalski” i „Kowaski” policzyłyby się jako dwie osoby. Rozdzielenie danych na tabele powiązane kluczami to właśnie sens normalizacji — dane opisujące jeden byt trzymamy w jednym miejscu.
4 Relacje i rodzaje złączeń
W Accessie relacje ustawiasz w oknie Narzędzia bazy danych → Relacje, przeciągając klucz główny na klucz obcy. Zaznaczenie więzów integralności blokuje wpisanie zamówienia dla nieistniejącego klienta. W zapytaniu tę samą informację niesie złączenie, a jego rodzaj zmienia wynik.
-- tylko klienci, ktorzy maja zamowienia SELECT k.Nazwisko, z.Numer FROM Klienci AS k INNER JOIN Zamowienia AS z ON k.ID = z.ID_klienta; -- wszyscy klienci, takze ci bez zamowien SELECT k.Nazwisko, z.Numer FROM Klienci AS k LEFT JOIN Zamowienia AS z ON k.ID = z.ID_klienta; -- klienci, ktorzy nie zlozyli zadnego zamowienia SELECT k.Nazwisko FROM Klienci AS k LEFT JOIN Zamowienia AS z ON k.ID = z.ID_klienta WHERE z.Numer IS NULL;
Samo złączenie wewnętrzne takich rekordów nie pokaże, bo one nie mają pary. Potrzebujesz złączenia zewnętrznego i warunku na wartość pustą po stronie drugiej tabeli — wzorzec z ostatniego przykładu wyżej. W siatce projektowej odpowiada mu kwerenda niepasujących rekordów, którą Access potrafi zbudować kreatorem.
5 Kontrola po imporcie
Zanim napiszesz pierwszą kwerendę, poświęć minutę na sprawdzenie, czy baza jest zdrowa. Każdy z tych punktów wyłapuje błąd, który inaczej ujawni się dopiero przy ostatnim podpunkcie zadania, gdy nie będzie już czasu.
- Liczba rekordów. Porównaj licznik w tabeli z liczbą wierszy w pliku źródłowym. Różnica o jeden zwykle oznacza wczytany nagłówek albo pusty wiersz na końcu pliku.
- Wyrównanie kolumn. Liczby i daty wyrównują się do prawej. Kolumna kwot wyrównana do lewej to sygnał, że masz tekst.
- Polskie znaki. Przejrzyj kilka rekordów z nazwiskami.
- Wartości skrajne. Posortuj kolumnę liczbową rosnąco i malejąco. Kwota ujemna albo data z roku 1899 to ślad błędnej konwersji.
- Relacje. Otwórz okno relacji i sprawdź, czy linie łączą właściwe pola — łatwo pomylić
IDzID_klienta.
6 Rodzaje relacji i tabela łącząca
W arkuszach spotkasz trzy układy. Jeden do wielu to sytuacja domyślna: jeden klient ma wiele zamówień, jedna klasa wielu uczniów. Jeden do jednego pojawia się rzadko, zwykle gdy dane rozbito na dwie tabele ze względów porządkowych. Wiele do wielu wymaga trzeciej tabeli, bo inaczej nie da się go zapisać.
Uczniowie Zapisy (tabela laczaca) Kursy
ID <--- ID_ucznia ID --->
Nazwisko ID_kursu Nazwa
Data_zapisu ProwadzacyJeden uczeń chodzi na kilka kursów, a na jeden kurs chodzi wielu uczniów. Bez tabeli łączącej musiałbyś wpisywać listę kursów do jednego pola, a wtedy nie da się ani policzyć uczestników, ani odfiltrować po kursie. Z tabelą łączącą pytanie „ilu uczniów chodzi na każdy kurs” to zwykłe grupowanie po ID_kursu.
7 Gdy na stanowisku jest LibreOffice Base
Zestaw oprogramowania wybierasz przed egzaminem z listy ogłoszonej przez CKE, a w zestawach z pakietem LibreOffice rolę Accessa pełni Base. Mechanizmy są te same, ale trzy rzeczy wyglądają inaczej i warto wiedzieć o nich wcześniej niż przy zadaniu.
- Import danych zwykle prowadzi przez arkusz kalkulacyjny: otwierasz plik tekstowy w Calcu, ustawiasz separatory i typy kolumn, a potem wklejasz zakres do Base jako nową tabelę.
- Kreator kwerend jest uboższy niż siatka Accessa, więc zapytania szybciej pisze się w widoku SQL. To dodatkowy powód, żeby znać składnię, a nie tylko klikanie.
- Znaki wieloznaczne to
%i_, a nie gwiazdka i pytajnik. Ta sama kwerenda przeniesiona z Accessa bez zamiany symboli zwróci pustkę.
Weź pliki z dowolnego arkusza z naszej bazy i zaimportuj je dwa razy: raz zgadując typy, raz ustawiając je świadomie. Potem policz sumę wybranej kolumny w obu wersjach. Gdy zobaczysz różnicę na własne oczy, żaden kreator importu już Cię nie zaskoczy.
Korepetycje z informatyki
Zdajesz maturę rozszerzoną z informatyki?
Prowadzimy indywidualne przygotowanie do matury z informatyki — algorytmy, Python i C++, bazy danych i arkusz kalkulacyjny. Zajęcia online, na arkuszach CKE. Zobacz program i cennik.
Zobacz korepetycje z informatykiUczysz się w technikum informatycznym? Prowadzimy też przygotowanie do kwalifikacji INF.02, INF.03 i INF.04. Zobacz egzaminy zawodowe →