Przejdź do treści
Cyfrowa Pracownia
Materiały dla ucznia

Projekt tabeli szkolnej biblioteki

Bazy danych Klasy VII i VIII Za darmo, bez logowania

Uczeń projektuje tabelę dla zbioru książek szkolnej biblioteki, nazywa pola i ich typy, rozbija zlepiony opis na osobne rekordy i wskazuje pole, które jednoznacznie odróżnia jeden rekord od drugiego.

Czego się nauczysz

Budowa tabeli w bazie danych

Rozpoznajesz w tabeli rekord, pole i wartość oraz wiesz, czym różni się nagłówek kolumny od wiersza z danymi.

Projekt pól i klucza

Umiesz podzielić zlepiony opis rzeczy na osobne pola, dobrać im typ danych i wskazać pole, którego wartość nie powtarza się w żadnym innym rekordzie.

Szkolna biblioteka może mieć wszystkie dane o książkach w komputerze i mimo to nie potrafić odpowiedzieć na pytanie „co wydano po 2018 roku”. Przyczyną nie jest brak danych, tylko sposób ich zapisania. Z tego materiału dowiesz się, jak zbudowana jest tabela, dlaczego jedna informacja musi mieć własne pole i po co każdej tabeli pole, które nigdy się nie powtarza.

Tabela, rekord, pole, wartość

Baza danych zaczyna się od tabeli, czyli zbioru danych o rzeczach jednego rodzaju. Jedna tabela opisuje książki, inna wypożyczenia, jeszcze inna uczniów. Mieszanie rodzajów w jednej tabeli jest źródłem większości późniejszych kłopotów.

W tabeli rozróżniamy cztery rzeczy i warto nazywać je precyzyjnie. Rekord to jeden wiersz, czyli jedna konkretna książka. Pole to jedna kolumna, czyli ta sama informacja powtórzona dla wszystkich rekordów, na przykład rok wydania. Wartość to zawartość jednej komórki, czyli rok wydania tej jednej książki. Nagłówek to pierwszy wiersz z nazwami pól i nie jest rekordem, tylko opisem tabeli.

Ten podział nie jest tylko nazewnictwem. Wyszukiwać, sortować i filtrować da się wyłącznie po całych polach. Komputer nie zagląda do środka komórki i nie zgaduje, że pierwsze słowo to imię, a drugie nazwisko. Jeśli chcesz kiedykolwiek szukać po nazwisku, nazwisko musi mieć własną kolumnę. Jeśli chcesz filtrować po roku, rok musi mieć własną kolumnę.

Nazwy pól też podlegają regułom. Piszemy je bez spacji i bez polskich znaków, łącząc słowa podkreśleniem: nr_inwentarza, rok_wydania, autor_nazwisko. Powód jest praktyczny: takie nazwy działają bez niespodzianek w arkuszach, w bazach danych i w programach, które kiedyś sięgną po te dane.

Spróbuj sam

Otwórz dowolny arkusz kalkulacyjny i wpisz w pierwszym wierszu nagłówki: nr_inwentarza, tytul, autor_nazwisko, autor_imie, rok_wydania, dzial, status, data_zwrotu. Pod spodem wpisz jeden rekord opisujący dowolną książkę z Twojego domu. Potem wskaż palcem na ekranie: co jest rekordem, co polem, co wartością, a co nagłówkiem.

Jedna informacja w jednym polu

Najczęstszy błąd w projekcie tabeli to zlepek: cały opis rzeczy wpisany do jednej komórki. Wygląda to niewinnie, na przykład „Adam Mickiewicz Pan Tadeusz wydanie 2019 lektury nr inw. 1042 na polce”. Człowiek odczyta to bez trudu, więc łatwo uznać, że dane są w komputerze. Nie są, przynajmniej nie w użytecznej postaci.

Zobacz, co się dzieje przy sortowaniu takiej kolumny. Arkusz porównuje ciągi znak po znaku, od pierwszego znaku. Adam Mickiewicz trafi więc pod literę A, a nie pod M, bo pierwsze w komórce jest imię. Wynik wygląda na posortowany i nie ma nic wspólnego z porządkiem nazwisk. Filtrowanie po roku też nie zadziała, bo rok jest fragmentem napisu, a nie osobną wartością.

