Domain constraints are integrity rules that define what kind of values an attribute (column) can take in a relational database. They act on the domain (the set of allowed values) of each attribute and ensure that only valid, meaningful data is stored.
In simple terms, domain constraints say: “this column must be a positive integer”, “this field must be a string of at most 20 characters”, or “this date must be in the future”, and the database enforces these rules automatically.
What Domain Constraints Specify
Domain constraints usually cover:
Data Type
Whether an attribute is an integer, string, date, decimal, etc.
For example:
salaryis a positive numbernameis a stringdobis a date
Range or Format Restrictions
Salary must be greater than zero.
Age must be between 18 and 100.
Email must match a certain pattern.
Nullability
Whether the attribute can be NULL or must always have a value.
This is distinct from entity integrity (which applies specifically to primary keys) but is still part of domain-level control.
Together, these rules keep the data logically consistent within each attribute.
Example of Domain Constraints
Consider a relation EMPLOYEE(emp_id, name, age, salary, dept) with the following domain constraints:
emp_id: integer, non-null, must be positivename: string, up to 50 characters, non-nullage: integer, between 18 and 65, non-nullsalary: real number, greater than 0, non-nulldept: string, from a fixed list such as{'HR', 'IT', 'Sales', 'Finance'}
If someone tries to insert a row like:
| emp_id | name | age | salary | dept |
|---|---|---|---|---|
| 101 | Alice | 15 | 45000 | Marketing |
the DBMS may reject it because:
age = 15violates the allowed range (18–65)dept = 'Marketing'is not in the allowed list (if that constraint is enforced)
Such checks are examples of domain constraints at work.
How Domain Constraints Are Expressed
In SQL, domain constraints appear as:
Data-type declarations (
INT,VARCHAR(20),DATE, etc.)CHECKconstraints:
CHECK (salary > 0)
CHECK (age BETWEEN 18 AND 65)
ENUMor domain types in some systems, which list allowed values
These declarations ensure that invalid values are blocked at the attribute level, before they corrupt the rest of the logic.
Why Domain Constraints Matter?
They enforce data-type and meaning correctness, so age cannot accidentally become a negative number and salary cannot be text.
They prevent garbage or inconsistent values from entering the database, which improves application reliability.
They form the first layer of data validation, acting at the column level before other constraints (entity integrity, referential integrity) are even considered.