Cara Membuat Skema Database dari PRD Sebelum Ngoding
7 menit baca · Diperbarui 2026-07-22
Pola yang sering kejadian: kamu lempar PRD ke agent, dia langsung bikin tabel sambil ngoding. Fitur pertama pakai kolom userId, fitur ketiga tiba-tiba user_id, dan tabel pesanan menyimpan nama produk sebagai teks padahal produk sudah punya id sendiri di tempat lain. Datanya berantakan sebelum app-nya kelar.
Cara mencegahnya sederhana: turunkan skema data dari PRD dulu, sebelum satu baris kode ditulis. Skema itu daftar entitas, kolom beserta tipenya, dan relasi antar entitas. Begitu skema beres, kamu serahkan ke agent bareng PRD-nya, dan dia tinggal mengikuti, bukan menebak.
Skema dulu, ngoding belakangan
PRD menjawab apa yang app lakukan. Skema menjawab bagaimana datanya disusun, dan itu dua hal berbeda. Kalau PRD-mu masih mentah, rapikan dulu supaya entitasnya kelihatan (lihat apa itu PRD dan cara membuat PRD untuk aplikasi). Skema yang baik lahir dari PRD yang jelas.
Langkah 1: Tarik entitas dari PRD
Entitas adalah benda yang datanya kamu simpan dan kelola. Baca PRD, tandai kata benda yang mengendap jadi data, bukan yang cuma tampilan atau aksi. Kalau PRD-mu masih berupa cerita fitur yang panjang, ubah dulu jadi deskripsi yang enak dibaca mesin (lihat cara menjelaskan ide aplikasi ke AI).
- Tandai kata benda yang disimpan: pelanggan, produk, pesanan, transaksi, pengguna.
- Buang kata benda yang cuma layar atau tombol, misalnya dashboard atau tombol simpan. Itu bukan data.
- Gabungkan sinonim. Pembeli dan customer biasanya satu entitas yang sama.
- Tiap entitas yang tersisa nanti jadi satu tabel, atau satu tab kalau kamu pakai Sheets.
Langkah 2: Tentukan kolom dan tipenya
Untuk tiap entitas, daftar atributnya jadi kolom, lalu beri tipe. Tipe yang jelas sekarang menyelamatkanmu dari bug penyortiran dan penjumlahan nanti. Ini kumpulan tipe yang menutupi hampir semua app sederhana:
- Teks: nama, alamat, catatan, dan hampir semua id.
- Angka: harga, qty, total. Bedakan bilangan bulat dan desimal kalau perlu.
- Tanggal atau waktu: simpan sebagai nilai tanggal asli, bukan teks, supaya bisa diurut dan dihitung selisihnya.
- Boolean: status ya-tidak seperti lunas atau aktif.
- Enum atau pilihan tetap: status pesanan, role pengguna. Tulis daftar nilai sahnya biar agent tidak mengarang, misalnya baru, dibayar, batal.
- Kunci: tiap entitas butuh satu kolom identitas unik. Ini yang dipakai relasi untuk saling menunjuk.
Langkah 3: Petakan relasi antar entitas
Relasi menjelaskan bagaimana entitas saling terhubung. Salah memetakan ini bikin data ganda dan susah di-update. Ada tiga bentuk yang perlu kamu kenali:
- Satu ke satu: jarang. Kalau muncul, biasanya kedua entitas bisa digabung jadi satu.
- Satu ke banyak: paling umum. Satu pelanggan punya banyak pesanan. Simpan id induk di entitas anak, jadi Pesanan menyimpan kolom pelanggan_id.
- Banyak ke banyak: butuh entitas penghubung. Siswa dan Kelas dihubungkan lewat tabel Pendaftaran yang menyimpan siswa_id dan kelas_id.
Contoh: app catat pesanan sederhana
Gabungkan tiga langkah tadi jadi satu dokumen ringkas, sering disebut kamus data. Ini contoh untuk app pencatat pesanan warung. Perhatikan tiap kolom punya tipe, tiap entitas punya kunci, dan relasi ditulis eksplisit lewat kolom id.
Pelanggan
id teks (kunci, unik)
nama teks
no_hp teks
dibuat tanggal
Produk
id teks (kunci, unik)
nama teks
harga angka
stok angka
Pesanan
id teks (kunci)
tanggal tanggal
pelanggan_id teks (-> Pelanggan.id)
status enum (baru | dibayar | batal)
total angka
ItemPesanan
id teks (kunci)
pesanan_id teks (-> Pesanan.id)
produk_id teks (-> Produk.id)
qty angka
subtotal angka
Relasi:
Pelanggan (1) -> Pesanan (banyak) via pelanggan_id
Pesanan (1) -> ItemPesanan (banyak) via pesanan_id
Produk (1) -> ItemPesanan (banyak) via produk_idApp Google Sheets: skema sama dengan struktur tab
Di app Google Apps Script, spreadsheet itu database-mu dan tiap tab jadi satu tabel. Entitas jadi nama tab, daftar kolom jadi baris header, dan foreign key cukup satu kolom yang menyimpan id dari tab lain. Kamus data di atas berubah jadi empat tab: Pelanggan, Produk, Pesanan, ItemPesanan. Kalau kamu baru di sini, mulai dari dasar GAS dan cara baca-tulis data Sheet.
function setupSheets() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const skema = {
Pelanggan: ['id', 'nama', 'no_hp', 'dibuat'],
Produk: ['id', 'nama', 'harga', 'stok'],
Pesanan: ['id', 'tanggal', 'pelanggan_id', 'status', 'total'],
ItemPesanan: ['id', 'pesanan_id', 'produk_id', 'qty', 'subtotal']
};
Object.keys(skema).forEach(function (nama) {
let sheet = ss.getSheetByName(nama);
if (!sheet) sheet = ss.insertSheet(nama);
const header = skema[nama];
// tulis header borongan sekali jalan, bukan per sel
sheet.getRange(1, 1, 1, header.length).setValues([header]);
sheet.setFrozenRows(1);
});
}Setelah tab-nya jadi, rancang jalur masuk datanya: lewat web app yang dipanggil dari halaman, form input dari HP, atau script terjadwal untuk isian rutin. Kalau volumenya besar, cek batas kuota GAS supaya skemamu tidak menabrak limit.
Buat PRD Web GAS gratis di Skematik →Serahkan skema ke agent biar konsisten
Skema hanya berguna kalau agent benar-benar memakainya. Taruh kamus data di dalam PRD, atau di file terpisah yang kamu sebut di prompt, lalu minta agent memakainya sebagai acuan. Ini yang wajib ada di dalamnya:
- Daftar entitas lengkap dengan kolom dan tipe, di satu tempat.
- Relasi antar entitas beserta kolom kunci yang menghubungkannya.
- Nilai enum yang sah untuk setiap kolom berstatus.
- Satu konvensi penamaan, pilih snake_case atau camelCase dan jangan dicampur.
- Khusus Sheets: nama tab persis, isi baris header, dan kolom mana yang jadi kunci.
Skematik bisa menyusun ini untukmu: dari deskripsi ide, ia menurunkan PRD berikut entitas dan struktur datanya. Di mode Web GAS, PRD-nya langsung memuat struktur tab spreadsheet, daftar fungsi server, dan konvensi sadar-batasan GAS, plus export setup-sheets.gs biar tab-nya tinggal dibuat. Kalau mau lihat bentuk jadinya, template KasirSheet sudah membawa skema kasir yang rapi untuk kamu contek.
Lihat contoh PRD Web GAS (KasirSheet) →