Custom Table Design (Desain Tabel Custom)
Tentang Fitur Ini
Desain Tabel Custom (Custom Table Design) adalah halaman untuk membuat dan mengatur struktur Tabel Custom di CATAPA. Dengan fitur ini, Anda dapat menentukan nama tabel, relasi dengan data lain (misalnya Organisasi, Posisi, atau Karyawan), pengaturan riwayat data dan tanggal efektif, serta daftar field yang dibutuhkan.
Fitur ini membantu perusahaan menyesuaikan struktur data sesuai kebutuhan bisnis, termasuk mendukung pencatatan data historis dengan berbagai model periode berlaku.
Konsep Penting
Tipe Pencatatan Riwayat Data
Saat membuat Tabel Custom, Anda perlu memilih bagaimana tabel tersebut mencatat riwayat datanya. CATAPA menyediakan empat pilihan:
1. Tanpa Riwayat Tabel hanya menyimpan satu data aktif. Jika ada perubahan, data sebelumnya akan digantikan. Cocok untuk data referensi yang tidak perlu dilacak perubahannya.
2. Dengan Riwayat — Tanggal Efektif (Tipe 1) Semua perubahan data dicatat menggunakan Tanggal Efektif. Tidak menggunakan Tanggal Berakhir. Data bersifat berkesinambungan (tidak ada jeda antar periode) dan tidak boleh tumpang tindih. Cocok untuk data yang berubah dari waktu ke waktu dan perlu dilacak sejak kapan berlakunya, misalnya perubahan jabatan atau grade.
3. Dengan Riwayat — Tanggal Efektif & Berakhir, Tumpang Tindih Diperbolehkan (Tipe 2) Semua data dicatat dengan Tanggal Efektif dan Tanggal Berakhir. Beberapa data untuk entitas yang sama boleh aktif secara bersamaan (periode tumpang tindih). Cocok untuk data yang bisa bertumpuk, misalnya seorang karyawan yang menerima beberapa tunjangan tambahan sekaligus dalam periode yang sama.
4. Dengan Riwayat — Tanggal Efektif & Berakhir, Tidak Tumpang Tindih (Tipe 3) Semua data dicatat dengan Tanggal Efektif dan Tanggal Berakhir. Hanya satu data yang boleh aktif pada satu waktu untuk entitas yang sama. Data boleh memiliki jeda antar periode (tidak harus berkesinambungan). Cocok untuk data yang memiliki masa berlaku tertentu dan tidak boleh bertumpuk, masa berlaku izin/lisensi.
Pengaturan Tanggal Berakhir (Tipe 2 dan Tipe 3)
Jika Anda memilih Tipe 2 atau Tipe 3, Anda perlu menentukan apakah Tanggal Berakhir wajib diisi atau boleh dikosongkan:
- Wajib diisi — Setiap entri harus memiliki Tanggal Berakhir.
- Boleh dikosongkan — Tanggal Berakhir boleh kosong. Entri tanpa Tanggal Berakhir dianggap berlaku tanpa batas waktu (open-ended).
Grouping Key
Grouping Key menentukan field mana yang digunakan untuk mengelompokkan data historis menjadi satu "garis waktu entitas". Sistem menggunakan Grouping Key untuk memvalidasi apakah periode data saling tumpang tindih atau tidak (khusus Tipe 3).
Contoh sederhana: Jika Grouping Key pada tabel Custom Salary Amount adalah Employee ID + Salary Item, maka sistem akan memastikan bahwa untuk kombinasi karyawan dan item gaji yang sama, tidak ada dua entri dengan periode yang tumpang tindih (pada Tipe 3).
Cara kerja Grouping Key:
- Tabel yang memiliki Parent (induk): Grouping Key secara otomatis menggunakan identitas parent (misalnya Employee ID atau Position). Anda dapat menambahkan field tambahan ke Grouping Key jika diperlukan.
- Tabel yang berdiri sendiri (tanpa parent): Anda harus mengatur Grouping Key secara manual. Jika tidak diatur, sistem akan membuat field Code secara otomatis sebagai Grouping Key default.
Ketentuan Grouping Key:
- Hanya field dengan tipe tertentu yang dapat dipilih: string, angka bulat (integer), enum, referensi (UUID), desimal, dan boolean.
- Field bertipe tanggal (date) dan teks panjang (long text) tidak dapat digunakan sebagai Grouping Key.
- Field yang sudah dikonfigurasi sebagai Unique juga tidak dapat digunakan sebagai Grouping Key, karena field Unique hanya mengizinkan satu nilai per baris, sedangkan Grouping Key membutuhkan beberapa entri dengan nilai yang sama pada periode yang berbeda.
- Setelah tabel sudah memiliki data, Grouping Key tidak dapat diubah.
- Field yang menjadi bagian dari Grouping Key tidak dapat dihapus dari desain tabel.
Catatan: Grouping Key hanya berlaku untuk tabel bertipe riwayat Tipe 1 dan Tipe 3. Tabel bertipe Tipe 2 (tumpang tindih diperbolehkan) tidak menggunakan Grouping Key karena tidak ada validasi tumpang tindih.
Cara Menggunakan Desain Tabel Custom
Cara Membuat Tabel Baru
- Buka menu Desain Tabel Custom.
- Klik Buat Tabel.
- Isi konfigurasi tabel:
- Nama Tabel — Nama yang akan ditampilkan di sistem.
- Relasi dengan data lain — Pilih apakah tabel menempel pada entitas tertentu (misalnya Organisasi, Posisi, atau Karyawan) atau berdiri sendiri.
- Tipe Pencatatan Riwayat — Pilih salah satu dari empat pilihan: Tanpa Riwayat, Tipe 1, Tipe 2, atau Tipe 3.
- Tanggal Berakhir Wajib Diisi (hanya muncul untuk Tipe 2 dan Tipe 3) — Pilih Ya atau Tidak.
- Grouping Key (hanya untuk tabel bertipe riwayat Tipe 1 dan Tipe 3) — Pilih field yang menjadi kunci pengelompokan data historis.
- Tambahkan field yang dibutuhkan. Untuk setiap field, tentukan:
- Nama field.
- Tipe data (lihat bagian "Detail Tipe Data" di bawah).
- Wajib diisi atau tidak.
- Unik atau tidak.
- Jika tipe referensi: sumber data dropdown dari tabel mana.
- Tooltip/keterangan bantuan (opsional).
- Atur urutan field bila perlu.
- Klik Simpan.
Cara Mengubah Desain Tabel
Jika tabel belum memiliki data, Anda biasanya masih dapat:
- Mengubah konfigurasi tabel (termasuk tipe riwayat, Grouping Key, dan pengaturan Tanggal Berakhir).
- Menambah, menghapus, atau mengubah field.
Jika tabel sudah memiliki data, perubahan struktur dibatasi untuk menjaga integritas data. Umumnya yang masih bisa diubah:
- Nama tampilan (label) field.
- Urutan field.
- Tooltip/keterangan bantuan.
Yang tidak dapat diubah setelah tabel memiliki data:
- Tipe pencatatan riwayat.
- Grouping Key.
- Pengaturan Tanggal Berakhir wajib/opsional.
Cara Menghapus Tabel
Tabel tidak dapat dihapus jika:
- Tabel masih memiliki data.
- Tabel sedang digunakan sebagai referensi oleh tabel lain.
- Tabel dikunci/protected oleh sistem.
Validasi yang dilakukan sistem saat menyimpan:
- Tanggal Berakhir tidak boleh lebih awal dari Tanggal Efektif.
- Jika Tanggal Berakhir wajib diisi, entri tanpa Tanggal Berakhir akan ditolak.
- Khusus Tipe 3: Sistem akan memeriksa apakah periode baru tumpang tindih dengan entri lain dalam Grouping Key yang sama. Jika tumpang tindih, entri akan ditolak.
- Tipe 2: Tidak ada pemeriksaan tumpang tindih. Beberapa entri dengan periode yang bertumpuk diperbolehkan.
- Jika tabel memiliki parent, Tanggal Efektif dan Tanggal Berakhir harus berada di dalam periode aktif data induk.
Detail Tipe Data
Berikut penjelasan setiap tipe data yang mungkin Anda temui saat mengisi field di Custom Table:
- String — Teks pendek seperti nama, kode, atau label. Umumnya dibatasi sampai 255 karakter. Contoh: Kode Gudang = WH-01.
- Text — Teks panjang untuk catatan atau deskripsi, hingga 65.535 karakter. Contoh: Catatan lokasi gudang.
- Number / Integer — Angka bulat tanpa desimal. Contoh: Jumlah = 10.
- Big Integer — Angka bulat yang sangat besar. Contoh: nomor ID atau timestamp.
- Double — Angka desimal untuk kebutuhan umum. Contoh: Koefisien = 1.25. Nilai disimpan sesuai input tanpa pembulatan otomatis.
- Big Decimal — Angka desimal dengan tampilan rapi (pemisah ribuan). Contoh: Nominal = 1.000.000,50.
- Boolean (Ya / Tidak) — Pilihan dua nilai. Contoh: Aktif? = Ya.
- Date (Tanggal) — Tanggal tanpa jam. Contoh: 31 Jan 2025.
- Email — Alamat email yang valid. Sistem akan menolak format yang tidak sesuai.
- UUID / Reference — Menghubungkan data ke data lain di sistem (tabel lain), biasanya melalui dropdown. Contoh: memilih salah satu Organisasi atau Posisi yang sudah ada.
Tips Desain agar Mudah Digunakan
- Gunakan nama tabel dan nama field yang jelas, singkat, dan konsisten.
- Pilih tipe pencatatan riwayat yang sesuai dengan kebutuhan bisnis: gunakan Tipe 2 jika data boleh bertumpuk, Tipe 3 jika hanya satu data yang boleh aktif per entitas pada satu waktu.
- Untuk field referensi/dropdown, pastikan sumber datanya sudah benar agar pengguna tidak bingung.
- Aktifkan "wajib diisi" hanya untuk data yang benar-benar harus ada.
- Aktifkan "unik" untuk field seperti Kode agar tidak terjadi duplikasi.
- Atur Grouping Key dengan tepat agar validasi periode berjalan sesuai harapan. Pastikan semua field yang menjadi identitas entitas sudah termasuk dalam Grouping Key.
Pertanyaan yang Sering Diajukan (FAQ)
T: Apa perbedaan antara Tipe 2 dan Tipe 3? J: Tipe 2 mengizinkan beberapa data untuk entitas yang sama aktif secara bersamaan (tumpang tindih diperbolehkan). Tipe 3 hanya mengizinkan satu data aktif per entitas pada satu waktu — jika ada entri baru yang periodenya tumpang tindih dengan entri yang sudah ada, sistem akan menolaknya.
T: Apakah saya bisa mengubah tipe pencatatan riwayat setelah tabel sudah memiliki data? J: Tidak. Tipe pencatatan riwayat tidak dapat diubah setelah tabel memiliki data, untuk menjaga integritas data yang sudah tercatat.
T: Apa yang terjadi jika saya tidak mengatur Grouping Key pada tabel tanpa parent? J: Sistem akan membuat field Code secara otomatis sebagai Grouping Key default. Anda tetap dapat mengubahnya selama tabel belum memiliki data.
T: Mengapa field yang sudah dikonfigurasi sebagai "Unique" tidak bisa dijadikan Grouping Key? J: Field Unique hanya mengizinkan satu nilai per baris (tidak boleh ada duplikat). Sedangkan Grouping Key membutuhkan beberapa entri yang memiliki nilai yang sama pada field tersebut, namun berbeda periodenya. Kedua konsep ini saling bertentangan.
T: Apakah Tanggal Berakhir boleh dikosongkan? J: Tergantung konfigurasi tabel. Jika pengaturan "Tanggal Berakhir Wajib Diisi" diaktifkan, setiap entri harus memiliki Tanggal Berakhir. Jika tidak diaktifkan, Tanggal Berakhir boleh kosong dan entri dianggap berlaku tanpa batas waktu.