stdsquare²
🎓 Kelas
stdsquare / materi / slides / pertemuan-09
Tema
Japan
Arcade
Dark Retro
Font
‹ Daftar slide Pertemuan 9: Perancangan dan pengelolaan struktur database yang mendukung aplikasi
Mata Kuliah Lab Pemrograman • Bisnis Digital

Merancang "Lemari Arsip" Data Aplikasi

Pertemuan 9 — Perancangan dan Pengelolaan Struktur Database yang Mendukung Aplikasi

REST API yang Anda bangun minggu lalu perlu tempat menyimpan data yang rapi, konsisten, dan tidak dobel. Hari ini kita belajar merancang struktur database sejak nol: dari tabel, kolom, relasi, sampai aturan yang menjaga data tetap bersih.

RPS MINGGU 10 • DURASI 2 × 50 MENIT

Tujuan Pembelajaran Hari Ini

Setelah Pertemuan 8 menghasilkan REST API yang berfungsi, hari ini fokus pada fondasi data di baliknya:

CAPAIAN 1 — STRUKTUR
MERANCANG TABEL
Memahami konsep tabel, kolom, dan baris, serta cara memecah informasi bisnis menjadi tabel-tabel yang tertata.
CAPAIAN 2 — RELASI
MENGELOLA RELASI
Menerapkan primary key dan foreign key untuk menghubungkan tabel tanpa data ganda.
Sub-CPMK Minggu 10: mahasiswa mampu merancang dan mengelola struktur database sederhana yang mendukung fungsionalitas aplikasi.
Bagian 1 dari 3
Dari Catatan Berantakan ke Tabel Rapi
Mengapa aplikasi tidak bisa hanya menyimpan data di satu daftar panjang, dan bagaimana database memecahnya menjadi bagian-bagian yang teratur.

Apa Itu Database?

Database adalah tempat penyimpanan data terstruktur yang dikelola aplikasi agar bisa disimpan, dicari, diubah, dan dihapus secara konsisten — berbeda dengan file teks biasa.

TANPA DATABASE
FILE CATATAN.TXT
Semua data dicampur dalam satu berkas. Sulit dicari, mudah terjadi duplikasi (data yang sama tertulis berkali-kali), dan rawan tidak konsisten.
DENGAN DATABASE
TABEL TERSTRUKTUR
Data dipecah ke dalam tabel bertopik jelas (pengguna, produk, pesanan) dan bisa dicari dalam sekejap lewat perintah query.
Glosarium — query: perintah terstruktur untuk meminta, menambah, mengubah, atau menghapus data dari database, misalnya "tampilkan semua produk dengan harga di bawah Rp 100.000".

Anatomi Sebuah Tabel

Setiap tabel database tersusun dari kolom (jenis informasi) dan baris (satu data lengkap), mirip lembar Excel yang sudah diberi aturan ketat.

// Tabel: produk
id | nama | harga | stok
1 | Tas Rotan | 150000 | 12
2 | Batik Semarangan| 220000 | 5
3 | Kaos UMKM | 75000 | 30
KOLOM
Jenis informasi yang sama untuk semua baris, misalnya nama atau harga. Setiap kolom punya tipe data tetap (angka, teks, tanggal).
BARIS
Satu data lengkap, misalnya satu produk. Disebut juga record — dalam contoh ini ada tiga baris/record produk.

Tipe Data: Aturan Isi Setiap Kolom

Database memaksa setiap kolom mematuhi tipe data tertentu, agar data tidak tercampur dan bisa dihitung atau diurutkan dengan benar.

INTEGER
Bilangan bulat, mis. stok = 12, id = 1.
TEXT / VARCHAR
Teks, mis. nama = "Tas Rotan".
BOOLEAN
Benar/salah, mis. tersedia = true.
Glosarium — tipe data: kategori yang menentukan jenis nilai yang boleh disimpan sebuah kolom (angka, teks, tanggal, benar/salah) — mirip aturan "kolom ini hanya boleh diisi angka" pada lembar Excel yang dikunci.

Primary Key: Kunci Identitas Setiap Baris

Primary key adalah kolom yang nilainya unik untuk setiap baris — tidak boleh ada dua baris dengan nilai primary key yang sama.

