Kita telah menempuh dua belas section materi SQLite, mulai dari Pengenalan SQLite hingga SQLite di Produksi. Proyek ini adalah tempat materi inti tersebut dipakai membangun satu database utuh dari nol: katalog perpustakaan untuk satu ruang baca kecil. Seorang pustakawan memakai database ini untuk mencatat koleksi buku beserta rak dan kategorinya, mendaftarkan anggota, mencatat setiap peminjaman, dan menjawab pertanyaan harian seperti “buku apa yang belum kembali?” dan “siapa yang melewati jatuh tempo?”.
Database yang selesai terdiri dari empat berkas SQL yang dibangun bertahap:
schema.sql— lima tabel dengan constraint dan aturan foreign key,seed.sql— data awal: empat rak, enam kategori, lima belas judul buku, lima anggota, enam peminjaman,laporan.sql— enam laporan siap baca yang dijalankan dengan satu perintah,optimasi.sql— tujuh index, dua view, dan statistik untuk query planner.
Tampilan Sesi Akhir #
Empat perintah berikut membangun perpustakaan.db dari nol. Setiap berkas mengasumsikan berkas sebelumnya sudah dijalankan:
sqlite3 perpustakaan.db < schema.sql
sqlite3 perpustakaan.db < seed.sql
sqlite3 perpustakaan.db < laporan.sql
sqlite3 perpustakaan.db < optimasi.sqllaporan.sql mencetak enam laporan lengkap yang kita bedah pada Bagian 3. Sesi singkat berikut memperlihatkan keadaan akhir database: satu query pada view, lalu dua pemeriksaan integritas:
sqlite> SELECT COUNT(*) AS jumlah_buku FROM buku;
15
sqlite> .headers on
sqlite> .mode column
sqlite> SELECT judul, peminjam, jatuh_tempo FROM v_peminjaman_aktif;
judul peminjam jatuh_tempo
------ ------------ -----------
Kosmos Budi Santoso 2025-06-09
sqlite> PRAGMA foreign_key_check;
sqlite> PRAGMA integrity_check;
integrity_check
---------------
ok
sqlite>Tampilan tersebut ramping, tetapi di baliknya tersimpan keputusan desain yang menjadi inti proyek ini: normalisasi kategori ke tabel terpisah, aturan ON DELETE pada setiap foreign key, laporan berbasis JOIN lintas tiga tabel, serta index yang dibuktikan efeknya lewat EXPLAIN QUERY PLAN.
Tujuan Pembelajaran #
Setelah menyelesaikan proyek ini, kita mampu:
- menerjemahkan kebutuhan pengguna menjadi lima tabel dengan relasi one-to-many yang tepat,
- mengunci integritas data dengan
NOT NULL,UNIQUE,CHECK, dan foreign key, termasuk memilih aksiON DELETE, - mengisi data secara deterministik dengan
INSERTmulti-baris di dalam satu transaction, - menulis laporan dengan
JOIN,GROUP BY, subquery, serta fungsi tanggaljulianday()dandate(), - memilih index berdasarkan pola akses nyata lalu membuktikan efeknya dengan
EXPLAIN QUERY PLANdanANALYZE, - membungkus query berulang menjadi view supaya pemakai database tidak menulis
JOINpanjang berulang kali.
Prasyarat #
Proyek ini tidak memperkenalkan materi baru, melainkan memakai materi yang sudah dibahas. Chapter yang paling sering dirujuk:
- Membuat Tabel dengan CREATE TABLE serta Constraint pada Tabel — definisi tabel dan penegakan
NOT NULL,UNIQUE, danCHECK, - Foreign Key — penegakan per koneksi dan aksi
ON DELETE, - Memasukkan Data dengan INSERT — pola
INSERTsatu baris dan banyak baris, - Menggabungkan Tabel dengan JOIN serta Operator Lanjutan: IN, BETWEEN, IS NULL — query lintas tabel dan pemeriksaan
NULL, - Fungsi Agregat dan Mengelompokan Hasil dengan GROUP BY dan HAVING — statistik koleksi,
- Bekerja dengan Tanggal dan Waktu — aritmetika
julianday()dandate(), - Index dan Pencarian Cepat, View, serta Menganalisis Query dengan EXPLAIN QUERY PLAN — materi optimasi Bagian 4.
Tahapan Pengerjaan #
Proyek dikerjakan dalam empat bagian berurutan. Setiap bagian menghasilkan database yang dapat dipakai penuh:
- Bagian 1: Desain Skema — memutuskan lima tabel, kolom-kolomnya, dan constraint-nya, lalu menulis
schema.sqldan menguji bahwa penegakannya benar-benar bekerja. - Bagian 2: Data Awal — mengisi
seed.sqldengan data perpustakaan yang realistis dan memverifikasi isinya lewat jumlah baris serta pemeriksaan titik. - Bagian 3: Query dan Laporan — menyusun enam laporan harian pustakawan dalam
laporan.sql, dari daftar koleksi hingga peminjaman terlambat. - Bagian 4: Index dan View — menambahkan index dan view dalam
optimasi.sql, membuktikan efeknya lewatEXPLAIN QUERY PLANdanANALYZE, lalu menutup proyek dengan pemeriksaan integritas.
Mulailah dari Bagian 1 dan ikuti urutannya karena setiap bagian dibangun di atas berkas bagian sebelumnya.
Berkas Sumber #
Berkas sumber setiap bagian tersedia pada bagian Berkas Sumber di bawah halaman bagian yang bersangkutan. Daftar berkas bersifat kumulatif: Bagian 2 memuat schema.sql dan seed.sql, Bagian 3 menambahkan laporan.sql, dan Bagian 4 memuat keempat berkas sekaligus — keadaan lengkap proyek pada tahap tersebut. Nama database yang dipakai di seluruh proyek adalah perpustakaan.db.
Rancang skema lima tabel katalog perpustakaan lengkap dengan constraint, foreign key, dan aturan penghapusan.
Buka → # Bagian 2: Data AwalIsi database dengan data awal yang realistis: rak, kategori, lima belas buku, anggota, dan enam peminjaman.
Buka → # Bagian 3: Query dan LaporanSusun query laporan harian perpustakaan: daftar buku, peminjaman aktif, riwayat, statistik, dan keterlambatan.
Buka → # Bagian 4: Index dan ViewTambahkan index dan view lalu buktikan efeknya dengan EXPLAIN QUERY PLAN, ANALYZE, dan pemeriksaan integritas.
Buka →