Skema database adalah struktur logis yang mendefinisikan bagaimana data diorganisasikan, disimpan, dan saling berhubungan di dalam sebuah basis data. Skema ini mencakup definisi tabel, kolom, tipe data, kunci (primary key, foreign key), indeks, relasi antar tabel, serta aturan atau batasan (constraints) yang mengatur integritas data. Skema database berfungsi sebagai cetak biru (blueprint) dari sebuah basis data, yang memastikan bahwa data disimpan secara konsisten, terstruktur, dan dapat diakses dengan efisien sesuai kebutuhan aplikasi.
Pembahasan mengenai pembuatan skema database cukup panjang sehingga pembahasannya akan dibagi menjadi beberapa artikel. Pembahasan akan diawali dengan pengenalan dan dasar-dasar pengetahuan tentang skema database terutama bagi pemula. Bagi pengguna tingkat lanjut, HyperFastApp sudah cukup intuitif sehingga tidak memerlukan pembahasan yang lebih mendalam.
Pengenalan
Pembuatan skema database adalah pekerjaan paling penting dalam rangkaian proses pembuatan aplikasi di HyperFastApp. Skema database adalah dasar yang digunakan oleh HyperFastApp untuk membuat aplikasi, database, dokumentasi, dan sebagainya. Karena skema database adalah satu-satunya “sumber kebenaran” dalam pembuatan aplikasi, HyperFastApp mememberikan beberapa persyaratan untuk skema database yang benar. Jika pengguna tidak memenuhi persyaratan ini, maka aplikasi tidak akan berjalan.
Beberapa persyaratan skema database yang benar yang dibuat oleh HyperFastApp adalah sebagai berikut:
- Nama tabel dan kolom harus snake_case.
- Nama kunci utama harus nama tabel ditambah dengan akhiran _id.
- Nama kunci asing harus sama dengan nama kunci utama dari tabel referensi.
- Nama kolom tampilan harus sama untuk semua tabel. Kolom tampilan adalah kolom yang akan mewakili keseluruhan baris data saat ditampilkan.
- Kolom-kolom yang dicadangkan yang memiliki fungsi sama harus ditulis dengan nama sama di semua tabel.
Kolom yang dicadangkan adalah sebagai berikut:
- name
- sort_order
- active
- draft
- waiting_for
- admin_create
- admin_edit
- admin_ask_edit
- admin_delete
- admin_approve
- admin_restore
- time_create
- time_edit
- time_ask_edit
- time_delete
- time_approve
- time_restore
- ip_create
- ip_edit
- ip_ask_edit
- ip_delete
- ip_approve
- ip_restore
- approval_id
- approval_note
- approval_status
- restored
Beberapa kolom sudah digunakan untuk versi V1 dan beberapa yang lain belum digunakan namun akan digunakan pada versi mendatang.
Jika pengguna ingin membuat aplikasi dengan bahasa natif selain bahasa Inggris, pengguna harus mengubah nama-nama kolom yang dicadangkan sesuai dengan bahasa yang digunakan. Khusus untuk bahasa Indonesia, HyperFastApp menyediakan fungsi untuk mengganti semua kolom yang dicadangkan ke bahasa Indonesia. Jika pengguna ingin menggunakan template kolom, maka template tersebut harus disesuaikan dengan bahasa yang digunakan.
Membuat Entitas

Pilih tombol “Entitas Baru” untuk membuat sebuah entitas.

Pilih tombol “Tambah Kolom”. Tulis nama kolom dan tentukan tipe dan panjangnya. Setiap tabel harus memiliki kunci utama atau primary key.