ANALOGI NOMOR INDUK MAHASISWA (NIM)
Dua mahasiswa boleh bernama sama, "Ahmad Fauzi", tapi NIM mereka pasti berbeda. Database memakai kolom seperti id sebagai "NIM" setiap baris data, agar sistem selalu tahu persis baris mana yang dimaksud.
Glosarium — primary key: kolom (atau kombinasi kolom) yang nilainya unik dan tidak boleh kosong, dipakai sebagai penanda identitas satu-satunya untuk setiap baris dalam tabel.

Hitung dari Nol: Menentukan Jumlah Kolom Tabel Pelanggan

Toko kerajinan UMKM ingin mencatat data pelanggan. Mari telusuri bagaimana kebutuhan bisnis diterjemahkan menjadi rancangan kolom.

LangkahKebutuhan BisnisKolom Ditambahkan
Identitas unik tiap pelangganwajib ada primary keyid
Sapa pelanggan dengan benarsimpan nama lengkapid, nama
Kirim struk & promosimpan kontak emailid, nama, email
Kirim paket ke rumahsimpan alamat pengirimanid, nama, email, alamat
TOTAL KOLOM TABEL PELANGGAN
4 kolom
1 primary key (id) + 3 kolom data (nama, email, alamat)
Bagian 2 dari 3
Menghubungkan Tabel dengan Foreign Key
Satu pelanggan bisa punya banyak pesanan. Bagaimana database menghubungkan tabel pelanggan dan tabel pesanan tanpa menulis ulang data pelanggan berkali-kali?

Foreign Key: Jembatan Antar-Tabel

Foreign key adalah kolom di satu tabel yang menyimpan nilai primary key dari tabel lain, untuk menghubungkan kedua tabel tanpa menyalin seluruh datanya.

// Tabel: pesanan
id | id_pelanggan | produk | total
1 | 3 | Tas Rotan | 150000
2 | 3 | Kaos UMKM | 75000
3 | 7 | Batik Semarangan | 220000
Glosarium — foreign key: kolom yang nilainya merujuk ke primary key tabel lain, dipakai untuk menyatakan relasi antar-tabel — di sini id_pelanggan pada tabel pesanan merujuk ke id pada tabel pelanggan.

Coba Sendiri: Tempatkan Foreign Key yang Tepat

Coba tentukan di tabel mana foreign key seharusnya diletakkan untuk beberapa skenario relasi, lalu lihat apakah pilihan Anda tepat.

Relasi Satu-ke-Banyak (One-to-Many)

Tabel Pelangganid (primary key)nama, email, alamatPesanan #1id_pelanggan = 3Pesanan #2id_pelanggan = 3Pesanan #3id_pelanggan = 7satu pelanggan → banyak pesanan
Pola ini disebut one-to-many — satu baris di tabel "induk" (pelanggan) bisa dirujuk oleh banyak baris di tabel "anak" (pesanan).

Coba Sendiri: Tentukan Kardinalitas Relasi

Pilih dua entitas dan coba tentukan kardinalitasnya — satu-ke-satu, satu-ke-banyak, atau banyak-ke-banyak — lalu cek jawaban Anda.

Mengapa Relasi Ini Menghindari Duplikasi?

TANPA RELASI (SATU TABEL BESAR)
Nama, email, dan alamat pelanggan ditulis ulang di setiap baris pesanan. Jika alamat pelanggan berubah, harus diedit di banyak baris sekaligus — rawan tidak konsisten.
DENGAN RELASI (DUA TABEL + FOREIGN KEY)
Data pelanggan disimpan satu kali saja di tabel pelanggan. Pesanan cukup menyimpan id_pelanggan. Ubah alamat → cukup edit satu baris.
Glosarium — normalisasi: proses merancang tabel agar setiap informasi hanya disimpan di satu tempat, mengurangi duplikasi dan risiko data yang saling bertentangan.

Hitung dari Nol: Ruang Disimpan dengan & tanpa Relasi

Toko UMKM punya 5 pelanggan, masing-masing rata-rata memesan 4 kali. Mari bandingkan berapa kali data alamat pelanggan tersimpan.