Reguła jest prosta: każda informacja, po której kiedykolwiek będziesz szukać, sortować albo filtrować, musi mieć własne pole. Imię i nazwisko rozdzielasz na dwa pola nie dlatego, że tak wygląda ładniej, tylko dlatego, że biblioteka sortuje po nazwisku.

Działa to też w drugą stronę i warto o tym pamiętać: połączyć dane zawsze można, rozdzielić znacznie trudniej. Z pól autor_imie i autor_nazwisko w każdej chwili zrobisz jeden napis. Z jednego pola z pełnym imieniem i nazwiskiem odzyskanie samego nazwiska jest już pracą, a przy nazwiskach dwuczłonowych bywa zawodne.

Spróbuj sam

Weź opis „Quo vadis, H. Sienkiewicz, 2021, lektury, 1087, wypozyczona do 12.10.2026” i rozpisz go na osobne pola, podpisując każdy fragment nazwą pola. Potem zrób to samo z opisem „Kosmos. Carl Sagan 2020 popularnonaukowe 1156 wypozyczona do 3 listopada 2026”, w którym kolejność i format daty są inne. Zapisz, który fragment sprawił Ci największy kłopot.

Typ danych i jeden format w całej kolumnie

Typ danych mówi, jakiego rodzaju wartości trafiają do pola: tekst, liczba całkowita albo data. To nie jest formalność. Od typu zależy, jak komputer porównuje wartości, czyli czy sortowanie i filtrowanie w ogóle zadziała poprawnie.

Liczby porównuje się co do wielkości, a teksty znak po znaku. Dlatego wpisanie do pola rok_wydania wartości „2021 r.” zamiast 2021 psuje całą kolumnę: dopisek zamienia liczbę w tekst, a arkusz przy sortowaniu ustawia najpierw wszystkie liczby, a dopiero za nimi teksty. „2021 r.” ląduje więc za 2019 i za 2017, a filtr „rok większy niż 2018” tego wiersza w ogóle nie pokaże, bo dla filtru liczbowego to nie jest liczba. To samo dotyczy numerów inwentarza i wszystkiego, co ma być liczbą.

Druga zasada dotyczy formatu i jest równie ważna. W jednej kolumnie obowiązuje jeden format, ustalony przed wpisaniem pierwszego rekordu. Jeśli daty trafią do tabeli jako 12.10.2026, jako 3 listopada 2026 i jako 2026.10.12, to kolumna przestaje być datą i staje się zbiorem napisów, których nie da się ani posortować, ani porównać z dzisiejszą datą.

Warto też znać pojęcie stałej listy wartości. Pole status przyjmuje tylko kilka dozwolonych wartości: na polce, wypozyczona, w naprawie. Ograniczenie listy zapobiega sytuacji, w której jeden rekord ma „wypozyczona”, drugi „wypożyczona”, a trzeci „wyp.”, i filtr pokazuje jedną trzecią tego, co powinien. W arkuszu takie pole zwykle robi się przez listę wyboru, a prawdziwa baza danych pilnuje tego sama.

Spróbuj sam

Wpisz do jednej kolumny arkusza wartości 2019, 2021, 2017, a do sąsiedniej te same lata, ale środkowy zapisz z dopiskiem: 2019, „2021 r.”, 2017. Posortuj obie kolumny rosnąco i porównaj wyniki: w drugiej kolumnie „2021 r.” wyląduje na końcu, ale nie dlatego, że jest największe. Potem spróbuj w obu kolumnach włączyć filtr „większe niż 2018” i zapisz jednym zdaniem, dlaczego druga kolumna zachowuje się inaczej, mimo że zawiera te same lata.

Klucz, czyli co odróżnia jeden rekord od drugiego

Klucz to pole, którego wartość nie powtarza się w żadnym innym rekordzie i nigdy nie jest puste. Służy do jednego: wskazania dokładnie jednego rekordu, bez dwuznaczności. Bez klucza tabela nadal działa jako lista, ale przestaje działać jako baza, bo nie da się powiedzieć, o który dokładnie egzemplarz chodzi.

Najczęstsza pomyłka to wybranie na klucz pola, które wydaje się jednoznaczne. Tytuł wygląda na dobrego kandydata, dopóki biblioteka nie kupi drugiego egzemplarza „Pana Tadeusza”. Wtedy w tabeli stoją dwa rekordy o tym samym tytule i tym samym autorze, a różnią się tylko numerem inwentarza i tym, że jeden leży na półce, a drugi jest wypożyczony. Pytanie „czy Pan Tadeusz jest dostępny” nie ma jednej odpowiedzi, a pytanie o egzemplarz 1042 ma.

