Od pomysłu do działającej struktury w SQL
Każda dobra baza danych zaczyna się od pomysłu – co chcemy przechowywać i jak te dane się ze sobą łączą.
Ale zanim napiszemy pierwsze polecenie SQL, trzeba zaplanować jej budowę.
To właśnie nazywamy projektowaniem bazy danych.
Po co projektować bazę danych?
Bez projektu baza działa jak nieuporządkowany notes — wszystko się miesza, trudno coś znaleźć, łatwo o błędy.
Dobrze zaprojektowana baza danych:
- unika powtórzeń danych,
- jest logiczna i przejrzysta,
- umożliwia szybkie wyszukiwanie,
- łatwo się rozwija, gdy trzeba dodać coś nowego.
Etapy projektowania bazy danych
Można to porównać do budowy domu: zanim wbijesz pierwszą cegłę, robisz plan.
Oto kolejne etapy projektowania bazy danych:
1. Analiza danych – co chcesz przechowywać
Zastanów się:
- jakie informacje będą potrzebne,
- jakie obiekty (np. uczniowie, klasy, przedmioty) istnieją w systemie,
- jakie relacje łączą te obiekty.
Przykład:
W dzienniku elektronicznym mamy:
- uczniów,
- klasy,
- przedmioty,
- oceny.
Uczeń należy do klasy, uczeń ma wiele ocen, a każda ocena dotyczy konkretnego przedmiotu.
2. Określenie tabel i ich pól
Dla każdego obiektu (np. „Uczeń”, „Klasa”) tworzymy tabelę.
Każda tabela powinna mieć kolumny, które opisują dany obiekt.
| Tabela | Pola |
|---|---|
| Uczniowie | id_ucznia, imie, nazwisko, id_klasy |
| Klasy | id_klasy, nazwa, wychowawca |
| Oceny | id_oceny, id_ucznia, przedmiot, ocena |
3. Ustalenie kluczy
Każda tabela musi mieć klucz główny (PRIMARY KEY) – czyli coś, co jednoznacznie identyfikuje rekord (np. id_ucznia).
Jeśli dane w jednej tabeli łączą się z drugą, potrzebny będzie klucz obcy (FOREIGN KEY).
Przykład:
id_klasyw tabeli Uczniowie to klucz obcy odnoszący się doid_klasyw tabeli Klasy.- Dzięki temu baza wie, do której klasy należy uczeń.
4. Relacje między tabelami
Relacje określają sposób powiązania danych:
- 1:1 – jedna klasa ma jednego wychowawcę,
- 1:N – jedna klasa ma wielu uczniów,
- N:M – wielu uczniów może mieć wiele przedmiotów (np. przez tabelę pośrednią
Oceny).
Schemat:
Klasy ───< Uczniowie ───< Oceny
5. Normalizacja – porządkujemy strukturę
Na tym etapie sprawdzamy, czy w tabelach nie ma powtórzeń i zbędnych kolumn.
Dzięki temu unikamy błędów takich jak:
- zapisywanie tego samego wychowawcy przy każdym uczniu,
- dublowanie nazw klas.
Dobrze znormalizowana baza danych jest lżejsza, szybsza i łatwiejsza do utrzymania.
(Więcej o tym znajdziesz w temacie Normalizacja Baz Danych.)
6. Implementacja – czyli tworzenie bazy w SQL
Po zaprojektowaniu struktury czas przenieść projekt do kodu SQL.
Przykład:
CREATE DATABASE szkola;
USE szkola;
CREATE TABLE Klasy (
id_klasy INT PRIMARY KEY AUTO_INCREMENT,
nazwa VARCHAR(10),
wychowawca VARCHAR(50)
);
CREATE TABLE Uczniowie (
id_ucznia INT PRIMARY KEY AUTO_INCREMENT,
imie VARCHAR(50),
nazwisko VARCHAR(50),
id_klasy INT,
FOREIGN KEY (id_klasy) REFERENCES Klasy(id_klasy)
);
CREATE TABLE Oceny (
id_oceny INT PRIMARY KEY AUTO_INCREMENT,
id_ucznia INT,
przedmiot VARCHAR(50),
ocena DECIMAL(3,1),
FOREIGN KEY (id_ucznia) REFERENCES Uczniowie(id_ucznia)
);
Po utworzeniu tabel można już dodawać dane poleceniem INSERT INTO.
Projektowanie w praktyce — XAMPP i phpMyAdmin
W szkole najczęściej korzystamy z XAMPP, czyli zestawu narzędzi, w którym znajduje się m.in.:
- Apache – serwer WWW,
- MySQL / MariaDB – baza danych,
- phpMyAdmin – narzędzie do zarządzania bazą przez przeglądarkę.
To właśnie phpMyAdmin ułatwia projektowanie bazy bez pisania wszystkich poleceń SQL ręcznie.
Jak zaprojektować bazę w phpMyAdmin
- Uruchom XAMPP i włącz moduły Apache oraz MySQL.
- Kliknij Admin przy MySQL – otworzy się phpMyAdmin w przeglądarce.
- Wybierz Nowa baza danych → wpisz nazwę np.
szkola→ kliknij Utwórz. - Utwórz tabele: kliknij Nowa → wpisz nazwę tabeli, liczbę kolumn → Wykonaj.
- Wprowadź nazwy kolumn, typy danych i zaznacz AI (auto_increment) przy kolumnie ID.
- Ustaw klucz główny (PRIMARY) dla kolumny ID.
- Zapisz.
Tworzenie relacji graficznie (Designer)
W phpMyAdmin znajdziesz zakładkę Designer.
To bardzo przydatne narzędzie wizualne, które pokazuje schemat bazy danych i pozwala tworzyć relacje między tabelami bez pisania SQL.
Jak z niego skorzystać:
- Utwórz wszystkie tabele (z kluczami głównymi).
- Wejdź w Designer.
- Przeciągnij jedną tabelę w stronę drugiej i połącz odpowiednie kolumny (np.
id_klasywKlasyzid_klasywUczniowie). - phpMyAdmin sam doda klucz obcy (FOREIGN KEY) w tle.
To świetny sposób, by wizualnie zrozumieć relacje 1:N lub N:M.
Schemat w Designerze wygląda np. tak:
[Klasy]──< [Uczniowie]──< [Oceny]
Każda linia reprezentuje relację (połączenie) między tabelami.
Klikając na nią, możesz zobaczyć szczegóły powiązania — np. nazwy kluczy i typ relacji.
Zasady dobrego projektowania bazy danych
- Każda tabela powinna opisywać jeden rodzaj danych
– np.Uczniowieosobno,Klasyosobno,Ocenyosobno. - Unikaj powtórzeń
– jeśli dane powtarzają się w wielu miejscach, to znak, że potrzebujesz nowej tabeli. - Używaj kluczy głównych i obcych
– to one łączą dane i zapewniają spójność. - Zadbaj o czytelne nazwy kolumn i tabel
– np.data_urodzenia, niedtu. - Stosuj odpowiednie typy danych
–DATEdla dat,DECIMALdla pieniędzy,VARCHARdla tekstu. - Twórz kopie zapasowe (Backup)
– phpMyAdmin ma opcję Eksport, dzięki której możesz zapisać całą bazę w pliku.sql. - Testuj relacje w Designerze
– upewnij się, że połączenia między tabelami działają poprawnie.
Podsumowanie
Projektowanie bazy danych to proces planowania, jak dane będą ze sobą połączone i przechowywane.
Dzięki narzędziom takim jak phpMyAdmin w pakiecie XAMPP, możesz:
- stworzyć tabele,
- ustawić relacje graficznie w Designerze,
- testować zapytania SQL,
- eksportować i importować bazy danych.
To idealny sposób, by zrozumieć strukturę bazy i zobaczyć, jak działa w praktyce.
Zadania do przećwiczenia
- Utwórz w phpMyAdmin bazę danych o nazwie
biblioteka. - Zaprojektuj trzy tabele:
Ksiazki,Czytelnicy,Wypozyczenia. - W każdej tabeli utwórz klucz główny (PRIMARY KEY).
- Połącz tabele w Designerze relacjami kluczy obcych (
id_czytelnika,id_ksiazki). - Dodaj po kilka rekordów do każdej tabeli.
- Napisz zapytanie SQL, które pokaże:
- tytuł książki,
- imię i nazwisko czytelnika,
- datę wypożyczenia.

