ВебОснова — хостинг, домены и создание сайтов Практический справочник по выбору хостинга, регистрации и настройке доменов, DNS, конструкторам сайтов и запуску проектов. Инструкции, сравнения сервисов и ответы на частые вопросы.
Основы доменов

Что такое домен в таблице

Домен в таблице — это множество допустимых значений, которые может принимать определённое поле. Проще говоря, он задаёт правила для данных: какие значения разрешены, в каком формате они должны быть представлены и какие ограничения необходимо соблюдать. Например, для поля «Возраст» доменом могут быть целые числа от 0 до 120, а для поля «Статус заказа» — только значения «новый», «оплачен», «отправлен» и «завершён».

Понятие домена особенно важно в реляционных базах данных, где таблицы состоят из столбцов, а каждый столбец описывает одно свойство объекта. Домен помогает сделать структуру таблицы понятной, предотвращает появление ошибочных записей и поддерживает целостность базы данных.

Определение домена в таблице

В теории реляционных баз данных домен — это набор атомарных значений, допустимых для атрибута или столбца. Атрибут определяет смысл данных, а домен определяет границы их допустимых вариантов. Например, столбец «Количество» может использовать домен положительных целых чисел, а столбец «Дата регистрации» — домен календарных дат.

У домена есть не только перечень возможных значений, но и общие правила их представления. Они могут включать тип данных, допустимый диапазон, максимальную длину строки, возможность использовать значение NULL и дополнительные проверки. Благодаря этому база данных хранит не просто набор произвольных символов, а данные, соответствующие установленным условиям.

В практической работе домен чаще всего связывают с конкретным столбцом таблицы. Если несколько столбцов подчиняются одинаковым правилам, для них можно использовать один и тот же логический домен. Например, поля «Индекс отправителя» и «Индекс получателя» могут принимать строки одинаковой длины и формата.

Чем домен отличается от типа данных

Тип данных отвечает на вопрос, как значение хранится и обрабатывается системой: это может быть число, строка, дата, логическое значение или другой стандартный тип. Домен является более широким понятием. Он включает тип данных, но дополнительно описывает смысл и ограничения значения.

Например, тип INTEGER обычно позволяет хранить большое количество целых чисел. Однако домен «Количество товаров» может разрешать только числа от 1 до 100 000. Домен «Оценка» на основе того же типа может ограничиваться диапазоном от 1 до 5. В обоих случаях используется целое число, но назначение и правила проверки различаются.

Разница важна для проектирования. Если ограничиться только типом данных, в поле могут появиться формально корректные, но бессмысленные значения: отрицательная цена, дата окончания раньше даты начала или произвольный текст вместо статуса. Домен уточняет требования к информации и делает модель данных точнее.

Примеры доменов для столбцов

Домен можно определить практически для любого поля таблицы. Его содержание зависит от предметной области и бизнес-правил.

  • «Цена» — положительное число с двумя знаками после запятой; значение не может быть отрицательным.
  • «Дата рождения» — календарная дата, не превышающая текущую дату.
  • «Код страны» — строка из двух заглавных букв или заранее заданный список кодов.
  • «Пол сотрудника» — одно из значений справочника, если такое ограничение действительно нужно предметной области.
  • «Статус заявки» — фиксированный набор состояний, например «создана», «на проверке», «одобрена» и «отклонена».
  • «Электронная почта» — строка установленной длины, соответствующая принятому формату адреса.

Иногда домен задаётся диапазоном, иногда перечислением, а иногда сложным условием. Для денежных величин важны точность и масштаб, для идентификаторов — уникальность и формат, для текстовых полей — длина и допустимые символы. Чем точнее определён домен, тем меньше неоднозначности возникает при вводе и обработке данных.

Как домен задаётся в базе данных

В SQL правила домена обычно реализуют с помощью типов столбцов, ограничений NOT NULL, CHECK, DEFAULT, внешних ключей и справочных таблиц. Например, столбцу цены можно назначить числовой тип, запретить отрицательные значения проверкой CHECK, а для статуса использовать ограниченный список или ссылку на таблицу статусов.

Логика может выглядеть так: поле «Количество» имеет целочисленный тип и условие, что значение больше нуля; поле «Статус» принимает только значения из утверждённого набора; поле «Дата создания» получает текущую дату по умолчанию. Конкретный синтаксис зависит от используемой СУБД, но принцип остаётся одинаковым: система должна отклонять записи, нарушающие домен.

Некоторые системы поддерживают отдельный объект домена, который можно создать один раз и применять к нескольким столбцам. Такой подход удобен, когда одинаковые ограничения используются во многих таблицах. Если отдельные домены не поддерживаются или не применяются в проекте, те же правила можно выразить комбинацией стандартных типов и ограничений.

Зачем нужны домены и как их проектировать

Главная задача домена — защита качества данных. Он не позволяет сохранять значения, которые противоречат смыслу поля, снижает количество ошибок в отчётах и упрощает работу приложений. Кроме того, формальное описание допустимых значений помогает разработчикам, аналитикам и администраторам одинаково понимать структуру базы.

При проектировании домена сначала определяют смысл столбца, затем выбирают подходящий тип данных и устанавливают необходимые ограничения. Следует учитывать минимальное и максимальное значение, точность, длину, возможность отсутствия значения, правила округления и перечень разрешённых вариантов. Не стоит добавлять ограничения без оснований: слишком жёсткий домен может затруднить развитие системы или не учитывать реальные сценарии.

Полезно отделять общие правила от уникальных. Например, домен номера телефона может задавать формат и длину, а уникальность конкретного номера должна быть отдельным ограничением столбца. Аналогично, домен даты определяет допустимый формат и диапазон, а связь даты с другими датами проверяется на уровне бизнес-логики или специальных ограничений.

FAQ

Что такое домен простыми словами?
Домен — это набор правил, которые определяют, какие значения можно записывать в конкретный столбец таблицы.
Домен и тип данных — это одно и то же?
Нет. Тип данных определяет способ хранения значения, а домен дополнительно описывает его смысл и допустимые ограничения.
Можно ли использовать один домен для нескольких столбцов?
Да, если столбцы имеют одинаковое назначение и должны подчиняться одним правилам.
Что произойдёт, если записать значение вне домена?
При настроенных ограничениях база данных отклонит запись и вернёт ошибку нарушения правила.