Test na klucz jest jednozdaniowy: czy potrafisz wskazać dwa rekordy o tej samej wartości tego pola. Jeśli tak, to nie jest klucz. Jeśli nie potrafisz teraz, zadaj drugie pytanie: czy taka sytuacja może się zdarzyć w przyszłości. Imię i nazwisko czytelnika dziś może być unikalne w szkole, a za rok już nie.

Dlatego kluczem bywa najczęściej numer nadany specjalnie w tym celu: numer inwentarza, numer zamówienia, numer legitymacji. Taki numer nie opisuje treści rzeczy, tylko ją identyfikuje, i właśnie dlatego jest niezawodny. Tytuł mówi, co to za książka. Numer inwentarza mówi, który to egzemplarz.

Spróbuj sam

Dopisz do swojej tabeli drugi egzemplarz tej samej książki, zmieniając wyłącznie numer inwentarza. Potem spróbuj wskazać jeden konkretny rekord, podając kolejno: tytuł, autora, rok wydania i numer inwentarza. Zapisz, przy której informacji wskazanie stało się jednoznaczne.

Jakie pola w ogóle dodawać

Przy projektowaniu tabeli łatwo wpaść w jedną z dwóch skrajności. Pierwsza to za mało pól, czyli zlepek z drugiej sekcji. Druga to za dużo pól: kolor okładki, opinia czytelnika, liczba stron przeczytanych przez poprzedniego wypożyczającego. Każde zbędne pole trzeba uzupełniać w każdym rekordzie, a im więcej pustych komórek, tym mniej wiarygodna tabela.

Dobre pytanie kontrolne brzmi: kto i po co będzie po tym polu wyszukiwał albo filtrował. Jeśli nie umiesz wskazać takiej sytuacji, pole prawdopodobnie jest zbędne. Bibliotekarka filtruje po dziale, po statusie i po roku wydania, więc te pola mają sens. Po kolorze okładki nie filtruje nikt.

Drugie pytanie kontrolne dotyczy tego, czego pole właściwie dotyczy. Pola status i data_zwrotu opisują ściśle rzecz biorąc nie książkę, tylko wypożyczenie, czyli zdarzenie. Widać to po tym, że dla książki stojącej na półce data_zwrotu jest pusta, a jedna książka może być wypożyczana wiele razy. W większych systemach rozwiązuje się to, rozdzielając dane na dwie tabele, ksiazki i wypozyczenia, połączone wspólnym polem nr_inwentarza. Na początek wystarczy, żebyś umiał zauważyć, że takie pole opisuje coś innego niż reszta tabeli.

Gdy dokładasz nowe pole, od razu zdecyduj trzy rzeczy: jego nazwę bez spacji i polskich znaków, jego typ danych i to, co wpiszesz, gdy wartość nie ma zastosowania. Zostawienie pustej komórki bywa poprawne, ale musi być świadomą decyzją, a nie przeoczeniem.

Spróbuj sam

Biblioteka chce wiedzieć, która klasa wypożyczyła książkę. Dopisz do tabeli pole klasa_czytelnika, podaj jego typ danych i uzupełnij je w dwóch rekordach. Potem odpowiedz na piśmie: co wpiszesz w tym polu przy książce stojącej na półce i dlaczego to pole tak naprawdę opisuje wypożyczenie, a nie książkę.

Słowniczek

tabela
Zbiór danych o rzeczach jednego rodzaju, zapisany w wierszach i kolumnach.
rekord
Jeden wiersz tabeli, czyli komplet informacji o jednej konkretnej rzeczy.
pole
Jedna kolumna tabeli, czyli ta sama informacja zapisana dla wszystkich rekordów.
wartość
Zawartość jednej komórki, czyli konkretna informacja w jednym rekordzie i jednym polu.
typ danych
Rodzaj wartości dopuszczonych w polu: tekst, liczba całkowita albo data; decyduje o poprawności sortowania i filtrowania.
klucz
Pole, którego wartość nie powtarza się w żadnym innym rekordzie i nigdy nie jest puste, więc wskazuje dokładnie jeden rekord.
filtr
Ukrycie rekordów niespełniających podanego warunku, na przykład pokazanie tylko pozycji z działu lektury.
sortowanie
Ustawienie rekordów w kolejności według wartości wybranego pola, rosnąco albo malejąco.

