Zgodność danych w SQL Server – Constraint, Default, Null 4


1. Integralność danych w SQL Server

Czym są Constraint’y w tabelach? Są to obostrzenia założone na poszczególne kolumny tabel. Są szczególnie ważne podczas tworzenia zaawansowanych aplikacji opartych na wszystkich relacyjnych bazach danych. Za ich pomocą określamy na poszczególnych kolumnach tabel, jakie dane mogą być składowane w kolumnie, a jakie nie mogą. Dodatkowo za ich pomocą przypisujemy klucze główne i obce w poszczególnych kolumnach tabel. W SQL Server wyróżniamy następujące Constraint’y i obostrzenia, które możemy założyć na tabelę:

  • PRIMARY KEY – Klucz główny tabeli. W jednej tabeli może występować tylko jeden klucz główny. Klucz główny musi być wartością unikatową. Klucz główny nie może zawierać wartości NULL. Podczas zakładania klucza głównego automatycznie tworzony jest indeks klastrowy dla danej kolumny, a dane sortowane są rosnąco.
  • UNIQUE – Unikatowa wartość w kolumnie. W tabeli możemy wstawić ustawić więcej niż jedną kolumnę z takim Constraint’em. Kolumna z UNIQUE może zawierać jeden rekord z wartością NULL. Jeśli chcemy tego uniknąć, można zastosować dodatkowo NOT NULL dla kolumny.
  • FOREIGN KEY – Klucz obcy. Wartość odnosi się do id w innej tabeli. Stosujemy go do tworzenia relacji pomiędzy tabelami. Klucz obcy musi mieć odniesienie do klucza tabeli obcej.
  • CHECK – Walidacja wartości wprowadzanej do tabeli. Check służy do walidacji danych wprowadzanych do kolumny Wprowadzamy w nim wyrażenie logiczne określające kryteria danych, które będą wprowadzane do kolumn. Możemy np określić, że kolumna ma przechowywać wartości od 1 do 1000 itp.
  • DEFAULT – Wartość domyślna wstawiana w kolumnie tabeli. Wprowadza się, gdy wstawiamy nowy rekord i nie określimy, jaką konkretną wartość ma uzyskać dana kolumna. W tym wypadku automatycznie wstawia się wartość Default. Może to być np bieżąca data.
  • NULL / NOT NULL – Warto znać te obostrzenie. Uniemożliwia lub dopuszcza wartość NULL w danej kolumnie tabeli.

2. Tworzenie tabeli – wstawianie Constraintów

W jaki sposób tworzyć tabele w SQL Server, by kolumny zawierały wybrane constraint’y? Poniżej skrócony schemat tworzenia tabeli w SQL Server. Jak widzisz, po nazwie kolumny i typie danych wstawiamy wyrażenie CONSTRAINT oraz naszą nazwę własną. Następnie wprowadzamy typ, a więc PRIMARY KEY, UNIQUE, CHECK itp. Na koniec wprowadzamy właściwości, które możemy ustalić dla wybranych kolumn. Ważne jest, że wcale nie musisz wprowadzać wyrażenia CONSTRAINT, ani jego nazwy. W tym wypadku SQL Server sam wybierze taką nazwę. Nie jest to jednak zalecane. Nazwa utworzona w ten sposób może być ciężka do zapamiętania jak np PK__TBL_USER__3214EC27E2BD78DE.

3. Przykład tworzenia tabeli z Constraintami

Stwórzmy krótki przykład. Utwórz dwie tabele TBL_USERS I TBL_USERS_DATA z wykorzystaniem poznanych obostrzeń tabel.

Jak widzisz obie tabele zawierają klucze główne. Tabela TBL_USERS_DATA ma też klucz obcy odnoszący się do TBL_USERS. W tabeli TBL_USERS dwie z kolumn posiadają walidację wartości utworzoną za pomocą CHECK. Wstawmy teraz do tabel przykładowe dane:

Klucz obcy założony w tabeli TBL_USERS_DATA  uniemożliwia skasowanie każdego rekordu w tabeli TBL_USERS, jeśli powiązanie pomiędzy wstawionymi danymi istnieje. Nie możesz też skasować tabeli 1 (TBL_USERS) za pomocą polecenia DROP, zanim nie skasujesz tabeli TBL_USERS_DATA lub nie skasujesz z niej danych.

SQL Server Constraint - integralność danych

SQL Server Constraint – integralność danych

4. Dodawanie Constraintów do istniejących tabel

W jaki sposób założyć nowe constrainty na istniejących tabelach? Możesz to zrobić za pomocą polecenia ALTER TABLE. Wyjątek stanowi ustawianie dopuszczenia lub zakazu wartości NULL w tabeli. Stosujemy w tym przypadku składnię ALTER TABLE nazwa_tabeli ALTER COLUMN nazwa_kolumny typ_danych NULL/NOT NULL. Jeśli dodajemy do tabeli klucz główny PRIMARY KEY, kolumna musi być wcześniej ustawiona jako NOT NULL.  Poniżej przykład składni dla wszystkich obostrzeń.

5. Modyfikacja i usuwanie Constraintów

Jak modyfikować obostrzenia założone na kolumnach tabel? W SQL Server nie ma właściwej składni, za pomocą której mógłbyś zmodyfikować obostrzenia. Jeśli chcemy zmienić właściwości naszych kolumn powinniśmy usunąć obostrzenie za pomocą polecenia DROP. Następnie możemy założyć nowe o tej samej nazwie.

 

Bardziej szczegółowe opcje wszystkich poznanych obostrzeń poznasz w kolejnych rozdziałach kursu SQL Server. Jeśli masz pytania co do omawianych przykładów, zachęcam do ich zadawania na Forum (nie musisz się logować)

źródło: AskAndCode.Com


Dodaj komentarz

Twój adres email nie zostanie opublikowany.

4 komentarzy do “Zgodność danych w SQL Server – Constraint, Default, Null