ERD Database: Cara Baca dan Bikin Diagram Relasi Tabel
Blog/Tutorial SQL/ERD Database: Cara Baca dan Bikin Diagram Relasi Tabel

ERD Database: Cara Baca dan Bikin Diagram Relasi Tabel

BimaBima
·6 April 2026·10 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

ERD (Entity Relationship Diagram) adalah diagram yang nunjukin tabel apa aja di sebuah database dan gimana tabel-tabel itu saling nyambung lewat primary key dan foreign key. Notasi yang paling umum dipakai namanya crow's foot — garis dengan tiga cabang di ujungnya artinya banyak, garis lurus artinya satu. ERD dibuat sebelum tabelnya dibikin, biar kamu ketahuan salah desain waktu masih gampang diperbaiki.

ERD (Entity Relationship Diagram) adalah gambar yang nunjukin tabel apa aja di sebuah database dan gimana tabel-tabel itu saling nyambung. Satu kotak = satu tabel. Garis antar kotak = relasinya.

Kenapa penting? Karena waktu kamu dikasih database 40 tabel di kerjaan baru, ERD yang ngasih tau kamu harus JOIN lewat kolom apa. Tanpa itu, kamu buka satu-satu tabelnya dan nebak.

Aku bakal ajarin cara baca notasi crow's foot, terus kita bikin ERD dari nol buat toko sembako — lengkap sampai jadi SQL.

Apa itu ERD?

ERD adalah diagram yang nggambarin tiga hal: entitas (tabel), atribut (kolom), dan relasi (gimana tabelnya nyambung).

Satu entitas digambar sebagai kotak. Nama tabelnya di atas, daftar kolomnya di bawah. Kolom yang jadi primary key biasanya dikasih tanda kunci atau digarisbawahi.

Relasi digambar sebagai garis yang nyambungin dua kotak. Simbol di ujung garis yang ngasih tau: satu baris di tabel A nyambung ke berapa baris di tabel B.

ERD dibikin sebelum tabelnya dibuat. Ini poin pentingnya. Salah desain di kertas itu murah. Salah desain setelah 6 bulan data masuk, itu mahal.

Gimana cara baca notasi crow's foot?

Crow's foot (kaki gagak) adalah notasi yang paling banyak dipakai. Namanya dari simbol tiga cabang di ujung garis yang mirip kaki burung.

Ada empat simbol dasar:

SimbolArtinya
Garis lurus tunggal (|)Tepat satu
Kaki gagak (tiga cabang)Banyak (nol atau lebih)
Lingkaran kecil (O)Nol — artinya opsional
Kaki gagak + garisSatu atau lebih

Simbol di ujung dibaca berpasangan. Contoh: garis lurus di sisi cabang, kaki gagak di sisi transaksi. Bacanya: satu cabang punya banyak transaksi, dan satu transaksi cuma punya satu cabang.

Tiga jenis relasi yang bakal kamu temuin:

  • One-to-many (1:N) — paling umum. Satu cabang punya banyak transaksi.
  • One-to-one (1:1) — jarang. Satu karyawan punya satu nomor NPWP.
  • Many-to-many (N:M) — butuh tabel jembatan. Satu transaksi punya banyak produk, satu produk ada di banyak transaksi.

Kenapa many-to-many butuh tabel jembatan?

Ini yang paling sering bikin orang mentok.

Satu transaksi bisa isi 5 produk. Satu produk (misal Beras 5kg) bisa muncul di 3.000 transaksi. Ini relasi many-to-many.

Masalahnya: database relasional gak bisa nyimpen banyak nilai di satu kolom. Kamu gak bisa nulis id_produk = 3, 7, 12, 19, 44 di satu sel.

Solusinya bikin tabel ketiga yang tiap barisnya nyimpen satu pasangan:

CREATE TABLE transaksi_item (
  id_transaksi         INT REFERENCES transaksi(id_transaksi),
  id_produk            INT REFERENCES produk(id_produk),
  qty                  INT NOT NULL,
  harga_saat_transaksi INT NOT NULL,
  PRIMARY KEY (id_transaksi, id_produk)
);

Transaksi yang isinya 5 produk = 5 baris di tabel ini.

Di ERD, relasi many-to-many jadi dua relasi one-to-many yang ketemu di tengah. Kaki gagak nunjuk ke tabel jembatan dari dua arah.

Bonus: tabel jembatan bisa nyimpen info yang cuma masuk akal buat pasangan itu — kayak qty dan harga_saat_transaksi. Info itu gak nempel ke produk doang atau transaksi doang.

Bikin ERD dari nol: toko_berkah

Dataset toko_berkah di ngulikdata isinya 18.400 transaksi dari 6 cabang UMKM sembako. Ini gimana ERD-nya dibikin.

Langkah 1: Cari kata bendanya

Tulis alur bisnisnya dalam satu kalimat, terus lingkari kata bendanya.