Częste pomyłki

Sprawdź, czy rozumiesz

  1. Biblioteka trzyma cały opis książki w jednej kolumnie i prosi Cię o listę pozycji wydanych po 2018 roku. Dlaczego filtr tego nie zrobi i jaka jedna zmiana w projekcie tabeli rozwiązuje problem?
  2. W tabeli stoją dwa rekordy o tym samym tytule, autorze i roku wydania. Wypisz wszystkie pola, które mogą je odróżnić, i wskaż to jedno, które nadaje się na klucz nawet za pięć lat.
  3. Pole data_zwrotu jest puste w ośmiu z dziesięciu rekordów. Czy to znak, że pole jest źle zaprojektowane, czy że opisuje coś innego niż reszta tabeli? Uzasadnij.

Wyzwanie dla chętnych

Ponad program

Rozdziel swoją tabelę biblioteki na dwie: ksiazki (nr_inwentarza, tytul, autor_nazwisko, autor_imie, rok_wydania, dzial) oraz wypozyczenia (nr_wypozyczenia, nr_inwentarza, klasa_czytelnika, data_wypozyczenia, data_zwrotu). Wpisz do drugiej tabeli trzy wypożyczenia, w tym dwa tego samego egzemplarza w różnych miesiącach. Jeśli masz dostęp do przeglądarki, możesz zbudować obie tabele w edytorze SQLite działającym bez konta, na przykład na sqliteonline.com.

Jak sprawdzisz, że Ci wyszło: Wyszło Ci, jeśli w tabeli ksiazki każdy egzemplarz stoi tylko raz, w tabeli wypozyczenia numer inwentarza może się powtarzać, a numer wypożyczenia nie, i potrafisz jednym zdaniem powiedzieć, po którym polu obie tabele się łączą oraz dlaczego historia wypożyczeń nie zmieściłaby się w jednej tabeli bez powtarzania tytułu.

Zadanie do domu na trzy poziomy

Wybierz jeden poziom. Możesz zacząć od łatwego i wrócić po trudniejszy.

Poziom: Łatwe

Weź opis „Ferdydurke, Witold Gombrowicz, rok 2017, lektury, 1130, na polce” i rozpisz go na osobne pola: przy każdym fragmencie napisz nazwę pola bez spacji i polskich znaków oraz typ danych: tekst, liczba całkowita albo data.

Poziom: Średnie

Zaprojektuj tabelę dla zbioru, który masz w domu: książek, gier, płyt albo klocków. Wypisz co najmniej siedem pól z nazwami i typami, wpisz pięć rekordów w jednym formacie na kolumnę i zaznacz pole wybrane na klucz z jednym zdaniem uzasadnienia.

Poziom: Trudne

Do tabeli ze średniego poziomu dopisz drugi egzemplarz tej samej rzeczy i sprawdź, czy Twój klucz nadal działa. Potem zapisz trzy pytania, które chcesz zadać tej tabeli za rok, na przykład które pozycje są z ostatnich trzech lat, i przy każdym napisz, czy odpowie na nie samo sortowanie, sam filtr, czy potrzebne jest nowe pole.

Samoocena

Zaznacz, co już potrafisz. To tylko dla Ciebie, nikt tego nie ocenia. Zaznaczenia zostają w tej przeglądarce.

Zadania do zrobienia

