Integralność danych

Temat: Integralność Danych w Bazach Danych MySQL

Cel lekcji:

Celem tej lekcji jest zrozumienie podstawowych koncepcji integralności danych w bazach danych, ze szczególnym uwzględnieniem implementacji tych zasad w MySQL. Integralność danych to zasady, które zapewniają, że dane przechowywane w bazie są spójne, wiarygodne i zgodne z założonymi strukturami oraz regułami.

Zakres:

  1. Integralność encji
  2. Integralność referencyjna
  3. Integralność danych
  4. Integralność biznesowa (logiczna)

1. Integralność Encji

Opis: Integralność encji to zasada, która zapewnia unikalność rekordów w tabeli. Osiąga się ją przez zastosowanie kluczy głównych (ang. primary keys), które identyfikują każdy rekord jednoznacznie.

Przykład: Tworzenie tabeli z kluczem głównym w MySQL:

CREATE TABLE Pracownicy (
    pracownik_id INT PRIMARY KEY,
    imie VARCHAR(50),
    nazwisko VARCHAR(50)
);

2. Integralność Referencyjna

Opis: Integralność referencyjna zapewnia, że relacje między tabelami są spójne. Używa się jej w celu uniknięcia tzw. "sierocych" rekordów, które występują, gdy rekord w tabeli podrzędnej odnosi się do nieistniejącego rekordu w tabeli nadrzędnej. Integralność referencyjną osiąga się przez zastosowanie kluczy obcych (ang. foreign keys).

Przykład: Definicja klucza obcego w MySQL:

CREATE TABLE Zamowienia (
    zamowienie_id INT PRIMARY KEY,
    klient_id INT,
    FOREIGN KEY (klient_id) REFERENCES Klienci(klient_id)
);

Ćwiczenie 2: Utwórz tabelę Zamowienia z kolumnami zamowienie_id, klient_id, gdzie klient_id jest kluczem obcym odnoszącym się do tabeli Klienci. Wprowadź kilka rekordów w tabeli Klienci, a następnie dodaj rekordy w tabeli Zamowienia, używając prawidłowych i nieistniejących wartości klient_id. Sprawdź, jak MySQL wymusza integralność referencyjną.


3. Integralność Danych

Opis: Integralność danych ogranicza wartości, które mogą być zapisane w kolumnach, zgodnie z ich typem danych, ograniczeniami oraz innymi warunkami. W MySQL integralność domeny można ustawić, definiując odpowiednie typy danych (np. INT, VARCHAR) i ograniczenia takie jak NOT NULL, CHECK, UNIQUE.

Przykład: Ograniczenie wartości kolumn w MySQL:

CREATE TABLE Produkty (
    produkt_id INT PRIMARY KEY,
    nazwa VARCHAR(100) NOT NULL,
    cena DECIMAL(10, 2) CHECK (cena > 0)
);

Ćwiczenie 3: Utwórz tabelę Produkty z kolumnami produkt_id, nazwa i cena, gdzie nazwa nie może być pustą wartością (NOT NULL), a cena musi być większa od 0. Spróbuj dodać kilka rekordów, w tym rekordy z pustą nazwą oraz z ceną równą lub mniejszą od 0, i zobacz, jak MySQL reaguje na te dane.


4. Integralność Biznesowa (Logiczna)

Opis: Integralność biznesowa (logiczna) odnosi się do zasad, które wynikają z reguł biznesowych obowiązujących w danej organizacji. W MySQL można implementować takie zasady, używając warunków CHECK, TRIGGER lub wyzwalaczy, które uruchamiają określone akcje lub weryfikują dane przed ich zapisaniem w bazie.

Przykład: Użycie wyzwalacza w MySQL:

CREATE TRIGGER Sprawdzanie_Wiek 
BEFORE INSERT ON Pracownicy 
FOR EACH ROW 
BEGIN
    IF NEW.wiek < 18 THEN
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Wiek musi być większy niż 18 lat.';
    END IF;
END;

Ćwiczenie 4: Utwórz tabelę Pracownicy z kolumnami pracownik_id, imie, nazwisko i wiek. Następnie stwórz wyzwalacz, który sprawdza, czy wiek jest większy lub równy 18. Spróbuj dodać rekordy z wartościami wiek poniżej 18 lat i zaobserwuj reakcję systemu.


Podsumowanie:

Integralność danych w MySQL jest kluczowa dla zapewnienia spójności i poprawności danych w bazie. Używając kluczy głównych, kluczy obcych, ograniczeń i wyzwalaczy, można kontrolować dane i uniemożliwić zapisywanie nieprawidłowych informacji, zapewniając stabilność oraz niezawodność aplikacji i raportów bazujących na tych danych.