Database Constraints
Constraints adalah aturan yang diterapkan pada kolom untuk memastikan data tetap valid dan konsisten. Database menolak data yang melanggar constraint.
Jenis Constraint
-- 1. NOT NULL — kolom wajib diisi
CREATE TABLE users (
name VARCHAR(100) NOT NULL
);
-- 2. UNIQUE — nilai harus unik
CREATE TABLE users (
email VARCHAR(255) UNIQUE NOT NULL
);
-- 3. CHECK — validasi custom
CREATE TABLE products (
price DECIMAL(10,2) CHECK (price > 0),
stock INT CHECK (stock >= 0),
status VARCHAR(20) CHECK (status IN ('active', 'draft', 'archived'))
);
-- 4. DEFAULT — nilai default jika tidak diisi
CREATE TABLE posts (
status VARCHAR(20) DEFAULT 'draft',
created_at TIMESTAMP DEFAULT NOW()
);
-- 5. PRIMARY KEY — identifier unik per baris
-- 6. FOREIGN KEY — referensi ke tabel lain
Data Integrity Types
- Entity Integrity — setiap baris punya PK yang unik dan NOT NULL
- Referential Integrity — FK selalu mereferensikan PK yang valid
- Domain Integrity — nilai kolom sesuai tipe data dan constraints
- User-defined Integrity — business rules custom (CHECK constraints, triggers)
Contoh Lengkap
CREATE TABLE orders (
id SERIAL PRIMARY KEY, -- entity integrity
user_id INT NOT NULL REFERENCES users(id), -- referential integrity
total DECIMAL(10,2) NOT NULL CHECK (total > 0), -- domain integrity
status VARCHAR(20) DEFAULT 'pending'
CHECK (status IN ('pending', 'paid', 'shipped', 'cancelled')),
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);