Szkolna biblioteka trzyma dziś opisy książek w jednej kolumnie i nie potrafi nic w nich znaleźć. Twoim zadaniem jest zaprojektować tabelę, w której każda informacja ma własne pole, i sprawdzić, że da się po niej sortować i filtrować.

  1. Zadanie 1

    Wpisz w pierwszym wierszu arkusza nagłówki pól swojej tabeli. W karcie pracy zapisz przy każdym nagłówku typ danych: tekst, liczba całkowita, data albo tekst ze stałej listy.

    Wskazówka: Nazwy pól piszemy bez spacji i bez polskich znaków, na przykład nr_inwentarza albo rok_wydania. Potrzebujesz co najmniej siedmiu pól. Tekst ze stałej listy to pole, które przyjmuje tylko kilka dozwolonych wartości, na przykład status: na polce, wypozyczona, w naprawie.

  2. Zadanie 2

    Przepisz sześć opisów z ramki do tabeli jako sześć rekordów. Ramka zawiera: „Adam Mickiewicz Pan Tadeusz wydanie 2019 lektury nr inw. 1042 na polce”, „Quo vadis, H. Sienkiewicz, 2021, lektury, 1087, wypozyczona do 12.10.2026”, „Ferdydurke, Witold Gombrowicz, rok 2017, lektury, 1130, na polce”, „Kosmos. Carl Sagan 2020 popularnonaukowe 1156 wypozyczona do 3 listopada 2026”, „Pan Tadeusz Adam Mickiewicz 2019 lektury 1199 na polce”, „Hobbit, czyli tam i z powrotem, J.R.R. Tolkien, 2022, mlodziezowa, 1204, w naprawie”.

    Wskazówka: Opisy są zapisane w różnej kolejności i w różnych formatach dat. Zanim zaczniesz pisać, zdecyduj, który fragment jest którym polem, i ustal jeden format daty dla całej kolumny. Uwaga na przecinki: w opisie Hobbita przecinek jest częścią tytułu, a nie granicą między polami.

  3. Zadanie 3

    Posortuj tabelę malejąco według pola rok_wydania i zapisz, który rekord znalazł się na pierwszym miejscu. Potem włącz filtr na polu dzial, wybierz wartość lektury i zapisz, ile rekordów zostało widocznych oraz który rekord jest teraz pierwszy.

    Wskazówka: Jeśli sortowanie ustawia lata w dziwnej kolejności albo filtr pokazuje za mało wierszy, sprawdź, czy rok nie został wpisany jako tekst, na przykład z dopiskiem r. na końcu, i czy wartość lektury jest wszędzie zapisana tak samo.

  4. Zadanie 4

    W Twojej tabeli są dwa rekordy o tym samym tytule i tym samym autorze. Wypisz ich numery inwentarza i napisz jednym zdaniem, które pole pozwala je odróżnić i dlaczego tytuł nie nadaje się na klucz.

    Wskazówka: Klucz to pole, którego wartość nie powtarza się w żadnym innym rekordzie i nigdy nie jest puste.

  5. Zadanie 5

    Biblioteka chce dodatkowo wiedzieć, która klasa wypożyczyła książkę. Dopisz do tabeli jedno nowe pole, podaj jego nazwę i typ danych oraz uzupełnij je w dwóch wybranych rekordach.

    Wskazówka: Zastanów się, czy wartość tego pola ma sens dla książki stojącej na półce. Jeśli nie, zapisz, co wtedy wpiszesz do komórki.

Materiał do powtórki

Tabela, która nic nie potrafi

  • Cały opis książki w jednej komórce
  • Sortowanie po nazwisku nie działa
  • Filtr po roku wydania nie działa

Cztery słowa na start

  • Tabela to dane o rzeczach jednego rodzaju
  • Rekord to jeden wiersz, jedna książka
  • Pole to jedna kolumna, jedna informacja
  • Wartość to zawartość jednej komórki

Rozbijamy zlepek na pola

  • nr_inwentarza, tytul, autor_nazwisko, autor_imie
  • rok_wydania, dzial, status, data_zwrotu
  • Jedna informacja w jednym polu

Typ danych, czyli czego pilnuje pole

  • Tekst dla tytułu i nazwiska
  • Liczba całkowita dla roku i numeru
  • Data dla terminu zwrotu
  • Stała lista wartości dla statusu

Klucz, czyli co odróżnia rekordy

  • Wartość klucza nie powtarza się
  • Klucz nigdy nie jest pusty
  • Tytuł kluczem nie będzie, egzemplarze bywają dwa

Co daje dobry projekt tabeli

  • Sortowanie po dowolnym polu
  • Filtr po dziale i po statusie
  • Szybkie odnalezienie jednego egzemplarza

Nazwy pól bez pułapek

  • Bez spacji, na przykład rok_wydania
  • Bez polskich znaków w nazwie pola
  • Nazwa mówi, co jest w środku

Zapamiętaj z tej lekcji

  • Jedna informacja w jednym polu
  • Jeden typ i jeden format w całej kolumnie
  • Klucz nie powtarza się i nie bywa pusty

Sprawdź się w quizie

Pytania z wyjaśnieniami, na poziomie podstawowym i rozszerzonym. Wynik nigdzie się nie zapisuje, możesz robić go dowolnie wiele razy.