Kontrolowanie spójności bazy danych

Integralność, FK, CHECK, constraints — INF.03

Teoria Spójność i bezpieczeństwo danych przez constraints

  • Integralność bazy to zgodność danych z założeniami modelu: relacje, typy, ograniczenia
  • PRIMARY KEY — jednoznaczna identyfikacja rekordu
  • FOREIGN KEY — powiązanie rekordów między tabelami
  • CHECK — ograniczenie wartości w polu (np. wiek ≥ 6)
  • Inne constraints: UNIQUE, NOT NULL, DEFAULT
  • Błędy spójności blokują wstawienie niepoprawnych danych
  • Regularne testy, kwerendy oraz eksporty pomagają wykryć naruszenia integralności

Ćwiczenie 1 Definicja constraints — integralność uczniów

Zadanie: Utwórz tabelę uczniowie z ograniczeniami na wiek, email, klasa.
CREATE TABLE uczniowie (
  id INT PRIMARY KEY AUTO_INCREMENT,
  imie VARCHAR(30) NOT NULL,
  nazwisko VARCHAR(40) NOT NULL,
  wiek TINYINT CHECK (wiek BETWEEN 6 AND 20),
  email VARCHAR(80) UNIQUE NOT NULL,
  klasa_id INT, 
  FOREIGN KEY (klasa_id) REFERENCES klasy(id)
);

Ćwiczenie 2 Testowanie integralności — próbuj naruszyć constraint

Przykład: Wstaw rekord z wiekiem 3 — baza zgłosi błąd CHECK.
INSERT INTO uczniowie (imie, nazwisko, wiek, email, klasa_id) 
VALUES ('Test', 'Błąd', 3, 'mail@a.pl', 2);
/* Baza zgłosi błąd CHECK (wiek poza zakresem) */

Ćwiczenie 3 Testowanie FK — ochrona powiązań

Zadanie: Wstaw ucznia do nieistniejącej klasy (np. klasa_id=99)
INSERT INTO uczniowie (imie, nazwisko, wiek, email, klasa_id) 
VALUES ('Wojtek','BłądFK', 15, 'w@a.pl', 99);
/* Błąd: klasa_id nie istnieje — naruszenie FOREIGN KEY */

Ćwiczenie 4 Sprawdzanie spójności danych w praktyce

Zadanie: Znajdź rekordy naruszające constraints (np. puste emaile, niepowiązane uczniowie).
SELECT * FROM uczniowie WHERE email IS NULL OR wiek < 6 OR wiek > 20;
SELECT * FROM uczniowie WHERE klasa_id IS NULL OR klasa_id NOT IN (SELECT id FROM klasy);

Quiz Sprawdź wiedzę!

  1. Do czego służy constraint CHECK?
  2. Jak chroni baza relacje przez FK?
  3. Co daje UNIQUE na polu?
  4. Jak szukać błędów integralności w danych?
  • Do ograniczenia wartości w polu (zakres, warunki)
  • Zapobiega dodaniu powiązanego rekordu bez istnienia w tabeli głównej
  • Uniemożliwia powtarzanie tej samej wartości w wielu rekordach
  • Kwerendy testowe lub eksport do analizy w Excelu

Checklista Sprawdź umiejętności

  • Stosuję constraints do kontroli jakości i spójności danych
  • Testuję integralność przez INSERT, eksport i kwerendy
  • Chronię relacje za pomocą FK i CHECK
  • Analizuję zagrożenia dla spójności logicznej bazy
Materiały: INF.03 — Spójność i constraints · Autor: Tomasz Puchała © 2025