LangkahPerhitunganNilai
Total baris pesanan5 pelanggan × 4 pesanan20 baris
Tanpa relasi: alamat tersimpan di tiap baris pesanansama dengan total baris pesanan20 kali disimpan
Dengan relasi: alamat hanya di tabel pelanggan1 baris per pelanggan × 55 kali disimpan
Penghematan penyimpanan alamat(20 − 5) ÷ 20 × 10075% lebih hemat
HASIL PERBANDINGAN
75%
pengurangan duplikasi data alamat berkat foreign key
Bagian 3 dari 3
Merancang Skema Lengkap & Menjaga Integritas Data
Menyusun beberapa tabel menjadi satu skema utuh, dan mengenal aturan yang mencegah data rusak atau hilang begitu saja.

Skema Toko UMKM: Tiga Tabel Terhubung

pelangganid (PK)nama, email, alamatpesananid (PK)id_pelanggan (FK)id_produk (FK), tanggalprodukid (PK)nama, harga, stok1 : NN : 1
Tabel pesanan berada di "tengah" karena punya dua foreign key sekaligus — merujuk ke pelanggan dan ke produk yang dipesan.

Menjaga Integritas Data: Constraint

Database menyediakan constraint (aturan pembatas) agar data tetap valid dan konsisten, mencegah kesalahan sebelum terjadi.

NOT NULL
Kolom wajib diisi, tidak boleh kosong. Mis. kolom nama pada tabel pelanggan tidak boleh dibiarkan kosong.
UNIQUE
Nilai kolom tidak boleh berulang. Mis. kolom email pelanggan harus berbeda antar-baris agar tidak ada akun kembar.
Glosarium — constraint: aturan yang ditetapkan pada kolom atau tabel untuk membatasi data apa yang boleh masuk, dipakai untuk mencegah kesalahan sebelum data tersimpan.

Coba Sendiri: Uji Insert Data Melawan Constraint

Isi data pelanggan baru dan coba insert, lalu amati apakah lolos aturan NOT NULL dan UNIQUE atau ditolak database.

Studi Kasus: Merancang Skema dari Kebutuhan Bisnis

// Kebutuhan: toko UMKM ingin lacak siapa memesan apa
Tabel pelanggan: id (PK), nama, email (UNIQUE)
Tabel produk: id (PK), nama, harga, stok
Tabel pesanan: id (PK), id_pelanggan (FK), id_produk (FK), qty, tanggal (NOT NULL)
Urutan berpikir: (1) kebutuhan bisnis → (2) daftar entitas (pelanggan, produk, pesanan) → (3) kolom tiap entitas → (4) relasi lewat foreign key → (5) constraint penjaga kualitas data.

Kesalahan Umum Pemula Merancang Database

KESALAHAN 1
Satu tabel raksasa untuk semua data (pelanggan, produk, pesanan dicampur jadi satu). Menyebabkan duplikasi masif dan sulit diubah tanpa merusak data lain.
KESALAHAN 2
Lupa memberi primary key pada tabel. Tanpa primary key, aplikasi tidak bisa membedakan baris mana yang harus diedit atau dihapus dengan pasti.
Ingat: pecah data berdasarkan entitas bisnis (siapa/apa), beri primary key di tiap tabel, dan hubungkan lewat foreign key — bukan menyalin data mentah-mentah.

Latihan Praktik (30 Menit)

Rancang skema database untuk aplikasi bisnis digital pilihan Anda sendiri (kuliner, fesyen, atau jasa) dengan ketentuan berikut:

Instruksi
  • Buat minimal 3 tabel, masing-masing dengan primary key id.
  • Tambahkan minimal 1 foreign key yang menghubungkan dua tabel (relasi one-to-many).
  • Tentukan tipe data tiap kolom, dan beri constraint NOT NULL/UNIQUE minimal pada 2 kolom.
  • Gambar skemanya di kertas atau diagram sederhana, siap dipresentasikan.
Kerjakan berpasangan. Dosen akan berkeliling untuk memeriksa hasil dan menjawab pertanyaan.

Penutup & Tugas Mandiri

Tugas Sebelum Pertemuan 10
  • Rapikan skema database dari latihan praktik hari ini menjadi diagram digital (boleh pakai draw.io atau sejenisnya).
  • Tuliskan daftar kolom lengkap dengan tipe data untuk tiap tabel dalam skema Anda.
  • Baca ulang glosarium primary key, foreign key, dan constraint sebagai bekal Pertemuan 10.
Ada pertanyaan tentang relasi tabel atau constraint? Silakan diskusikan sekarang atau bawa ke sesi konsultasi.