In relational databases, a domain refers to the set of permissible values that an attribute can take. It defines the type of data that can be stored in a particular column (attribute) of a table, as well as any constraints or restrictions on the data's values.
A domain ensures that the data in a relational database is valid, consistent, and meaningful. It is a fundamental concept in the relational model because it helps maintain the integrity of the data.
Set of Possible Values:
Date attribute could include only valid dates (e.g., MM/DD/YYYY format).Data Type:
Constraints:
Consider the following table called Employees, which represents employee data:
| EmployeeID | Name | Age | JoinDate | Salary |
|---|---|---|---|---|
| 101 | John Doe | 30 | 2022-06-15 | 55000 |
| 102 | Jane Smith | 28 | 2021-08-01 | 60000 |
| 103 | Alice Johnson | 35 | 2023-01-22 | 65000 |
For each attribute, we can define a domain that dictates the acceptable values for that attribute.
EmployeeID:
INTEGER data type), which ensures the employee ID is a numeric identifier.EmployeeID must be unique.Name:
VARCHAR(100)), allowing alphanumeric characters and possibly spaces.NOT NULL constraint).Age:
INTEGER data type), which ensures that the age value is realistic for an employee.JoinDate:
DATE data type), ensuring that the value must be a valid date (e.g., YYYY-MM-DD format).JoinDate cannot be a future date.Salary:
DECIMAL(10, 2)), which allows storing monetary values with two decimal places.Defines the Data Type:
Range of Values:
Age attribute might have a domain that limits values to integers between 18 and 120.Format or Pattern:
PhoneNumber domain could require values to follow a specific pattern (e.g., (XXX) XXX-XXXX).Default Values:
0.00.Constraints:
Let's consider a hypothetical relation for a Student table, with the following attributes:
| Attribute | Data Type | Domain | Constraint |
|---|---|---|---|
| StudentID | Integer | A unique identifier, positive integer | Primary Key, Unique, Not Null |
| Name | Varchar(100) | A string of text (up to 100 characters) | Not Null |
| Age | Integer | Between 18 and 100 | Check (Age >= 18 AND Age <= 100) |
| EnrollmentDate | Date | A valid date in the format YYYY-MM-DD | Not Null |
| GPA | Decimal(3, 2) | Between 0.00 and 4.00 | Check (GPA >= 0.00 AND GPA <= 4.00) |
Name attribute is text (string) with a maximum length of 100 characters. The Not Null constraint ensures that the student's name is always provided.Age is an integer and must be between 18 and 100, as specified by the Check constraint.Not Null), ensuring that students cannot be enrolled without a valid date.GPA attribute is constrained to be a decimal number with two decimal places and must fall between 0.00 and 4.00.Domains play a crucial role in data integrity within relational databases. They help ensure that data follows defined rules and prevents invalid or inconsistent data from being entered into the database. The combination of data types, range checks, and other constraints ensures that:
A domain in a relational database defines the set of valid values for an attribute. It is closely related to the data type of the attribute and can also impose additional constraints, such as ranges or patterns, to ensure data consistency and integrity. Understanding domains is essential for designing robust databases and maintaining data quality and reliability in relational systems.
Open this section to load past papers