Projektowanie Bazy i Relacje
Klucz główny i obcy, typy danych, więzy integralności i normalizacja. Zadanie projektowe wraca na maturze co roku.
Zadanie projektowe wygląda niewinnie: „zaprojektuj bazę przechowującą dane o wypożyczeniach” albo „narysuj schemat relacji”. Punktów jest w nim jednak sporo, bo oceniane są osobno klucze, typy pól, kierunek relacji i to, czy dane nie powtarzają się bez potrzeby. Co ważniejsze, ten sam projekt decyduje o kolejnych podpunktach: źle ustawiona relacja psuje każdą kwerendę, którą na niej zbudujesz.
1. Od czego zacząć: rzeczowniki z treści
Przeczytaj polecenie i wypisz rzeczowniki, które opisują odrębne byty: uczeń, książka, wypożyczenie, kurs, produkt. Każdy z nich to kandydat na tabelę. Cechy tych bytów — nazwisko, tytuł, data, cena — to pola. Czasownik łączący dwa byty („uczeń wypożycza książkę”) to relacja, a często także osobna tabela.
Ta sama informacja ma być zapisana w bazie w dokładnie jednym miejscu. Jeśli adres klienta pojawia się przy każdym zamówieniu, projekt jest zły: jedna przeprowadzka wymaga poprawienia setek rekordów, a literówka rozbija tę samą osobę na dwie.
2. Klucz główny
Klucz główny jednoznacznie wskazuje rekord. Nie powtarza się, nigdy nie bywa pusty i nie powinien się zmieniać. Masz dwie drogi:
- Klucz sztuczny — pole typu Autonumerowanie, bez znaczenia biznesowego. Domyślny wybór, bo zawsze działa.
- Klucz naturalny — istniejące pole, które z natury jest niepowtarzalne: numer PESEL, kod ISBN, numer seryjny. Używaj go tylko wtedy, gdy masz pewność, że nigdy się nie powtórzy.
- Klucz złożony — dwa pola razem, typowe w tabeli łączącej: para (ID_ucznia, ID_kursu) występuje tylko raz.
Nazwisko, adres e-mail ani numer telefonu kluczem nie są. Nazwiska się powtarzają, a kontakt bywa pusty albo zmieniany — jedno i drugie łamie definicję klucza i egzaminator to wyłapie.
3. Klucz obcy i strona „wielu”
Klucz obcy to pole przechowujące wartość klucza głównego z innej tabeli. Trafia zawsze do tabeli po stronie „wielu”: jeden klient ma wiele zamówień, więc to zamówienie przechowuje identyfikator klienta, nigdy odwrotnie.
Klienci (1) Zamowienia (wiele)
ID <---------- ID_klienta klucz obcy
Nazwisko Numer klucz glowny
Miasto Data
WartoscTypy muszą się zgadzać. Jeśli klucz główny jest Autonumerowaniem, klucz obcy ustaw jako Liczba, rozmiar: Liczba całkowita długa. Access nie pozwoli utworzyć relacji między liczbą a tekstem i nie powie tego wprost — po prostu odmówi. To najczęstsza przyczyna komunikatu o niezgodności typów w oknie Relacje.
4. Trzy typy relacji
- Jeden do wielu (1:N) — podstawowy przypadek. Klucz obcy po stronie „wielu”.
- Jeden do jednego (1:1) — rzadki, stosowany, gdy część danych jest opcjonalna albo chroniona. Klucz obcy jest wtedy dodatkowo indeksowany bez duplikatów.
- Wiele do wielu (M:N) — nie da się zapisać dwiema tabelami. Uczeń chodzi na wiele kursów, kurs ma wielu uczniów, więc powstaje trzecia tabela z parami identyfikatorów. Jeśli w zadaniu pojawia się „wiele do wielu” bez tabeli łączącej, projekt jest niekompletny.
Uczniowie Zapisy (tabela laczaca) Kursy ID <---- ID_ucznia ID ----> Imie ID_kursu Nazwa Nazwisko Data_zapisu Cena
Tabela łącząca prawie zawsze przechowuje też własne dane o powiązaniu — datę zapisu, ocenę, liczbę sztuk. To naturalne miejsce na takie informacje i dobry sygnał, że projekt jest poprawny.
5. Typy danych, których wymaga polecenie
- Tekst krótki — nazwiska, nazwy, kody. Także numer telefonu i kod pocztowy: to nie są liczby, bo nikt ich nie dodaje, a zera wiodące muszą się zachować.
- Liczba — z rozmiarem dobranym do danych: całkowita długa dla identyfikatorów, podwójna precyzja dla ułamków.
- Waluta — dla kwot lepsza niż liczba zmiennoprzecinkowa, bo liczy dokładnie i nie gubi groszy.
- Data/Godzina — nigdy tekst. Data zapisana jako tekst sortuje się alfabetycznie i nie da się od niej odjąć dni.
- Tak/Nie — dla wartości logicznych zamiast tekstu „tak” i „nie”.
- Autonumerowanie — wyłącznie dla kluczy głównych.
We właściwościach pola warto jeszcze ustawić to, o co prosi polecenie: Wymagane dla pól, które nie mogą być puste, Indeksowane (bez duplikatów) dla wartości niepowtarzalnych, Reguła poprawności dla ograniczeń typu >=0. Każde z nich bywa osobno punktowane.
6. Więzy integralności i normalizacja po ludzku
W oknie Narzędzia bazy danych → Relacje przeciągasz klucz główny na klucz obcy i zaznaczasz Wymuszaj więzy integralności. Od tej chwili baza nie pozwoli dodać zamówienia dla nieistniejącego klienta ani usunąć klienta, który ma zamówienia. Dwie dodatkowe opcje — kaskadowa aktualizacja i kaskadowe usuwanie — przenoszą zmianę na rekordy powiązane; zaznaczaj je tylko wtedy, gdy polecenie tego wymaga.
- Pierwsza — w jednym polu jedna wartość. Nie „matematyka, fizyka” w kolumnie Przedmioty, tylko osobne rekordy.
- Druga — pole opisuje cały klucz, a nie jego kawałek. W tabeli zapisów nazwa kursu nie ma czego szukać, bo zależy tylko od kursu.
- Trzecia — pole nie zależy od innego zwykłego pola. Jeśli masz kod pocztowy, nie trzymaj obok niego miasta „na wszelki wypadek”.
Praktyczna konsekwencja: nie przechowuj wartości, które da się wyliczyć. Wartość zamówienia to cena razy ilość — liczy ją kwerenda. Zapisana w tabeli rozjedzie się przy pierwszej zmianie ceny.
7. Schemat na kartce i kontrola przed oddaniem
Gdy polecenie prosi o schemat, narysuj prostokąt na tabelę, wypisz w nim pola, klucz główny podkreśl, a klucz obcy oznacz skrótem. Relację zaznacz linią z opisem 1 i N po właściwych stronach. Czytelny rysunek z podpisanymi typami danych to komplet punktów — ozdobniki nic nie wnoszą.
- Każda tabela ma klucz główny.
- Każdy klucz obcy leży po stronie „wielu” i ma typ zgodny z kluczem głównym.
- Relacja M:N ma tabelę łączącą.
- Żadna informacja nie powtarza się w dwóch tabelach.
- Daty są datami, kwoty walutą, telefony tekstem.
- Nazwy pól bez spacji i polskich znaków — oszczędza to kłopotów w kwerendach.
- Baza zapisana pod nazwą z polecenia, w formacie, którego wymaga arkusz.
Plan pracy na 210 minut, kolejność rozwiązywania i format plików wynikowych, na którym najłatwiej stracić punkty.
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 →
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ę!