Tulisan ini saya tulis hanya ingin berbagi kepada para administrator yang baru berkecimpung dalam dunia per-SIMDA-an. Pengetahuan saya tentang apa yang terjadi di balik database SIMDA masih belum lengkap, masih perlu banyak belajar lagi. Apa saja yang akan saya bahas di sini? Sesuai judulnya, saya akan membedah proses yang terjadi pada database SIMDA terutama permasalah-permasalahan yang sering saya temui di dalam database. Seperti yang para admin sudah ketahui, SIMDA Keuangan BPKP menggunakan Microsoft SQL Server sebagai server database. Karena SIMDA pula saya untuk pertama kali berurusan dengan Microsoft SQL Server, dari yang biasanya lebih familier dengan MySQL.
Di dalam sebuah database tentu saja terdiri dari tabel-tabel. Saya akan membagi tabel-tabel tersebut menurut dua kriteria. Pertama, berdasarkan kriteria, saya sebut saja ‘ayah dan anak’, tabel-tabel dibagi menjadi dua jenis, tabel ayah dan tabel anak. Semua tabel ayah berawalan Ref dan table anak berawalan Ta. Tabel anak menyimpan foreign key yang berasal dari tabel ayah, kira-kira begitulah. Tapi saya tidak akan membahas kriteria yang satu ini. Saya akan membahas kriteria yang kedua, kriteria ‘transaksi dan jurnal’, yaitu tabel-tabel dibagi menjadi dua bagian yaitu tabel transaksi dan table jurnal. Tabel transaksi menyimpan data transaksi, contohnya tabel untuk menyimpan bukti pengeluaran (Ta_Bukti_Penerimaan), STS (Ta_STS), tagihan (Ta_SPP), SP2D (Ta_SP2D), dan jurnal memorial (Ta_Jurnal dan Ta_JurnalAk). Pada saat user menyimpan data pada tabel-tabel tersebut, aplikasi SIMDA secara otomatis membuat jurnalnya yang disimpan di tabel jurnal. Ada 4 tabel untuk menyimpan jurnal tersebut, yaitu Ta_JurnalSemua dan Ta_JurnalSemua_Rinc untuk laporan CTA, Ta_JurnalSemuaAk dan Ta_JurnalSemuaAk_Rinc untuk laporan akrual.
Masalah yang sering timbul karena pembagian ini adalah kedua jenis tabel ini kemungkinan menyimpan data yang tidak sama alias tidak nyambung. Tabel transaksi bilang A, tabel jurnal bilang B, atau tabel transaksi bilang X, tabel jurnal nggak bilang apa-apa alias kosong. Misalnya, seringkali saya melihat perbedaan angka antara laporan di bendahara pengeluaran dengan laporan di pembukuan. Sebenarnya, ketidaknyambungan ini bisa dengan mudah diselesaikan dengan melakukan rebuild total jurnal. Tapi tunggu dulu, rebuild total jurnal menurut saya terlalu ekstrim untuk dilakukan, terutama saat database masih diakses oleh banyak orang. Dan biasanya memakan waktu yang lama, apalagi transaksi sudah sangat banyak. Memang lebih mantap menggunakan rebuild total, tapi saya lebih suka menggunakan query untuk mencari ketidaknyambungan tersebut dan melakukan rebuild secara parsial. Bagaimana saya melakukannya?