Lewati ke konten
Skematik

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_id

App 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) →
Membuat Skema Database dari PRD Sebelum Ngoding — Skematik