"Pelanggan beli beberapa produk di sebuah cabang, dicatat sebagai satu transaksi. Tiap produk punya kategori."

Lima kata benda = lima kandidat tabel: pelanggan, produk, cabang, transaksi, kategori.

Langkah 2: Tentuin relasinya

Buat tiap pasang tabel, tanya dua arah:

  • Satu cabang punya berapa transaksi? Banyak. Satu transaksi punya berapa cabang? Satu. → one-to-many.
  • Satu pelanggan punya berapa transaksi? Banyak. Satu transaksi punya berapa pelanggan? Satu. → one-to-many.
  • Satu kategori punya berapa produk? Banyak. Satu produk punya berapa kategori? Satu. → one-to-many.
  • Satu transaksi punya berapa produk? Banyak. Satu produk ada di berapa transaksi? Banyak. → many-to-many, butuh jembatan.

Jadi total 6 tabel: 5 tadi plus transaksi_item sebagai jembatan.

Langkah 3: Terjemahin jadi SQL

ERD yang bener bisa langsung diterjemahin ke CREATE TABLE tanpa mikir lagi. Aturannya sederhana: di relasi one-to-many, foreign key selalu ditaruh di sisi "many".

CREATE TABLE cabang (
  id_cabang INT PRIMARY KEY,
  nama      VARCHAR(50),
  kota      VARCHAR(50)
);

CREATE TABLE transaksi (
  id_transaksi INT PRIMARY KEY,
  tanggal      DATE NOT NULL,
  id_cabang    INT REFERENCES cabang(id_cabang),
  id_pelanggan INT REFERENCES pelanggan(id_pelanggan)
);

Kolom id_cabang ada di transaksi, bukan sebaliknya. Kalau kebalik, kamu gak bisa nyimpen lebih dari satu transaksi per cabang.

Langkah 4: Pakai ERD-nya buat nulis JOIN

Ini bagian yang bikin ERD kepake tiap hari. Garis di ERD = kolom yang dipakai buat JOIN.

SELECT
  c.nama                                AS cabang,
  SUM(ti.qty * ti.harga_saat_transaksi) AS omzet,
  COUNT(DISTINCT t.id_transaksi)        AS jumlah_transaksi
FROM transaksi t
JOIN cabang         c  ON c.id_cabang     = t.id_cabang
JOIN transaksi_item ti ON ti.id_transaksi = t.id_transaksi
WHERE t.tanggal BETWEEN '2026-01-01' AND '2026-12-31'
GROUP BY c.nama
ORDER BY omzet DESC;

Hasilnya: Depok di puncak dengan omzet Rp 221 juta dari 2.576 transaksi. Rata-rata per transaksi Rp 85.800.

Bandingin sama Bekasi: omzet Rp 118 juta dari 3.104 transaksi — rata-rata cuma Rp 38.000 per transaksi. Bekasi lebih rame tapi nilainya kecil.

Insight itu keluar dalam 2 menit karena aku tau harus JOIN lewat mana. ERD yang ngasih tau.

Kesalahan umum waktu bikin ERD

1. Naruh foreign key di sisi yang salah

Kalau kamu naruh id_transaksi di tabel cabang, satu cabang cuma bisa punya satu transaksi. Aturan bakunya: foreign key selalu di sisi "many".

2. Lupa tabel jembatan buat many-to-many

Orang sering nyoba nyambungin transaksi dan produk langsung. Hasilnya: kolom produk yang isinya "3,7,12,19". Itu langsung ngelanggar bentuk normal pertama, dan bikin query kamu penuh LIKE yang gak akurat.

3. Bikin ERD setelah tabelnya jadi

ERD gunanya buat mikir sebelum ngoding. Kalau kamu bikin ERD setelah 20 tabel udah jalan, itu cuma dokumentasi — dan kesempatan buat benerin desainnya udah lewat.

4. Nulis semua kolom di ERD

Buat diskusi desain, cukup tulis primary key, foreign key, dan 2-3 kolom penting. ERD yang isinya 40 kolom per kotak gak ada yang mau baca. Detail lengkapnya taruh di skema SQL-nya.

5. Gak bedain relasi opsional dan wajib

Transaksi harus punya cabang. Tapi transaksi bisa gak punya pelanggan (pembeli anonim yang gak mau kasih nomor HP). Beda ini digambar pakai lingkaran kecil di ujung garis, dan diterjemahin jadi NOT NULL atau boleh NULL di SQL.

Aturan lengkap soal foreign key dan constraint bisa kamu baca di dokumentasi constraint PostgreSQL.

Tool buat bikin ERD

Tiga yang paling kepake:

  • dbdiagram.io — kamu ketik definisi tabelnya pakai teks, diagramnya kegambar otomatis. Gratis dan paling cepat buat pemula.
  • draw.io — gambar manual, kontrol penuh. Gratis.
  • DBeaver — bisa generate ERD otomatis dari database yang udah ada. Kepake banget waktu kamu warisin database orang.

