Menetapkan primary key yang tepat untuk setiap entitas.
CAPAIAN 4
DIAGRAM
Menggambar diagram ER lengkap memakai notasi Crow's Foot dengan benar.
Mengapa Kita Perlu Menggambar Dulu?
Bayangkan teman Anda, pemilik toko online kecil bernama "Kedai Berkah" di Tokopedia, minta Anda membuatkan sistem pencatatan pesanan. Ia hanya bilang begini:
"Saya mau tahu pelanggan mana yang pesan produk apa, kapan, dan berapa jumlahnya."
TANPA RANCANGAN
LANGSUNG CODING
Tabel dibuat asal, data ganda di mana-mana, sulit diubah saat kebutuhan baru muncul.
DENGAN RANCANGAN
GAMBAR DULU
Diagram ER jadi cetak biru yang disepakati bersama sebelum satu baris kode ditulis.
ANALOGI
DENAH RUMAH
Arsitek tidak langsung menyusun bata — ia gambar denah dulu agar tukang tidak salah bangun.
Komponen Dasar: Entitas dan Atribut
ENTITAS (ENTITY)
Objek/orang/konsep nyata yang datanya ingin dicatat — digambar sebagai persegi panjang.
Contoh: Pelanggan, Produk, Pesanan
Harus punya banyak instance (baris data) berbeda
ATRIBUT (ATTRIBUTE)
Karakteristik/properti yang melekat pada entitas — digambar sebagai elips (atau daftar di dalam kotak entitas versi modern).
Contoh entitas Pelanggan: nama, email, no_telepon
Setiap entitas wajib punya atribut kunci unik (primary key)
Notasi modern (Crow's Foot) yang kita pakai di kelas ini menggambar atribut sebagai daftar di dalam kotak entitas, bukan elips terpisah — lebih ringkas dan umum dipakai di industri (mis. MySQL Workbench, dbdiagram.io).
Bentuk Entitas dalam Notasi Crow's Foot
CONTOH ENTITAS PELANGGAN
Simbol 🔑 menandai primary key — atribut yang nilainya unik untuk setiap baris, dan selalu diletakkan di baris paling atas daftar atribut.
Jenis-Jenis Kunci (Key) dalam ER
PRIMARY KEY (PK)
KUNCI UTAMA
Atribut unik yang mengidentifikasi satu baris data secara pasti. Tidak boleh kosong (null) dan tidak boleh berulang.
FOREIGN KEY (FK)
KUNCI TAMU
Atribut di satu entitas yang merujuk primary key entitas lain — inilah yang membentuk relasi.
CANDIDATE KEY
KANDIDAT KUNCI
Atribut lain yang juga bisa jadi PK (mis. email juga unik), tapi tidak dipilih jadi kunci utama.
Contoh nyata: pada entitas Mahasiswa, atribut NIM dipilih sebagai primary key. Padahal nomor KTP/NIK juga unik dan bisa jadi kandidat — tapi NIM lebih ringkas dan spesifik untuk konteks kampus.
Relasi (Relationship) dan Kardinalitas
Relasi adalah hubungan antar-entitas, digambar sebagai garis (kadang dengan diamond berlabel kata kerja). Kardinalitas menjelaskan berapa banyak instance yang boleh terlibat di tiap sisi relasi.
1 : 1
SATU-SATU
Satu Karyawan punya tepat satu Kartu Akses. Jarang; biasa untuk data sensitif yang dipisah tabel.
1 : N
SATU-BANYAK
Satu Pelanggan bisa punya banyak Pesanan, tapi satu Pesanan hanya milik satu Pelanggan. Paling umum.
N : M
BANYAK-BANYAK
Satu Pesanan bisa berisi banyak Produk, dan satu Produk bisa muncul di banyak Pesanan.
Membaca Notasi Crow's Foot (Kaki Ayam)
SIMBOL UJUNG GARIS
Baca kardinalitas dari ujung garis dekat entitas SEBERANG-nya, bukan dari entitas asalnya sendiri — ini bagian yang paling sering keliru ditafsirkan pemula.
Bagian 2 dari 4
Studi Kasus: Toko Online "Kedai Berkah"
Sekarang kita praktik langsung: dari deskripsi kebutuhan bisnis menjadi entitas, atribut, dan relasi — langkah demi langkah.
Langkah 1: Baca Kebutuhan Bisnis
"Kedai Berkah menjual produk ke pelanggan. Setiap pelanggan punya nama, email, dan alamat. Setiap produk punya nama, harga, dan stok. Saat pelanggan memesan, dicatat sebagai satu pesanan dengan tanggal, dan pesanan itu bisa berisi beberapa produk sekaligus, masing-masing dengan jumlah pembelian berbeda."
Teknik membaca: garis bawahi kata benda (calon entitas), kata sifat/angka (calon atribut), dan kata kerja (calon relasi).
Tandai kata benda utama yang berulang di deskripsi
Pelanggan, Produk, Pesanan
2
Untuk tiap kata benda, tentukan atribut deskriptifnya
Pelanggan: nama, email, alamat
3
Ulangi untuk entitas Produk
Produk: nama, harga, stok
4
Ulangi untuk entitas Pesanan
Pesanan: tanggal
5
Tambahkan primary key buatan (surrogate key) di tiap entitas
id_pelanggan, id_produk, id_pesanan
Primary key buatan (mis. id_pesanan angka urut) lebih aman dipakai daripada atribut alami seperti tanggal, karena tanggal bisa sama untuk banyak pesanan berbeda.
Hasil Sementara: Tiga Entitas Kedai Berkah
PELANGGAN
🔑 id_pelanggan
nama
email
alamat
PRODUK
🔑 id_produk
nama
harga
stok
PESANAN
🔑 id_pesanan
tanggal
Ketiga kotak ini masih berdiri sendiri — belum saling terhubung. Langkah berikutnya: menggambar relasi di antaranya.
Langkah 3: Relasi Pelanggan → Pesanan (1:N)
PELANGGAN "MEMBUAT" PESANAN
Dibaca: "Satu Pelanggan membuat BANYAK Pesanan" (kaki ayam di dekat Pesanan) — dan "Setiap Pesanan pasti dibuat oleh SATU Pelanggan" (garis tegak di dekat Pelanggan).
Langkah 4: Relasi Pesanan ↔ Produk (N:M)
Satu Pesanan bisa berisi banyak Produk, dan satu Produk bisa muncul di banyak Pesanan — relasi N:M tidak bisa langsung digambar sebagai satu garis biasa.
SOLUSI: TABEL PENGHUBUNG (JUNCTION TABLE)
Tabel penghubung DETAIL_PESANAN punya composite key (gabungan id_pesanan + id_produk) sebagai primary key, plus atribut tambahan seperti jumlah beli.
Bagian 3 dari 4
Diagram ER Lengkap & Aturan Verifikasi
Menggabungkan semua potongan menjadi satu diagram utuh, lalu memeriksa kelengkapannya dengan checklist.
Diagram ER Lengkap: Sistem Kedai Berkah
Hitung dari Nol: Menentukan Kardinalitas dari Data Sampel
Kedai Berkah punya 4 pelanggan dan 10 baris data pesanan. Mari tentukan kardinalitas Pelanggan–Pesanan berdasarkan hitungan aktual.
Langkah
Perhitungan
Nilai
1. Total baris Pesanan
diberikan langsung dari data
10 pesanan
2. Total Pelanggan unik
diberikan langsung dari data
4 pelanggan
3. Rata-rata pesanan per pelanggan
10 ÷ 4
2,5 pesanan/pelanggan
4. Pelanggan dengan pesanan TERBANYAK
cek data: Budi = 4 pesanan
4 pesanan (maksimum)
5. Pesanan dengan pelanggan >1
periksa: tidak ada 1 pesanan dimiliki 2 pelanggan
0 pesanan ganda
Karena rata-rata >1 pesanan/pelanggan (langkah 3) dan tidak ada pesanan ganda (langkah 5), kardinalitas terkonfirmasi 1:N — bukan 1:1 atau N:M.
Hitung dari Nol: Jumlah Baris Detail_Pesanan
Pesanan #101 berisi 3 jenis produk berbeda, Pesanan #102 berisi 1 jenis produk. Berapa total baris di tabel Detail_Pesanan untuk 2 pesanan ini?
Langkah
Perhitungan
Nilai
1. Baris untuk Pesanan #101
1 baris per kombinasi (pesanan, produk)
3 baris
2. Baris untuk Pesanan #102
1 baris per kombinasi (pesanan, produk)
1 baris
3. Total baris Detail_Pesanan
3 + 1
4 baris
4. Verifikasi composite key unik
pasangan (id_pesanan, id_produk) tidak ada yang sama
4 pasangan unik
Kalau tabel Detail_Pesanan tidak ada, kita terpaksa membuat kolom "produk1, produk2, produk3..." di tabel Pesanan — ini pelanggaran desain yang akan diperbaiki di materi normalisasi (Pertemuan 6–7).
Kesalahan Umum Pemula saat Menggambar ER
KESALAHAN 1
ATRIBUT JADI ENTITAS
Membuat entitas terpisah untuk "Kota" atau "Warna" padahal itu cukup jadi atribut biasa di dalam entitas induknya.
KESALAHAN 2
LUPA TABEL PENGHUBUNG
Menggambar garis kaki-ayam langsung di kedua ujung relasi N:M tanpa entitas penghubung di tengah.
KESALAHAN 3
PRIMARY KEY GANDA
Menetapkan dua atribut berbeda sebagai primary key di entitas yang sama — PK harus satu (atau satu set komposit).
KESALAHAN 4
ARAH BACA TERBALIK
Membaca simbol kardinalitas dari sisi kotak terdekat, bukan menyeberang ke entitas lawan (lihat Slide 8).
Bagian 4 dari 4
Latihan Mandiri & Persiapan Minggu Depan
Sekarang giliran Anda merancang diagram ER sendiri, lalu kita lihat sekilas apa yang menanti di Pertemuan 5.
Latihan Mandiri: Rancang ER Perpustakaan Kampus
"Sistem perpustakaan mencatat anggota (nama, no_anggota, email) yang bisa meminjam banyak buku (judul, pengarang, no_isbn). Setiap peminjaman dicatat tanggal_pinjam dan tanggal_kembali. Satu buku bisa dipinjam banyak anggota berbeda di waktu yang berbeda-beda."
TUGAS 1
Identifikasi 2 entitas utama + atribut & primary key masing-masing.
TUGAS 2
Tentukan apakah relasinya 1:N atau N:M — jelaskan alasannya.
TUGAS 3
Kalau N:M, gambar tabel penghubung-nya beserta atributnya.
Waktu kerja: 10 menit, boleh berdiskusi berpasangan. Kumpulkan sketsa di kertas untuk dibahas bersama.
Pembahasan: Kunci Jawaban Latihan Perpustakaan
JAWABAN YANG DIHARAPKAN
Relasinya N:M karena "satu buku bisa dipinjam banyak anggota di waktu berbeda" — kalimat kunci di deskripsi soal. Tabel penghubung Peminjaman menyimpan tanggal sebagai atribut relasi.
Checklist Verifikasi Diagram ER Sebelum Dianggap "Selesai"
No
Pertanyaan Verifikasi
Jika "Tidak"
1
Apakah setiap entitas punya tepat satu primary key?
Tambahkan surrogate key (id_...)
2
Apakah semua relasi N:M sudah pakai tabel penghubung?
Sisipkan entitas junction baru
3
Apakah setiap relasi punya kardinalitas yang jelas di kedua ujung?
Tambahkan simbol Crow's Foot yang hilang
4
Apakah tidak ada atribut yang seharusnya jadi entitas sendiri?
Pisahkan jadi entitas baru
5
Apakah nama entitas & atribut konsisten (huruf kecil, snake_case)?
Samakan konvensi penamaan
Rangkuman: Cheat Sheet Diagram ER
Istilah
Arti Singkat
Simbol
Entitas
Objek yang datanya dicatat
Kotak persegi panjang
Atribut
Karakteristik entitas
Daftar di dalam kotak
Primary Key
Kunci unik identitas baris
🔑 di baris teratas
Foreign Key
Rujukan ke PK entitas lain
🔑 + label (FK)
Kardinalitas 1:N
Satu induk, banyak anak
Garis tegak ↔ kaki ayam
Kardinalitas N:M
Perlu tabel penghubung
Kaki ayam ↔ kaki ayam (via junction)
Posisi Hari Ini dalam Peta Besar Mata Kuliah
SUDAH DIPELAJARI (P1–P4)
Konsep dasar basis data & arsitektur
Model data konseptual (ER, EER)
Konstruksi diagram ER lengkap ← hari ini
MINGGU DEPAN (P5)
Analisis relasi & kompleksitas antar-entitas
Persiapan konversi ER → skema relasional
Latihan kasus tambahan yang lebih kompleks
Tugas rumah: lengkapi diagram ER perpustakaan dari latihan tadi dalam bentuk digital (boleh pakai draw.io/dbdiagram.io atau gambar tangan discan), kumpulkan sebelum pertemuan berikutnya.