Dalam menyusun sebuah database transaksi, pada saat mendesain tabel yang akan digunakan untuk transaksi, yang perlu anda perhatikan adalah: bahwa ada dua kategegori transaksi berdasarkan jumlah data record yang disimpan setiap kali terjadi transaksi, yaitu 1 record atau lebih dari 1 record.

Jika data yang disimpan hanya 1 record setiap transaksi, maka cukup menggunakan 1 tabel dan ini jarang sekali terjadi pada sebuah transaksi; Sebagai gambaran pada saat terjadi transaksi penjualan tentu tidak hanya menyimpan 1 record saja, tetapi bisa lebih dari 1 record, seandainya jumlah barang yang terjual lebih dari 1.

Pada artikel ini akan membahasa tentang, bagaimana mendesain tabel transaksi yang baik dan mudah digunakan dalam aplikasi baik untuk kebutuhan input, edit, hapus ataupun laporan.

Konsep Desain Tabel Transaksi

Perlu digambarkan terlebih dahulu secara umum bahwa sebuah transaksi mengandung 2 kelompok data yang akan disimpan dalam tabel (yang saya beri istilah seperti sebuah artikel) yaitu:

Data Header

  • Data header terdiri dari data unik setiap transaksi yang terjadi dan hanya menyimpan 1 record setiap kali terjadi transaksi. Misalkan transaksi penjualan, maka akan menyimpan data Nomor Penjualan, Tanggal Penjualan, Jam Penjualan, Customer, Operator, Total Penjualan dan Total Pembayaran. Data header tersebut setiap record secara keseluruhan (distinct) tidak ada yang sama, dan akan dibedakan dengan sebuah data unik (bisa 1 field atau lebih). Misalkan data header penjualan akan dibedakan setiap transaksinya berdasar Nomor Penjualan.
  • Dengan penjelasan dan contoh tersebut diatas, maka secara definitif Nomor Penjualan adalah Index Key yang Unique.
    Perlu diperhatikan bahwa setiap anda menyusun sebuah tabel yang digunakan untuk menyimpan data header transaksi, selalu anda berikan kondisi/setting field Index Key dari tabel tersebut, karena hal ini juga akan berpengaruh terdapat kecepatan dalam pencarian, join tabel dan tentu dalam kebutuhan dalam mempercepat proses laporan yang mengharuskan mengambil sebagian data tabel yang jumlah recordnya sangat banyak.
  • Dalam memberikan Index Key dan Unique pada saat setting tabel transaksi, selain berfungsi secara pasti untuk memberikan efek kecepatan dalam pencairan, join dan kebutuhan pengambilan recordset untuk laporan dan lain-lain, juga dapat berfungsi sebagai pelapis validasi terhadap program aplikasi yang akan anda susun, yaitu validasi saat penyimpanan sebuah data transaksi secara bersamaan oleh 1 atau lebih PC yang dalam waktu bersamaan akan memproses penyimpanan data transaksi dengan Nomor Penjualan yang bersifat counter.
  • Dengan sebagai pelapis pelapis tersebut, maka pada saat terjadi kesalahan program karena tidak mampu memvalidasi Nomor Penjualan yang Unique, maka mesin database yang akan melakukannya, sehingga penyimpanan akan dibatalkan dan dimunculkan error yang bisa anda pakai sebagai trapping error.

Data Detail

  • Data detail adalah merupakan bagian kedua dari data transaksi, yaitu berupa informasi data detail dari item-item transaksi, misalkan sebuah transaksi penjualan, maka akan menyimpan data Nomor Penjualan, Kode Barang, Satuan, Jumlah Penjualan, Harga Satuan, Discount Barang dan Total Harga. Data detail harus ada kunci relasi ke data header transaksi sebagai pedoman untuk melakukan pembacaan, penghapusan, edit data setiap transaksi yang terjadi. Dalam contoh diatas kunci relasi nya adalah Nomor Penjualan. Tetapi perlu anda perhatikan bahwa Nomor Penjualan hanya berfungsi sebagai kunci relasi saja, bukan sebagai kunci index.
  • Pada data detail ini bisa disetting menggunakan kunci index atau tidak, tergantung dari kebutuhan sistem yang ada; jika setiap transaksi tidak boleh ada kode barang yang kembar, maka bisa kita beri setting kunci index nya adalah: Nomor Penjualan dan Kode Barang.
  • Satu lagi yang perlu diperhatikan dalam menyusun tabel data detail transaksi, berikan 1 field untuk menyimpan data urutan barang setiap transaksi, karena pada saat pengambilan data, maka Recordset yang anda dapatkan belum tentu akan terproses secara urut, maka harus kita sort dalam query (ORDER BY).

Sebagai gambaran data transaksi perhatikan gambar berikut dibawah ini:


Contoh Struktur Tabel dan Relasi

Berikut ini saya akan memberikan contoh struktur tabel transaksi penjualan dan master pendukungnya (Master Barang dan Master Customer).




Artikel ini hanyalah salah satu konsep yang saya kembangkan dan bukan merupakan satu-satu nya konsep, karena dalam penyusunan sebuah tabel untuk transaksi khususnya, bisa memunculkan banyak versi konsep.

Berdasarkan pengalaman saya, konsep ini yang paling relevan dalam mengelompokan data dan mudah digunakan baik dalam proses editing data transaksi sampai dengan penggunaan pembuatan laporan.

Foto oleh: unsplash.com