DB
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ę!
- Do czego służy constraint CHECK?
- Jak chroni baza relacje przez FK?
- Co daje UNIQUE na polu?
- 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