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:
- Integralność encji
- Integralność referencyjna
- Integralność danych
- 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.