Czym jest baza danych, czym różni się od SZBD, co znaczą pojęcia tabela, rekord (krotka), pole i encja, jakie są modele baz danych oraz cechy relacyjnej bazy i trzy rodzaje integralności. Lekcja 7.1 kursu INF.03.
Baza danych to uporządkowany zbiór danych o jakimś wycinku świata: sklepie, szkole, bibliotece, przechowywany tak, żeby dało się go szybko przeszukiwać i bezpiecznie zmieniać. Na egzaminie pisemnym wracają pytania o same pojęcia: czym jest SZBD, co to krotka, co reprezentuje encję w bazie relacyjnej, na czym polega integralność referencyjna. W części praktycznej cały pierwszy blok zadania to baza: import pliku .sql do phpMyAdmin, odczytanie schematu relacji i cztery kwerendy. Ta lekcja daje słownik, bez którego kolejne lekcje działu byłyby zgadywanką.
Tabela, rekord i pole
Tabela to zbiór rekordów o tej samej budowie: wszystkie mają te same kolumny, w tej samej kolejności i tego samego typu. Cały kurs stoi na bazie sklep, a jej najprostszą tabelą jest produkt:
id
nazwa
cena
kategoria
sztuk
1
Klawiatura
120
akcesoria
15
3
Monitor 24
650
monitory
4
4
Monitor 27
990
monitory
2
5
Kabel HDMI
25
akcesoria
NULL
Rekord (record, także krotka, tuple, wiersz) to jeden opisany obiekt razem ze wszystkimi jego cechami. Wiersz z monitorem 24 cale, ceną 650 i czterema sztukami to jeden rekord tabeli produkt. Pole (field, atrybut, kolumna) to jedna cecha powtarzająca się w każdym rekordzie: cena mówi o każdym produkcie to samo, tylko inną wartością.
Tabela produkt z pięcioma wierszami: zaznaczony wiersz to rekord (krotka), zaznaczona kolumna cena to pole (atrybut), a wiersz nagłówkowy trzyma nazwy atrybutów
Pierwszy wiersz na rysunku, z napisami id, nazwa, cena, rekordem nie jest. To nazwy atrybutów, czyli element struktury tabeli, a nie dane. Bank pytań sprawdza to zdaniem „krotkami nazywa się wiersze tabeli z wyjątkiem wiersza nagłówkowego".
NULL (nic) w polu sztuk piątego produktu to nie zero i nie pusty tekst, tylko brak danych: nikt nie policzył, ile kabli leży w magazynie. Porównania z taką wartością mają własną składnię, opisuje ją lekcja o SELECT. Encja (entity) to typ obiektu, o którym baza przechowuje dane: produkt, klient, zamówienie. W bazie relacyjnej jedną encję reprezentuje jedna tabela, a atrybuty encji są jej kolumnami; zajmuje się tym lekcja o encjach, atrybutach i kluczach. SZBD, czyli program pilnujący danych
SZBD (Database Management System, DBMS, system zarządzania bazą danych) to program, który przechowuje bazę i pośredniczy między nią a użytkownikami oraz aplikacjami. Nikt nie sięga do plików bazy bezpośrednio: każde pytanie i każda zmiana idzie przez SZBD.
Zadania SZBD:
›
przechowywanie danych i wyszukiwanie ich na żądanie, zwykle poleceniem SQL;
›
wielodostęp, czyli obsługa wielu użytkowników pracujących na tych samych danych naraz bez psucia ich nawzajem (w banku pytań: „mechanizm niezbędny dla SZBD");
›
uprawnienia: kto może czytać dane, kto je zmieniać, kto zakładać tabele;
›
spójność danych, pilnowana przez więzy integralności opisane niżej;
›
transakcje: grupa zmian wykonuje się w całości albo wcale;
›
kopie zapasowe i odtworzenie bazy po awarii.
Baza danych to DANE, SZBD to PROGRAM. MySQL jest systemem zarządzania bazą danych, a sklep bazą, którą ten system obsługuje. W pytaniach obie nazwy stoją obok siebie jako osobne odpowiedzi.
Lokalny SZBD trzyma bazę w pliku i udostępnia ją tylko na jednym komputerze: tak działa SQLite (cała baza w jednym pliku, bez osobnej usługi) i MS Access, czyli program biurowy z formularzami i raportami. Serwerowy SZBD pracuje jako usługa, a programy łączą się z nim po sieci jako klienci: MySQL i MariaDB, PostgreSQL, MS SQL Server. Wybór idzie za zastosowaniem: aplikacja na telefonie albo ewidencja na jednym stanowisku obejdzie się bazą lokalną, a sklep internetowy z wieloma jednoczesnymi klientami wymaga SZBD serwerowego z wielodostępem i uprawnieniami. W XAMPP MySQL obsługuje się przez phpMyAdmin, czyli stronę WWW do zarządzania bazą; poszczególne systemy i ich instalację omawia lekcja o SZBD, XAMPP i phpMyAdmin. Modele baz danych
Model bazy danych mówi, w jaki sposób dane są ułożone i po czym baza dochodzi do informacji powiązanych.
Model
Jak trzyma dane
Przykład
jednorodny (płaski)
wszystko w jednej tabeli, dane się powtarzają
arkusz kalkulacyjny z listą zamówień
hierarchiczny
drzewo: rekord ma jednego rodzica i wielu potomków
struktura katalogów na dysku
sieciowy
graf: rekord może mieć wielu rodziców
starsze systemy magazynowe
relacyjny
tabele powiązane wartościami kluczy
MySQL, PostgreSQL, SQLite
obiektowy
obiekty z polami i metodami, jak w programowaniu
bazy systemów projektowych
Egzamin pyta prawie wyłącznie o relacyjny i o rozpoznanie jednorodnego: struktura z jedną tabelą, w której przy każdym zamówieniu powtarza się imię i miasto klienta, to model jednorodny (płaski). Poza podstawą programową, ale w ogłoszeniach o pracę spotkasz nazwę NoSQL: bazy dokumentowe, na przykład MongoDB, trzymają dane jako dokumenty, a nie jako wiersze o stałych kolumnach.
Cechy relacyjnej bazy danych
Relacyjna baza danych to baza, w której dane leżą w tabelach powiązanych wartościami kluczy. Jej cechy pytane wprost na egzaminie:
›
dane siedzą w tabelach o stałej liczbie kolumn, a każda kolumna ma swój typ;
›
każdy rekord ma klucz główny (PRIMARY KEY), czyli wartość identyfikującą go jednoznacznie, na przykład id w tabeli produkt;
›
powiązania robi się kluczem obcym (FOREIGN KEY), czyli kolumną wskazującą na klucz główny innej tabeli, a nie przez kopiowanie danych: zamowienie.klient_id trzyma numer klienta, nie jego imię i miasto;
›
kolejność wierszy nie ma znaczenia, bo wiersz znajduje się po wartości, nie po pozycji;
›
wartości są atomowe: w jednym polu stoi jedna wartość, nigdy lista „Kraków, Gdańsk";
›
dostęp do danych idzie językiem SQL, tym samym w każdym relacyjnym SZBD;
›
baza pilnuje więzów integralności, czyli reguł, których dane nie mogą złamać.
Trzy rodzaje integralności bank pytań sprawdza definicjami, więc warto je znać dokładnie:
›
integralność encji: każda tabela ma klucz główny, a jego wartość jest unikalna i różna od NULL;
›
integralność referencyjna: każdej wartości klucza obcego odpowiada istniejąca wartość klucza głównego w tabeli powiązanej albo pole jest puste (NULL);
›
integralność dziedziny: wartość mieści się w typie kolumny i w dozwolonym zakresie, więc do kolumny cena typu liczbowego nie wejdzie słowo „drogo".
Pułapka: integralność encji dotyczy klucza GŁÓWNEGO w jednej tabeli, referencyjna klucza OBCEGO wskazującego na inną tabelę. Odpowiedzi w pytaniu różnią się jednym słowem.
Etapy projektowania bazy
Projektowanie relacyjnej bazy idzie w ustalonej kolejności, o którą pyta osobne zadanie egzaminacyjne:
1.
Określenie zbioru danych: spisujesz, co baza ma przechowywać.
2.
Selekcja danych: dzielisz zbiór na encje i tabele, usuwasz powtórzenia.
3.
Określenie kluczy podstawowych: każda tabela dostaje wartość identyfikującą rekord.
4.
Określenie relacji między tabelami: dokładasz klucze obce i ustalasz liczebność związków.
Na przykładzie sklepu zaczynasz od jednej listy zamówień, w której przy każdym zamówieniu stoi imię klienta, jego miasto, nazwa produktu i cena. Selekcja rozdziela ją na trzy encje: klient, produkt i zamowienie. Klucze podstawowe to kolumny id w każdej z trzech tabel. Relacje: jeden klient ma wiele zamówień, jeden produkt bywa w wielu zamówieniach, więc w tabeli zamowienie stają dwa klucze obce, klient_id i produkt_id. Miasto klienta jest wtedy zapisane raz, a nie przy każdym zamówieniu.
Dopiero po projekcie sprawdza się jego postać normalną (normalizacja) i zapisuje tabele poleceniem CREATE TABLE (lekcja o CREATE, ALTER i DROP). Odwrotna kolejność, czyli pisanie tabel przed projektem, kończy się przepisywaniem bazy w połowie zadania. Na egzaminie
Pytania pisemne z tej lekcji mają kilka stałych kształtów. „Skrót DBMS oznacza" z odpowiedzią o systemie zarządzania bazą danych. „Krotkami w tabeli nazywa się" z pułapką o wierszu nagłówkowym. „Encja w relacyjnej bazie danych jest reprezentowana przez" z odpowiedzią tabelę. „Niezbędnym mechanizmem SZBD jest" z odpowiedzią wielodostępność danych. „Lokalny SZBD" z odpowiedzią o udostępnianiu bazy na jednym komputerze. Osobna grupa to definicje integralności, gdzie mylą się encji z referencyjną, oraz rozpoznanie modelu jednorodnego po rysunku jednej tabeli z powtórzeniami. Ostatnia to kolejność etapów projektowania: błędne odpowiedzi mają dobrą listę w złej kolejności, a poprawna zaczyna się od określenia zbioru danych.
W części praktycznej arkusz daje bazę w pliku .sql i rysunek schematu relacji. Ta lekcja uczy go czytać: prostokąt to tabela, czyli jedna encja, wiersz w prostokącie to nazwa atrybutu, a linia między prostokątami to relacja poprowadzona od klucza obcego do klucza głównego. Bez tego nie da się napisać kwerendy „wykorzystującej relację między tabelami", czyli złączenia, za które arkusz daje osobny punkt. Ściąga
baza danych
uporządkowany zbiór danych o wycinku świata
SZBD (DBMS)
program przechowujący bazę i obsługujący zapytania do niej
tabela
zbiór rekordów o tej samej budowie; jedna encja
rekord (krotka)
jeden wiersz z danymi; wiersz nagłówkowy się nie liczy
pole (atrybut)
jedna kolumna, jedna cecha rekordu
encja
typ obiektu, w bazie relacyjnej reprezentowany przez tabelę
klucz główny
wartość jednoznacznie identyfikująca rekord
klucz obcy
kolumna wskazująca na klucz główny innej tabeli
model jednorodny
wszystko w jednej tabeli, dane się powtarzają
model relacyjny
tabele powiązane kluczami, dostęp językiem SQL
integralność encji
klucz główny unikalny i różny od NULL
integralność referencyjna
klucz obcy wskazuje istniejący klucz główny albo jest NULL
integralność dziedziny
wartość mieści się w typie i zakresie kolumny
wielodostęp
wielu użytkowników pracuje na tych samych danych naraz
etapy projektu
zbiór danych, selekcja, klucze podstawowe, relacje
Pobierz ściągę PDF