Rozbudowa struktury bazy: nowe tabele, pola, relacje

Projektowanie rozszerzeń — zachowanie spójności INF.03.4

Teoria Rozbudowa bazy — integracja i spójność

  • Rozbudowa modelu bazy może polegać na: dodaniu nowych tabel, pól, relacji (np. dla obsługi nowych funkcji aplikacji)
  • Każda zmiana musi zachować integralność: klucze, powiązania, unikalność danych
  • Nowa relacja oznacza konieczność uzupełnienia powiązań FK, czasem migracji historycznych danych
  • Zmiany planuj diagramem — zwizualizuj, jak nowe tabele/pola wpłyną na całość
  • Zawsze testuj rozbudowaną bazę pod kątem spójności logiki (FK, PK, constraints) i działania kwerend/raportów

Ćwiczenie 1 Dodanie tabeli do istniejącej bazy

Przykład: Mamy istniejące tabele uczniowie, klasy. Dodaj tabelę „zajecia” powiązaną z klasą (FK).
CREATE TABLE zajecia (
  id INT PRIMARY KEY AUTO_INCREMENT,
  nazwa VARCHAR(60),
  klasa_id INT,
  FOREIGN KEY (klasa_id) REFERENCES klasy(id)
);
-- Sprawdź zgodność: nie dodasz zajęć bez klasy!

Ćwiczenie 2 Rozbudowa: nowe pole w tabeli + constraint

Zadanie: Dodaj do uczniów pole „email”, wymuś unikalność.
ALTER TABLE uczniowie ADD COLUMN email VARCHAR(120) UNIQUE;
-- Test: nie dodasz dwóch uczniów z tym samym emailem.

Ćwiczenie 3 Rozszerzenie: nowa relacja wiele-do-wielu

Przykład: Dodaj tabelę powiązań uczeń–zajęcia (każdy uczeń może uczęszczać na wiele zajęć, każde zajęcia – wielu uczniów).
CREATE TABLE uczniowie_zajecia (
  uczen_id INT,
  zajecie_id INT,
  PRIMARY KEY (uczen_id, zajecie_id),
  FOREIGN KEY (uczen_id) REFERENCES uczniowie(id),
  FOREIGN KEY (zajecie_id) REFERENCES zajecia(id)
);

Ćwiczenie 4 Testowanie integralności po rozbudowie

Zadanie: Po dodaniu nowej tabeli/relacji:
  1. Spróbuj dodać „porzucone” dane (bez powiązania FK) — powinna pojawić się blokada
  2. Przetestuj działanie kwerend/raportów na nowych polach/tabelach
INSERT INTO zajecia (nazwa, klasa_id) VALUES ('Matematyka', NULL); 
-- Błąd: klasa_id nie istnieje, integralność zachowana
SELECT uczniowie.email FROM uczniowie WHERE email IS NOT NULL;
-- Tylko poprawnie dodane adresy, bez duplikatów

Quiz Sprawdź wiedzę o rozbudowie!

  1. Jak dodać nową tabelę z relacją do bazy?
  2. Jak wymusić unikalność pola w SQL?
  3. Co daje tabela pośrednia w relacji wiele-do-wielu?
  4. Jak sprawdzić integralność po rozbudowie struktury?
  • Stworzyć nową tabelę z polem FK i dodać constraint
  • UNIQUE przy deklaracji — np. email VARCHAR(120) UNIQUE
  • Zapewnia właściwe powiązanie wielu rekordów po obu stronach (uczniowie–zajęcia)
  • Testy: próba dodania błędnych danych, kwerendy na nowych polach/tabelach

Checklista Sprawdź umiejętności

  • Bezpiecznie rozbudowuję modele: tabele, pola, relacje
  • Dbam o integralność logiczną i constraints
  • Testuję wyniki po zmianach struktury
  • Projektuję zgodnie z wytycznymi INF.03.4
Materiały: INF.03 — Rozbudowa i integralność bazy · Autor: Tomasz Puchała © 2025