Saat pengguna membuat kolom pertama dari sebuah tabel, HyperFastApp menganggap bahwa pengguna sedang membuat primary key atau kunci utama dari tabel tersebut sehingga namanya akan sama dengan nama tabel dengan akhiran “_id”. Centang “PK” untuk mengkonfirmasi bahwa kolom tersebut adalah kunci utama atau primary key. Tipe data dan panjang akan sesuai dengan pengaturan.
Pengguna dapat mengubah pengaturan tipe kolom, panjangan kolom dan kolom dicadangkan dengan memilih tombol “Pengaturan”. Pengaturan ini tidak berlaku surut sehingga hanya akan diterapkan pada kolom yang dibuat setelah perubahan.
Atur kolom yang dicadangkan sesuai dengan bahasa natif dari aplikasi. HyperFastApp menyediakan 2 versi yaitu bahasa Inggris dan bahasa Indonesia. Untuk bahasa selain itu, pengguna harus mengaturnya secara manual.
Setelah mengatur tipe kolom dan kolom yang dicadangkan, jangan lupa untuk mengatur template. Template akan sangat berguna pada saat membuat tabel baru karena pengguna dapat menambahkan beberapa kolom secara cepat tanpa perlu mengetik secara manual sekaligus menyeragamkan penamaannya.

