Kardinalitas dalam Database
Kardinalitas menjelaskan jumlah hubungan antara dua entitas. Ini menentukan bagaimana tabel saling terhubung.
1. One-to-One (1:1)
Satu record di tabel A terhubung dengan tepat satu record di tabel B.
-- Contoh: User dan Profile (1:1)
CREATE TABLE users (
id SERIAL PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL
);
CREATE TABLE profiles (
id SERIAL PRIMARY KEY,
user_id INT UNIQUE REFERENCES users(id),
bio TEXT,
avatar_url VARCHAR(500)
);
2. One-to-Many (1:N)
Satu record di tabel A bisa terhubung dengan banyak record di tabel B. Relasi paling umum.
-- Contoh: User dan Posts (1:N)
CREATE TABLE posts (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES users(id),
title VARCHAR(200) NOT NULL
);
-- Satu user bisa punya banyak posts
3. Many-to-Many (M:N)
Banyak record di tabel A bisa terhubung dengan banyak record di tabel B. Memerlukan pivot table.
-- Contoh: Students dan Courses (M:N)
CREATE TABLE students (id SERIAL PRIMARY KEY, name VARCHAR(100));
CREATE TABLE courses (id SERIAL PRIMARY KEY, title VARCHAR(200));
-- Pivot table
CREATE TABLE student_course (
student_id INT REFERENCES students(id),
course_id INT REFERENCES courses(id),
enrolled_at TIMESTAMP DEFAULT NOW(),
PRIMARY KEY (student_id, course_id)
);
Menentukan Kardinalitas
Tanyakan: "Berapa banyak B yang bisa dimiliki oleh satu A, dan sebaliknya?"
- User ↔ Profile → 1 user = 1 profile → 1:1
- User ↔ Post → 1 user = banyak post → 1:N
- Student ↔ Course → banyak student = banyak course → M:N