Database and SQL Fundamental MySQL 1
π§© Pertemuan 1 β Entity Relationship Diagram (ERD)
π― Tujuan Pembelajaran
Setelah pertemuan ini, kamu diharapkan mampu:
- Memahami konsep dasar ERD dan mengapa ERD penting dalam perancangan database.
- Mengenal komponen-komponen ERD: Entity, Attribute, dan Relationship.
- Memahami jenis-jenis relasi (Cardinality): One-to-One, One-to-Many, Many-to-Many.
- Membaca dan menggambar ERD sederhana dari studi kasus nyata.
- Mengkonversi ERD menjadi struktur tabel (DDL) di MySQL.
π 1. Apa itu ERD?
ERD (Entity Relationship Diagram) adalah diagram yang menggambarkan hubungan antar entitas (objek) dalam sebuah sistem database sebelum database tersebut dibangun.
ERD berfungsi sebagai blueprint atau cetak biru database β sama seperti denah rumah sebelum bangunan didirikan.
π‘ Analogi: Kalau database adalah sebuah kota, ERD adalah peta kota tersebut yang menunjukkan gedung-gedung (entitas) dan jalan-jalan yang menghubungkannya (relasi).
π 2. Komponen ERD
πΉ Entity (Entitas)
Entitas adalah objek nyata atau abstrak yang datanya ingin kita simpan. Digambarkan dengan persegi panjang.
Contoh: Mahasiswa, Mata Kuliah, Dosen, Produk, Pelanggan
πΉ Attribute (Atribut)
Atribut adalah karakteristik atau properti dari sebuah entitas. Digambarkan dengan elips/oval.
Contoh atribut Mahasiswa: NIM, Nama, Alamat, Tanggal Lahir
Jenis-jenis atribut:
| Jenis Atribut | Keterangan | Contoh |
|---|---|---|
| Key Attribute | Nilai unik, identifier | NIM, ID_Produk |
| Simple Attribute | Nilai tunggal, tidak bisa dibagi | Nama, Harga |
| Composite Attribute | Bisa dipecah jadi beberapa bagian | Alamat β Jalan, Kota, Kode Pos |
| Derived Attribute | Nilainya diturunkan dari atribut lain | Umur (dari Tanggal Lahir) |
| Multi-valued Attribute | Bisa memiliki banyak nilai | Nomor Telepon |
πΉ Relationship (Relasi)
Relasi menggambarkan hubungan antar entitas. Digambarkan dengan belah ketupat.
Contoh: Mahasiswa mengambil Mata Kuliah, Pelanggan memesan Produk.
π 3. Cardinality (Kardinalitas)
Kardinalitas menentukan berapa banyak instance suatu entitas yang berhubungan dengan instance entitas lain.
One-to-One (1:1)
Satu instance entitas A berhubungan dengan tepat satu instance entitas B.
1 | Mahasiswa (1) βββββββ memiliki βββββββ (1) KartuMahasiswa |
Contoh: Satu mahasiswa hanya memiliki satu kartu mahasiswa, dan satu kartu mahasiswa hanya dimiliki oleh satu mahasiswa.
One-to-Many (1:N)
Satu instance entitas A berhubungan dengan banyak instance entitas B.
1 | Dosen (1) βββββββ mengajar βββββββ (N) Mata Kuliah |
Contoh: Satu dosen bisa mengajar banyak mata kuliah, tapi satu mata kuliah hanya diajarkan oleh satu dosen.
Many-to-Many (M:N)
Banyak instance entitas A berhubungan dengan banyak instance entitas B.
1 | Mahasiswa (M) βββββββ mengambil βββββββ (N) Mata Kuliah |
Contoh: Satu mahasiswa bisa mengambil banyak mata kuliah, dan satu mata kuliah bisa diambil oleh banyak mahasiswa.
β οΈ Catatan: Relasi Many-to-Many di database harus dipecah menggunakan tabel perantara (junction table) ketika diimplementasikan.
π 4. Notasi ERD
Ada beberapa notasi ERD yang umum digunakan:
| Notasi | Keterangan |
|---|---|
| Chen Notation | Notasi klasik dengan elips, persegi, belah ketupat |
| Crowβs Foot Notation | Notasi modern yang lebih mudah dibaca, digunakan di tools seperti MySQL Workbench |
| UML Notation | Menggunakan class diagram |
Pada course ini kita akan menggunakan Crowβs Foot Notation karena paling umum digunakan di industri.
Simbol Crowβs Foot
1 | |βββββ Tepat satu (mandatory one) |
π 5. Konversi ERD ke Tabel MySQL
Aturan Konversi:
- Setiap entitas β satu tabel
- Atribut entitas β kolom pada tabel tersebut
- Key attribute β PRIMARY KEY
- Relasi 1:N β tambahkan Foreign Key di sisi βbanyakβ
- Relasi M:N β buat tabel perantara (junction table) dengan dua Foreign Key
- Relasi 1:1 β tambahkan Foreign Key di salah satu tabel
π§βπ» LATIHAN 1 β Analisis ERD
Studi Kasus: Sistem Perpustakaan
Baca deskripsi berikut, kemudian identifikasi entitas, atribut, dan relasinya.
Perpustakaan BINUS memiliki anggota yang dapat meminjam buku. Setiap anggota memiliki ID anggota, nama, alamat, dan nomor telepon. Setiap buku memiliki ISBN, judul, nama pengarang, tahun terbit, dan jumlah stok. Anggota dapat meminjam banyak buku, dan satu buku dapat dipinjam oleh banyak anggota di waktu yang berbeda. Setiap peminjaman mencatat tanggal pinjam dan tanggal kembali.
Pertanyaan:
- Identifikasi minimal 3 entitas dari deskripsi di atas!
- Tuliskan minimal 3 atribut untuk masing-masing entitas!
- Identifikasi relasi antar entitas dan tentukan kardinalitasnya!
- Tentukan atribut mana yang menjadi Primary Key!
π§βπ» LATIHAN 2 β Membaca ERD
Perhatikan ERD berikut untuk sistem e-commerce sederhana:
1 | βββββββββββββ ββββββββββββββββ βββββββββββ |
Pertanyaan:
- Ada berapa entitas dalam ERD di atas?
- Jelaskan mengapa tabel
DETAIL_PESANANdiperlukan! - Apa jenis relasi antara
PELANGGANdanPESANAN? - Apa jenis relasi antara
PESANANdanPRODUK? - Kolom apa saja yang menjadi Foreign Key? Dan merujuk ke tabel mana?
π§βπ» LATIHAN 3 β Konversi ERD ke SQL MySQL
Berdasarkan ERD di Latihan 2, implementasikan struktur tabelnya menggunakan MySQL:
1 | -- Buat database terlebih dahulu |
Isi tabel-tabel tersebut dengan minimal 5 data tiap tabel, kemudian jalankan query SELECT * FROM untuk setiap tabel.
π§βπ» LATIHAN 4 β Merancang ERD dari Nol
Pilih SALAH SATU studi kasus berikut, kemudian:
- Identifikasi semua entitas, atribut, dan relasinya
- Gambar ERD-nya (bisa di kertas, draw.io, atau MySQL Workbench)
- Konversikan ERD menjadi script SQL MySQL (CREATE TABLE lengkap dengan PK, FK, dan constraint)
- Isi dengan minimal 5 data per tabel
- Tampilkan semua data dengan SELECT
Pilihan Studi Kasus:
A. Sistem Akademik
Kampus memiliki mahasiswa yang terdaftar di jurusan tertentu. Mahasiswa mengambil mata kuliah yang diajarkan oleh dosen. Nilai mahasiswa dicatat per mata kuliah per semester.
B. Sistem Rumah Sakit
Rumah sakit memiliki dokter dari berbagai spesialisasi. Pasien bisa melakukan konsultasi dengan dokter. Setiap konsultasi mencatat keluhan, diagnosa, dan resep obat.
C. Sistem Toko Online
Toko memiliki kategori produk dan produk. Pelanggan bisa membuat pesanan berisi beberapa produk. Setiap produk memiliki ulasan dari pelanggan yang pernah membeli.
π§βπ» LATIHAN 5 β Identifikasi Kesalahan ERD
Perhatikan desain tabel berikut yang BURUK. Identifikasi masalahnya dan perbaiki dengan ERD yang benar!
1 | -- Desain BURUK - jangan ditiru! |
Pertanyaan:
- Apa saja masalah pada desain tabel di atas? (minimal 4 masalah)
- Gambarkan ERD yang benar untuk kasus transaksi toko!
- Tulis ulang script SQL yang benar berdasarkan ERD yang kamu buat!
π§βπ» LATIHAN 6 β Normalisasi Sederhana
Perhatikan tabel berikut (belum ternormalisasi):
| id_transaksi | nama_pelanggan | produk | kategori | qty | harga | |
|---|---|---|---|---|---|---|
| 1 | Andi | [email protected] | Laptop | Elektronik | 1 | 8000000 |
| 1 | Andi | [email protected] | Mouse | Aksesoris | 2 | 150000 |
| 2 | Budi | [email protected] | Keyboard | Aksesoris | 1 | 350000 |
| 3 | Andi | [email protected] | Monitor | Elektronik | 1 | 3000000 |
Tugas:
- Identifikasi anomali pada tabel di atas (insert anomaly, update anomaly, delete anomaly)!
- Pecah tabel tersebut menjadi beberapa tabel yang ternormalisasi (minimal 1NF dan 2NF)!
- Gambar ERD dari hasil normalisasi!
- Implementasikan dalam SQL MySQL!
π§© TUGAS PERORANGAN
Estimasi waktu: Β±2 jam
πΉ Instruksi:
Buatlah ERD untuk sistem manajemen Rental Kendaraan dengan ketentuan:
- Sistem harus memiliki minimal 4 entitas (contoh:
Pelanggan,Kendaraan,Rental,Kategori_Kendaraan) - Setiap entitas minimal memiliki 5 atribut
- Terdapat minimal 3 relasi dengan kardinalitas yang beragam
- Gambar ERD (gunakan draw.io, MySQL Workbench, atau tulis tangan)
- Konversikan ERD menjadi script SQL MySQL lengkap:
CREATE DATABASECREATE TABLEdengan PK, FK, constraint yang sesuaiINSERT INTOdengan minimal 10 data per tabelSELECTuntuk menampilkan isi setiap tabel
πΎ Hasil yang dikumpulkan:
- File gambar ERD (
.pngatau.pdf) - File SQL:
Pertemuan1_Nama.sql
π Refleksi
Setelah pertemuan ini, jawab pertanyaan berikut:
- Mengapa ERD perlu dibuat sebelum membuat database?
- Apa bedanya relasi One-to-Many dan Many-to-Many? Berikan contoh masing-masing!
- Mengapa relasi Many-to-Many perlu dipecah menjadi tabel perantara?
- Apa yang dimaksud dengan Primary Key dan Foreign Key? Mengapa keduanya penting?
π Referensi Tambahan
- MySQL Documentation: https://dev.mysql.com/doc/
- draw.io untuk membuat ERD: https://app.diagrams.net/
- MySQL Workbench (gratis, untuk desain ERD visual): https://www.mysql.com/products/workbench/
- W3Schools SQL: https://www.w3schools.com/sql/




