Kiedy zachowana jest integralność dziedzinowa (domenowa) w bazie danych?
VARCHAR(50) albo ENUM. Rezygnacja z nich niczego nie zapewnia.Dziedzina, czyli domena, kolumny to zbiór wartości, jakie wolno w niej zapisać. Integralność dziedzinowa jest zachowana, gdy każda wartość mieści się w tym zbiorze: ma właściwy typ, długość i zakres. W kolumnie ocena nie znajdzie się 7 ani słowo „dobry”, jeśli dozwolone są liczby od 1 do 6.
Bazę danych pilnuje tego sama, jeśli dobrze opisze się kolumny: typ, np. DATE albo TINYINT, ograniczenie NOT NULL, wartość domyślna DEFAULT, typ wyliczeniowy ENUM('M','K') oraz warunek CHECK (ocena BETWEEN 1 AND 6), który MySQL egzekwuje od wersji 8.0.16. Obok niej wyróżnia się integralność encji i integralność referencyjną.
Błędne odpowiedzi opisują inne rodzaje integralności albo nie opisują żadnej. Utworzony klucz główny w każdej tabeli to warunek integralności encji. Ona gwarantuje, że każdy wiersz da się jednoznacznie odróżnić, ale nic nie mówi o tym, czy wartości w kolumnach są sensowne.
Klucz obcy wskazujący istniejący rekord to integralność referencyjna. Pilnuje powiązań między tabelami, np. żeby uczeń nie był przypisany do nieistniejącej klasy. To również nie dotyczy zakresu wartości w samej kolumnie.
Rezygnacja z kolumn tekstowych niczego nie zapewnia. Kolumny tekstowe są potrzebne, np. na nazwiska, i mogą mieć dobrze opisaną dziedzinę, np. VARCHAR(50) NOT NULL albo listę dozwolonych wartości w ENUM. Integralność dziedzinowa dotyczy zgodności wartości z dziedziną, a nie wyboru typów.
Krótko: encja dotyczy wierszy, dziedzina wartości w kolumnach, a referencja powiązań między tabelami.