Buat sketsa awal, kertas dan pulpen juga sah. Yang dinilai relasinya bener, bukan gambarnya rapi.

FAQ

ERD itu buat apa kalau databasenya udah jadi?

Buat ngerti struktur database yang kamu warisin dari orang lain. Waktu kamu masuk kerjaan baru dan disodorin database 40 tabel, ERD ngasih tau tabel mana nyambung ke mana — dan itu langsung ngasih tau JOIN-nya lewat kolom apa. Tanpa ERD, kamu harus buka satu-satu tabelnya dan nebak sendiri. Banyak tool bisa generate ERD otomatis dari database yang udah ada.

Apa itu notasi crow's foot?

Crow's foot adalah cara nulis relasi di ERD pakai simbol di ujung garis. Tiga cabang kayak kaki burung artinya banyak. Garis lurus tunggal artinya satu. Lingkaran kecil artinya nol atau opsional. Jadi garis lurus di satu ujung dan kaki gagak di ujung lain berarti one-to-many: satu baris di tabel kiri bisa punya banyak pasangan di tabel kanan.

Kenapa relasi many-to-many butuh tabel tambahan?

Karena database relasional gak bisa nyimpen banyak nilai di satu kolom. Satu transaksi bisa punya banyak produk, dan satu produk bisa ada di banyak transaksi. Gak ada tempat buat nyimpen itu di dua tabel doang. Solusinya tabel jembatan yang tiap barisnya nyimpen satu pasangan transaksi-produk, plus kolom tambahan kayak qty.

Tool apa yang enak buat bikin ERD?

Buat pemula, dbdiagram.io paling gampang — kamu ketik definisi tabelnya pakai teks, diagramnya kegambar otomatis. Alternatif gratis lain: draw.io buat gambar manual, dan DBeaver yang bisa generate ERD dari database yang udah ada. Buat sketsa cepat, kertas dan pulpen juga sah. Yang penting relasinya bener, bukan gambarnya cakep.

Bedanya ERD sama skema database apa?

ERD itu gambarnya, skema itu definisi teknisnya dalam bentuk SQL. ERD dipakai buat mikir dan komunikasi sama orang lain sebelum ngoding. Skema yang beneran dieksekusi ke database lewat CREATE TABLE. Biasanya kamu gambar ERD dulu, dapet persetujuan, baru terjemahin jadi skema. Satu ERD yang bener bisa langsung diterjemahin ke SQL tanpa mikir lagi.

Penutup

Yang perlu kamu inget:

  • Kaki gagak = banyak. Garis lurus = satu. Lingkaran = opsional.
  • Di relasi one-to-many, foreign key selalu ditaruh di sisi "many".
  • Many-to-many wajib punya tabel jembatan. Gak ada pengecualian.
  • Garis di ERD = kolom buat JOIN. Itu yang bikin ERD kepake tiap hari, bukan cuma pas desain.

Coba sekarang: ambil satu proses bisnis yang kamu ngerti — pesan makanan online, absen kantor, apapun. Tulis satu kalimat, lingkari kata bendanya, gambar kotaknya, tarik garisnya. Lima belas menit, dan kamu udah punya ERD pertama.

Lanjut baca: normalisasi database buat mastiin tabel di ERD kamu gak nyimpen data dobel, dan primary key buat paham gimana tiap baris dikasih identitas unik.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel Terkait

Churn Rate SQL: Deteksi Pelanggan yang Kabur Sejak Dini
Tutorial SQL
20 Mei 2026•11 menit baca

Churn Rate SQL: Deteksi Pelanggan yang Kabur Sejak Dini

Studi kasus toko_berkah: 1.240 pelanggan hilang dalam setahun, dan sinyalnya udah kelihatan 2 bulan sebelumnya. Ini query yang bikin kamu nangkap mereka lebih awal.

BimaBima
YoY Growth SQL: Bandingkan Performa dengan Tahun Lalu
Tutorial SQL
17 Mei 2026•11 menit baca

YoY Growth SQL: Bandingkan Performa dengan Tahun Lalu

Hitung YoY growth di SQL pakai LAG atau self-join, lengkap dengan cara ngindarin pembagi nol dan jebakan bulan yang bolong. Contohnya pakai data toko_berkah.

BimaBima
MoM Growth SQL: Hitung Pertumbuhan Bulanan Otomatis
Tutorial SQL
14 Mei 2026•10 menit baca

MoM Growth SQL: Hitung Pertumbuhan Bulanan Otomatis

Berhenti copy-paste omzet bulan lalu ke Excel buat ngitung growth. Satu query SQL pakai LAG bisa ngasih pertumbuhan bulanan otomatis, lengkap sampai bulan yang datanya kosong.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

Copyright © 2026 - All rights reserved

LINKS
SupportPricingDatasetBlogAffiliates
LEGAL
Terms of servicesPrivacy policy
Ngulik Data
DatasetLeaderboardBlogStore