Enforcing Data Quality
Constraints are rules that enforce data integrity. They prevent invalid data from being inserted into the database, ensuring your data remains accurate and consistent.
Types of Constraints
Constraint โ Purpose โ Example
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
PRIMARY KEY โ Unique row identifier โ ID INT PRIMARY KEY
FOREIGN KEY โ Link to another table โ DeptID REFERENCES Departments(ID)
NOT NULL โ Column cannot be NULL โ Name VARCHAR(100) NOT NULL
UNIQUE โ All values must differ โ Email VARCHAR(150) UNIQUE
CHECK โ Values must satisfy rule โ Age CHECK (Age >= 16)
DEFAULT โ Value if none specified โ Status DEFAULT 'active'
PRIMARY KEY
-- Single column primary key
CREATE TABLE Students (
ID INT PRIMARY KEY,
Name VARCHAR(100)
);
-- Composite primary key
CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
Grade CHAR(2),
PRIMARY KEY (StudentID, CourseID)
);
FOREIGN KEY
CREATE TABLE Enrollments (
StudentID INT,
CourseID INT,
FOREIGN KEY (StudentID) REFERENCES Students(ID)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)
ON DELETE RESTRICT
);
-- Referential actions:
ON DELETE CASCADE -- Delete child rows when parent is deleted
ON DELETE RESTRICT -- Prevent parent deletion if children exist
ON DELETE SET NULL -- Set foreign key to NULL when parent is deleted
ON DELETE SET DEFAULT -- Set to default value
CHECK Constraint
CREATE TABLE Products (
ID INT PRIMARY KEY,
Name VARCHAR(100) NOT NULL,
Price DECIMAL(10,2) CHECK (Price > 0),
Stock INT CHECK (Stock >= 0),
Rating DECIMAL(3,2) CHECK (Rating BETWEEN 1.0 AND 5.0)
);