Projektowanie Bazy Danych

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.

TabelaPola
Uczniowieid_ucznia, imie, nazwisko, id_klasy
Klasyid_klasy, nazwa, wychowawca
Ocenyid_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_klasy w tabeli Uczniowie to klucz obcy odnoszący się do id_klasy w 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

  1. Uruchom XAMPP i włącz moduły Apache oraz MySQL.
  2. Kliknij Admin przy MySQL – otworzy się phpMyAdmin w przeglądarce.
  3. Wybierz Nowa baza danych → wpisz nazwę np. szkola → kliknij Utwórz.
  4. Utwórz tabele: kliknij Nowa → wpisz nazwę tabeli, liczbę kolumn → Wykonaj.
  5. Wprowadź nazwy kolumn, typy danych i zaznacz AI (auto_increment) przy kolumnie ID.
  6. Ustaw klucz główny (PRIMARY) dla kolumny ID.
  7. 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ć:

  1. Utwórz wszystkie tabele (z kluczami głównymi).
  2. Wejdź w Designer.
  3. Przeciągnij jedną tabelę w stronę drugiej i połącz odpowiednie kolumny (np. id_klasy w Klasy z id_klasy w Uczniowie).
  4. 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

  1. Każda tabela powinna opisywać jeden rodzaj danych
    – np. Uczniowie osobno, Klasy osobno, Oceny osobno.
  2. Unikaj powtórzeń
    – jeśli dane powtarzają się w wielu miejscach, to znak, że potrzebujesz nowej tabeli.
  3. Używaj kluczy głównych i obcych
    – to one łączą dane i zapewniają spójność.
  4. Zadbaj o czytelne nazwy kolumn i tabel
    – np. data_urodzenia, nie dtu.
  5. Stosuj odpowiednie typy danych
    DATE dla dat, DECIMAL dla pieniędzy, VARCHAR dla tekstu.
  6. Twórz kopie zapasowe (Backup)
    – phpMyAdmin ma opcję Eksport, dzięki której możesz zapisać całą bazę w pliku .sql.
  7. 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

  1. Utwórz w phpMyAdmin bazę danych o nazwie biblioteka.
  2. Zaprojektuj trzy tabele: Ksiazki, Czytelnicy, Wypozyczenia.
  3. W każdej tabeli utwórz klucz główny (PRIMARY KEY).
  4. Połącz tabele w Designerze relacjami kluczy obcych (id_czytelnika, id_ksiazki).
  5. Dodaj po kilka rekordów do każdej tabeli.
  6. Napisz zapytanie SQL, które pokaże:
    • tytuł książki,
    • imię i nazwisko czytelnika,
    • datę wypożyczenia.