Домен - множество всех возможных допустимых значений, которые может принимать столбец таблицы. Почти все СУБД используют базовые типы данных, такие как шт, char и date, для определения множества возможных значений столбца. Этот метод усиления «целостности домена» является неполным, как можно увидеть из следующего примера.
Таблица person имеет столбец zip, который задает ZIP-код (почтовый индекс) города, в котором живет человек. Этот столбец может быть объявлен с типом данных smallint или char(5). Объявление с типом данных smallint является неточным, потому что тип данных smallint содержит все положительные и отрицательные целые числа в диапазоне между -215 и 215- 1. Объявление с использованием char(5) является даже еще более неточным, потому что в этом случае здесь могут присутствовать все символы и специальные знаки. По этой причине правильное определение ZIP-кодов требует задание интервала положительных целых чисел в диапазоне между 00601 и 99950 и назначение его столбцу zip.
Ограничения check (определяемые в операторах create table и alter table) могут более точно усилить целостность домена, потому что их выражения являются гибкими, и они всегда выполняются при добавлении нового значения или при изменении значения в столбце.
Язык Transact-SQL обеспечивает поддержку доменов путем создания псевдонимов типов данных при использовании оператора create type. Следующие два раздела описывают псевдонимы и типы данных clr.