Fungsi Tombol
Berikut ini adalah daftar tombol yang tampil di editor skema saat pengguna tidak sedang mengedit suatu entitas.
| Tombol | Fungsi |
|---|---|
| New Schema | Membuat skema database baru. Pengguna akan diminta untuk mengisi nama skema, dialek database, tipe dan panjang kolom serta kolom yang dicadangkan sesuai dengan bahasa natif aplikasi. |
| New Entity | Membuat entitas atau tabel baru. Saat pengguna memilih tombol ini, editor tabel langsung ditampilkan di bagian bawah. Pengguna dapat mengubah nama tabel, menambah kolom, mengubah kolom, menghapus kolom, mengubah template, mengubah preferensi, dan sebagainya. Setelah selesai, jangan lupa untuk memilih tombol “Save Entity” agar perubahannya tidak hilang. |
| Import Entity (Import) | Mengimpor skema dari file skema database yang diekspor dari HyperFastApp dan MagicAppBuilder. File skema database memiliki format JSON. |
| SQL (Import) | Mengimpor file SQL yang diekspor dari database MySQL, MariaDB, PostgreSQL, SQL Server dan SQLite. File TSV yang diekspor dari PostgreSQL tidak dapat diimpor dengan cara ini. File biner SQLite juga dapat langsung diimpor dari sini tanpa harus mengekspornya ke format SQL. |
| Spreadsheet (Import) | Mengimpor file spreadsheet (xls, xlsx, ods, csv, dan dbf). Khusus untuk format xls, xlsx dan ods, HyperFastApp akan akan mengimpornya perlembar (sheet). Tujuannya adalah agar pengguna dapat menentukan nama kolom, tipe kolom dan panjangnya secara langsung. Ulangi untuk sheet berikutnya. |
| Clipboard (Import) |
Mengimpor data yang disalin dengan prosedur “Copy” dari sistem operasi. HyperFastApp akan mencoba mengenali format data dari clipboard. Format data yang diterima adalah sebagai berikut:
|
| GraphQL (Import) | Mengimpor skema dari aplikasi GraphQL. Beberapa aplikasi GraphQL menggunakan sebuah file skema yang dibuat di luar kode sumber program. Skema ini digunakan oleh aplikasi GraphQL untuk menentukan format data aplikasi. File ini dapat diimpor oleh HyperFastApp untuk membuat skema database. Informasi seperti panjang kolom untuk teks tidak tersedia di file skema GraphQL sehingga harus ditentukan secara manual oleh pengguna. |
| Entity (Export) | Mengekspor skema database ke format JSON. File ini berisi definisi entias, data entitas, data diagram, kolom yang dicadangkan, dan watermark yang menandai bahwa file ini merupakan file yang dapat diimpor oleh HyperFastApp dan MagicAppBuilder di masa yang akan datang. |
| SVG (Export) | Mengkespor diagram dari tab yang aktif dengan format SVG. Format ini dapat dirender oleh semua browser modern dan beberapa aplikasi grafis. Kelebihan dari format ini adalah gambar yang dapat diperbesar dan diperkecil tanpa mengurangi kualitasnya. |
| PNG (Export) | Mengkespor diagram dari tab yang aktif dengan format PNG. Format ini dapat dirender oleh semua browser modern dan beberapa aplikasi grafis. Kelebihan dari format ini adalah kompatibilitasnya yang sangat tinggi. Kekurangannya adalah jika gambar diperbesar atau diperkecil akan mengurangi kualitasnya. |
| MD (Export) | Mengekspor dokumen Mardown dari tab yang aktif. Dokumen Markdown dapat digunakan untuk menyusun dokumentasi teknis termasuk untuk integrasi dengan aplikasi dengan pihak ketiga. Dengan demikian, pengguna tidak perlu membuatnya secara manual. |
| HTML (Export) |
Mengekspor diagram ke format HTML. Pengguna harus membuat diagram terlebih dahulu sebelum memilih tombol ini. Tombol ini tidak menghasilkan diagram saat skema database belum memiliki diagram. Pengguna dapat memilih diagram mana yang akan diekspor dan menentukan apakah format gambarnya adalah SVG atau PNG. Format SVG cocok jika dokumen akan dibuka menggunakan browser namun gambar tidak akan tampil jika dibuka menggunakan Microsoft Word. Format PNG cocok jika dokumen akan dibuka menggunakan Microsoft Word namun kualitas gambar akan menurun jika diperbesar atau diperkecil. |
| SQL (Export) | Mengekspor skema ke format SQL. Sebelum mengekspor ke format SQL, centang tabel apa saja yang akan diekspor. Pengguna dapat memilih mengekspor struktur saja (S), data saja (D) atau keduanya. HyperFastApp memisahkan “System Entities” dan “Custom Entities”. System Entities adalah entitas yang memiliki fungsi yang telah ditentukan oleh HyperFastApp sedangkan Custom Entities adalah entitas yang dibuat oleh pengguna sesuai dengan kebutuhan bisnis. Pilih dialek database sebelum mengekspor skema. HyperFastApp akan membuat query database sesuai dengan dialek yang dipilih. |
| SQLite (Export) | Mengekspor skema ke file biner SQLite. Sebelum mengekspor, centang tabel apa saja yang akan diekspor. Pengguna dapat memilih mengekspor struktur saja (S), data saja (D) atau keduanya. |
| Application (Export) | Mengekspor skema database menjadi aplikasi. Pengguna dapat memilih 1 dari 7 bahasa yang tersedia yaitu PHP, Java, Kotlin, Node.js, TypeScript, Python, dan Go. |
| Sort | Mengurutkan entitas berdasarkan alfabet. |
| Sort by Type | Mengurutkan entitas berdasarkan jenis entitas kemudian berdasarkan alfabet. |
Berikut ini adalah daftar tombol yang tampil di editor skema saat pengguna sedang mengedit suatu entitas.
| Tombol | Fungsi |
|---|---|
| Add Column | Menambah kolom ke entitas |
| Add Column from Template | Menambah kolom ke entitas dari template. Pengguna akan menambahkan kolom dari template yang telah dibuat sebelumnya. Nama kolom, tipe kolom, panjangn kolom dan sebagainya akan sama dengan yang didefinisikan di template. Jika ada kolom dari template yang tidak diinginkan, pengguna cukup menghapusnya setelah HyperFastApp menambahkannya ke entitas. |
| Save Entity | Menyimpan entitas yang sedang diedit. HyperFastApp akan menyimpannya di penyimpanan server sehingga dapat diakses oleh pengguna dari perangkat yang berbeda. |
| Edit Template | Mengubah template untuk skema database yang dipilih. Sangat disarankan template disesuaikan dengan bahasa natif aplikasi. |
| Preferences | Mengubah preferensi tipe kolom, panjang kolom dan kolom yang dicadangkan. Di bagian bawah kolom yang dicadangkan, pengguna dapat memilih menggunakan bahasa Indonesia atau Original sesuai dengan bahasa natif aplikasi. Jika bahasa natif aplikasi di luar dari dua bahasa tersebut, pengguna harus mendefinisikannya secara manual. |
| Cancel | Membatalkan semua perubahan pada entitas yang diedit. Saat pengguna memilih tombol ini, HyperFastApp akan menutup editor entitas. Jika pengguna kembali mengedit entitas, HyperFastApp akan menampilkan editor sesuai dengan kondisi terakhir yang tersimpan. |
| Description | Membuat deskripsi entitas. Deskripsi bukan sesuatu yang wajib kecuali hanya sebagai kelengkapan saja. |
| Data | Menampilkan, menambah, mengubah dan menghapus data entitas. Pengguna dapat melakukan ekspor dan impor data ke format CSV dan memperbaiki format tanggal yang diimpor dari apliksi lain. |
Icon pada Entitas di Mainbar
- 📄 digunakan untuk menampilkan, menambah, mengubah dan menghapus data entitas.
- ⬅️ Icon ini digunakan untuk menggeser entitas ke kiri.
- ➡️ Icon ini digunakan untuk menggeser entitas ke kanan.
- ✏️ Icon ini digunakan untuk mengubah entitas.
- ❌ Untuk entitas yang berada di dalam tab “All Entities”, icon ini digunakan untuk menghapus entitas dari skema database. Untuk entitas yang berada di dalam tab diagram, icon ini digunakan untuk mengeluarkan entitas dari diagram tanpa menghapus entitas dari skema database. Entitas yang dihapus dari skema database tidak dapat dikembalikan lagi.
Icon pada Entitas di Leftbar
- ✏️ Icon ini digunakan untuk mengubah entitas
- ❌ Icon ini digunakan untuk menghapus entitas dari skema database. Entitas yang dihapus dari skema database tidak dapat dikembalikan lagi.
Icon pada Tab Diagram
⠿ Icon ini digunakan untuk menggeser entitas ke kiri dan ke kanan dan meletakkannya ke posisi yang diinginkan.
- ✏️ Icon ini digunakan untuk mengubah nama diagram.
- ❌ Icon ini digunakan untuk menghapus diagram. Seluruh entitas yang ada di dalam diagram yang dihapus tidak ikut terhapus dari entitas.
- + Icon ini digunakan untuk membuat diagram baru.
- ⏮️ Icon ini digunakan untuk menggeser semua tab ke bagian paling awal.
- ⬅️ Icon ini digunakan untuk menggeser semua tab ke bagian lebih awal.
- ➡️ Icon ini digunakan untuk menggeser semua tab ke bagian lebih akhir.
- ⏭️ Icon ini digunakan untuk menggeser semua tab ke bagian paling akhir.
Icon Pada Kolom Entitas
- ⠿ Icon ini digunakan untuk menggeser kolom ke atas dan ke bawah lalu menempatkannya di posisi yang diinginkan.
- ❌ Icon ini digunakan untuk menghapus kolom.
- ⬆️ Icon ini digunakan untuk menggeser kolom ke atas satu langkah.
- ⬇️ Icon ini digunakan untuk menggeser kolom ke bawah satu langkah.
Menu Konteks
Menu Konteks pada Entitas di Dalam Diagram dan All Entities
- Add Reference - digunakan untuk memasukkan entitas referensi ke diagram. Menu ini hanya muncul jika terdapat entitas dengan nama yang sama dengan nama-nama kolom setelah dikurangi akhirah “_id”.
- Export SVG - digunakan untuk mengekspor diagram ke format SVG.
- Export PNG - digunakan untuk mengekspor diagram ke format PNG.
- Export MD - digunakan untuk mengekspor diagram ke format MD.
- Copy Structure - digunakan untuk mengekspor SQL “CREATE TABLE” dan memasukkannya ke clipboard.
- Copy Data - digunakan untuk mengekspor SQL “INSERT INTO” dan memasukkannya ke clipboard.
- Copy All - digunakan untuk mengekspor SQL “CREATE TABLE” dan “INSERT INTO” dan memasukkannya ke clipboard.
- Import from Clipboard - digunakan untuk mengimpor data dari clipboard.
- Edit Entity - digunakan untuk mengedit entitas.
- Edit Data - digunakan untuk melihat, menambah, mengubah dan menghapus data entitas.
- Duplicate Entity - digunakan untuk menduplikasi entitas.
- Delete All Diagram - digunakan untuk menghapus semua diagram. Menu ini hanya muncul pada tab “All Entities”.
- Delete All Entities - digunakan untuk menghapus semua entitas. Menu ini hanya muncul pada tab “All Entities”.