Lekcja 22: Ograniczenia (Constraints) - PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL

Preview Mode

You're viewing this material in preview mode. Sign up to track your progress and access all features.

Lekcja 22: Ograniczenia (Constraints) - PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL
Required In Progress

Wymuszanie integralności danych

Ograniczenia (Constraints) to reguły dodawane do definicji kolumn lub tabel (podczas CREATE TABLE lub później przez ALTER TABLE), które wymuszają integralność, poprawność i jakość danych. System zarządzania bazą danych (RDBMS) aktywnie blokuje operacje DML (INSERT, UPDATE), które próbują złamać te reguły. Są one znacznie potężniejsze niż walidacja na poziomie aplikacji, ponieważ działają na poziomie silnika bazy danych. Materiał opracowany na podstawie lekcji 22 .

PRIMARY KEY

PRIMARY KEY — definiowanie klucza głównego (na poziomie tabeli/kolumny). Jak omówiono w Lekcji 13, klucz główny jednoznacznie identyfikuje wiersz. Definiując go, automatycznie wymuszamy zasady UNIQUE i NOT NULL na danej kolumnie.

Składnia (na poziomie kolumny): ID_Ucznia INT PRIMARY KEY

FOREIGN KEY

FOREIGN KEY — definiowanie relacji (na poziomie tabeli/kolumny). Wymusza integralność referencyjną (Lekcja 13) – gwarantuje, że wartość w tej kolumnie musi istnieć jako PK w tabeli, do której się odwołujemy.

Składnia (na poziomie kolumny): ID_Klasy INT FOREIGN KEY REFERENCES Klasy(ID_Klasy)

UNIQUE

UNIQUE — zapewnienie unikalności wartości (np. adres e-mail).

  • Podobne do PRIMARY KEY, ale z dwiema różnicami:
  • Można mieć wiele kolumn UNIQUE w jednej tabeli (tylko jeden PRIMARY KEY).
  • Zazwyczaj pozwala na przechowanie jednej wartości NULL (ponieważ NULL nie jest równe NULL).

Składnia: Email VARCHAR(100) UNIQUE (Gwarantuje, że ten sam e-mail nie zostanie wpisany dwa razy).

NOT NULL

NOT NULL — kolumna nie może być pusta. Najprostsze ograniczenie. Wymusza, aby kolumna zawsze miała wartość (nie może przyjąć NULL). Kluczowe dla pól obowiązkowych, jak Nazwisko.

Składnia: Nazwisko VARCHAR(100) NOT NULL

CHECK

CHECK — prosty warunek walidacji (np. Wiek >= 18). Umożliwia zdefiniowanie niestandardowej, prostej reguły walidacyjnej dla kolumny. Baza odrzuci INSERT lub UPDATE, jeśli warunek nie będzie spełniony.

Składnia: Wiek INT CHECK (Wiek >= 18) (Baza odrzuci próbę wstawienia osoby młodszej niż 18 lat).

Przykład CREATE TABLE łączący wszystkie ograniczenia

CREATE TABLE Uczniowie (
  ID_Ucznia INT PRIMARY KEY,
  Imie VARCHAR(100) NOT NULL,
  Nazwisko VARCHAR(100) NOT NULL,
  Email VARCHAR(150) UNIQUE,
  Srednia DECIMAL(4, 2) CHECK (Srednia >= 1.0 AND Srednia <= 6.0),
  ID_Klasy INT FOREIGN KEY REFERENCES Klasy(ID_Klasy)
);

Ta tabela ma teraz solidne fundamenty i będzie aktywnie bronić się przed "śmieciowymi" danymi.