ER Diagram Dasar — Database

Entity-Relationship Diagram ER Diagram adalah representasi visual dari struktur database. Menunjukkan entitas (tabel), atribut (kolom), dan relasi antar…

ER diagram (Entity-Relationship Diagram, sering disingkat ERD) adalah gambar rancangan database: kotak untuk tiap benda yang datanya disimpan, isinya data apa saja yang dicatat, dan garis yang menghubungkan benda-benda yang saling berkaitan. Mirip denah rumah yang dipegang tukang: tiap ruangan digambar sebagai kotak, dan pintu antar ruangan digambar sebagai garis. Semua orang di tim bisa membaca dan mengoreksinya sebelum satu baris CREATE TABLE pun ditulis.

🧪 Tebakan cepat: di garis antara customers dan orders, ujung yang menempel ke orders bercabang tiga seperti kaki ayam. Artinya satu customer punya banyak orders, atau satu order punya banyak customers? Tebak dulu, jawabannya ada di bagian "Membaca ujung garis".

Tiga komponen: entitas, atribut, relasi

Semua ER diagram dibangun dari tiga hal. Contohnya diambil dari Kedai Senja:

Komponen Artinya Di Kedai Senja Nanti jadi
Entity (entitas) benda yang datanya disimpan Customer, Profile, Order, Product tabel
Attribute (atribut) data yang dicatat tentang entitas itu name, email, price kolom
Relationship (relasi) hubungan antar entitas, biasanya kata kerja Customer membuat Order foreign key, atau tabel perantara

Satu atribut punya peran khusus: primary key, atribut yang nilainya unik untuk tiap baris, misalnya id.

Notasi Chen: persegi panjang, oval, belah ketupat

Ada dua cara menggambar ERD yang sering kamu temui. Yang klasik, di buku kuliah, adalah notasi Chen:

  (id)  (name)                        (id)  (ordered_at)
    \    /                              \    /
  [Customer] --1-- <membuat> --N-- [Order]

Di gambar teks ini, [ ] persegi panjang, ( ) oval, < > belah ketupat, dan 1 serta N menulis kardinalitasnya: satu customer, banyak order. Lab di halaman ini menggambar versi lengkapnya, termasuk garis bawah di id.

Notasi crow's foot: yang dipakai tool sehari-hari

Tool seperti dbdiagram.io, draw.io dan MySQL Workbench memakai notasi crow's foot (kaki ayam). Lebih ringkas: tiap entitas jadi satu kotak berisi daftar atributnya, primary key ditandai PK dan foreign key ditandai FK. Relasinya cukup garis, dan jumlahnya ditulis lewat bentuk ujung garis:

Ujung garis Dibaca
|| dua garis tegak tepat satu
o| lingkaran dan garis tegak nol atau satu
|< garis tegak dan kaki ayam satu atau banyak
o< lingkaran dan kaki ayam nol atau banyak

Lingkaran artinya "boleh gak ada" (minimal nol). Garis tegak artinya "minimal satu" atau "tepat satu". Kaki ayam artinya "banyak".

Membaca ujung garis

Garis dibaca dua arah, dan selalu memakai ujung yang menempel di entitas tujuan. Garis customers ||----o< orders:

Jadi kaki ayam di sisi orders artinya satu customer punya banyak orders, bukan sebaliknya. Itu jawaban tebakannya. Relasi seperti ini disebut one-to-many, ditulis 1:N. Satu user dengan banyak post di blog juga digambar begitu: garis dari User ke Post dengan notasi 1:N, kaki ayam di sisi Post.

Semua garis di ERD Kedai Senja:

Garis Ujungnya Dibaca Singkatnya
customers ke profiles || dan o| 1 customer punya 0 atau 1 profile 1:1
customers ke orders || dan o< 1 customer punya 0 atau banyak orders 1:N
orders ke order_items || dan |< 1 order berisi 1 atau banyak item 1:N
products ke order_items || dan o< 1 product muncul di 0 atau banyak item 1:N

order_items adalah tabel perantara: lewat dia, satu order berisi banyak product dan satu product ada di banyak order. Di notasi Chen dia gak punya kotak sendiri, cuma belah ketupat berisi dengan atribut qty. Kenapa begitu dibahas di pelajaran Kardinalitas & Relasi.

Dari diagram ke tabel

Diagram yang sudah disepakati diterjemahkan langsung: entitas jadi tabel, atribut jadi kolom, dan tiap garis jadi foreign key di sisi kaki ayam.

CREATE TABLE customers (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT NOT NULL UNIQUE
);

CREATE TABLE profiles (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER NOT NULL UNIQUE REFERENCES customers(id),  -- 1:1
  address TEXT
);

CREATE TABLE orders (
  id INTEGER PRIMARY KEY,
  customer_id INTEGER NOT NULL REFERENCES customers(id),  -- 1:N
  ordered_at TEXT NOT NULL
);

CREATE TABLE products (
  id INTEGER PRIMARY KEY,
  name TEXT NOT NULL,
  price INTEGER NOT NULL
);

CREATE TABLE order_items (
  order_id INTEGER NOT NULL REFERENCES orders(id),
  product_id INTEGER NOT NULL REFERENCES products(id),
  qty INTEGER NOT NULL,
  PRIMARY KEY (order_id, product_id)
);

SQLite bisa ditanya garis mana saja yang dia kenal. Hasilnya empat baris, sama dengan empat garis di diagram:

tabel kolom menunjuk kolom_tujuan
order_items order_id orders id
order_items product_id products id
orders customer_id customers id
profiles customer_id customers id

📌 Jenis atribut

⚠️ Jebakan yang sering ketemu

TL;DR: ER diagram menggambar rancangan database: entitas (jadi tabel), atribut (jadi kolom) dan relasi (jadi foreign key). Notasi Chen memakai persegi panjang untuk entitas, oval untuk atribut, oval bergaris bawah untuk primary key, dan belah ketupat untuk relasi. Notasi crow's foot memakai kotak berisi daftar kolom, dan ujung garis menyatakan jumlah: || tepat satu, o| nol atau satu, |< satu atau banyak, o< nol atau banyak. Kaki ayam menempel di sisi yang banyak, jadi satu customer dengan banyak orders adalah 1:N dengan kaki ayam di sisi orders, dan foreign key-nya juga di sana.

Yang akan kamu pelajari