Bab 2: Pemodelan Data — Dua Tabel untuk Sistem Tiket
Pada bab sebelumnya kita telah menginstal NocoBase dan mengenal antarmukanya. Sekarang, kita akan membangun kerangka untuk sistem tiket — mendefinisikan model data.
Bab ini akan membuat dua tabel data: tiket dan kategori, mengonfigurasi tipe field (teks satu baris, dropdown, asosiasi many-to-one, dan lainnya), serta membangun hubungan asosiasi antar tabel. Model data adalah fondasi sistem: pikirkan dengan jelas terlebih dahulu data apa yang perlu disimpan dan apa hubungan antara data, kemudian membangun antarmuka dan mengonfigurasi izin akan berjalan dengan lancar.
2.1 Apa itu Tabel Data dan Field
Jika Anda pernah menggunakan Excel, memahami tabel data sangat mudah:

Misalnya "tabel tiket" yang akan kita buat, seperti tabel Excel — setiap kolom adalah field (judul, status, prioritas, dll.), setiap baris adalah satu record tiket.
Namun, NocoBase jauh lebih kuat dari Excel. NocoBase mendukung berbagai tipe tabel data, dengan setiap tipe membawa kemampuan yang berbeda:
Hari ini kita akan menggunakan tabel biasa dan tabel pohon, tipe lainnya akan dipelajari saat dibutuhkan nanti.
Masuk ke Manajemen Data Source: klik ikon "Manajemen Data Source" di pojok kiri bawah (ikon database di samping gear), Anda akan melihat "Data Source Utama" — semua tabel kita dibangun di sini.

2.2 Membuat Tabel Inti: Tiket
Mari kita langsung ke topik utama, buat inti sistem terlebih dahulu — tabel tiket.
Membuat Tabel
- Pada halaman manajemen data source, klik Data Source Utama untuk masuk

- Klik "Buat Tabel Data", pilih "Tabel Biasa"

- Nama tabel data:
tickets, judul tabel data:Tiket

Saat membuat tabel, sistem akan secara default mencentang sekelompok field sistem, yang akan mencatat metadata setiap record secara otomatis:
Field sistem ini biarkan saja sebagai default, tidak perlu dikelola secara manual. Jika beberapa skenario tidak membutuhkannya, Anda juga bisa mencentangnya kembali.
Menambahkan Field Dasar
Tabel sudah dibuat, selanjutnya tambahkan field. Klik "Konfigurasi field (Configure fields)" pada tabel tiket, Anda akan melihat field sistem default sudah ada di list.


Klik tombol "Tambah field (Add field)" di pojok kanan atas, akan terbuka list dropdown tipe field — pilih tipe field yang ingin ditambahkan.

Mari tambahkan field tiket sendiri terlebih dahulu, field asosiasi akan ditambahkan kemudian.
1. Judul (Teks Satu Baris)
Setiap tiket membutuhkan judul singkat untuk meringkas masalah. Klik "Tambah field" → pilih "Teks Satu Baris":

- Nama field:
title, judul field:Judul - Klik "Atur aturan validasi", tambahkan aturan "Wajib"

2. Deskripsi (Markdown(Vditor))
Digunakan untuk mendeskripsikan masalah secara detail, mendukung formatting, memudahkan paste gambar dan paste kode. Pada "Tambah field" → kategori "Media" terdapat tiga opsi:
Kita pilih Markdown(Vditor).

- Nama field:
description, judul field:Deskripsi

3. Status (Dropdown - Pilihan Tunggal)
Tiket dari pengiriman hingga selesai membutuhkan status untuk melacak progress.
- Nama field:
status, judul field:Status - Tambahkan nilai opsi (setiap opsi perlu mengisi "nilai opsi" dan "label opsi", warna opsional):

Isi opsi dan simpan terlebih dahulu. Kemudian klik "Edit" field tersebut lagi, sekarang Anda dapat memilih "Menunggu" di "Nilai default".


Saat pertama kali membuat belum ada data opsi, jadi nilai default tidak bisa dipilih — perlu disimpan dulu lalu kembali untuk mengaturnya.
Mengapa menggunakan dropdown pilihan tunggal? Karena status adalah beberapa nilai yang sudah ditetapkan, dropdown menu dapat mencegah pengguna mengisi sembarangan dan menjamin standar data.
4. Prioritas (Dropdown - Pilihan Tunggal)
Membedakan tingkat urgensi tiket, memudahkan personel pemroses untuk sorting berdasarkan prioritas.
- Nama field:
priority, judul field:Prioritas - Tambahkan nilai opsi:
Sampai di sini, tabel tiket sudah memiliki 4 field dasar. Tetapi — tiket seharusnya memiliki "kategori" kan? Seperti "masalah jaringan" atau "gangguan software"?
Jika kategori dibuat sebagai dropdown, tentu saja bisa. Tetapi Anda akan segera menyadari: kategori mungkin memiliki sub-kategori ("masalah hardware" memiliki "monitor", "keyboard", "printer"), dropdown menjadi tidak cukup.
Kita membutuhkan tabel lain untuk khusus mengelola kategori. Dan tabel ini, paling cocok dibuat menggunakan tabel pohon NocoBase.
2.3 Membuat Tabel Pohon Kategori: Membuat Kategori Berhierarki
Apa itu Tabel Pohon
Tabel pohon adalah tipe tabel data khusus yang memiliki hubungan parent-child bawaan — setiap record dapat memiliki satu "parent node". Ini secara alami cocok untuk data dengan struktur hierarki:
Jika menggunakan tabel biasa, Anda perlu membuat field "kategori parent" sendiri secara manual untuk merealisasikan hubungan ini. Sedangkan tabel pohon akan otomatis menanganinya untuk Anda, juga mendukung tampilan struktur pohon, menambahkan sub-record, dan operasi lainnya, jauh lebih praktis.
Membuat Tabel
-
Kembali ke manajemen data source, klik "Buat Tabel Data"
-
Kali ini pilih "Tabel Pohon" (bukan tabel biasa!)

-
Nama tabel data:
categories, judul tabel data:Kategori Tiket

Perhatikan bahwa setelah dibuat, selain field sistem, tabel akan otomatis muncul dua field relasi "Parent" dan "Children" — ini adalah kemampuan khusus tabel pohon. Melalui Parent dapat mengakses parent node, melalui Children dapat mengakses semua child node, tidak perlu Anda tambahkan secara manual.

Menambahkan Field
Klik "Konfigurasi field" untuk masuk ke daftar field, Anda dapat melihat field sistem dan field Parent, Children yang dibuat secara otomatis. Klik "Tambah field" di pojok kanan atas:
Field 1: Nama Kategori
- Pilih "Teks Satu Baris"
- Nama field:
name, judul field:Nama Kategori - Klik "Atur aturan validasi", tambahkan aturan "Wajib"
Field 2: Warna
- Pilih "Warna"
- Nama field:
color, judul field:Warna

Field warna memungkinkan setiap kategori memiliki warna identifikasi sendiri, akan lebih intuitif saat ditampilkan di antarmuka nanti.

Sampai di sini, field dasar dari kedua tabel data sudah dikonfigurasi. Selanjutnya kita akan menghubungkan keduanya.
2.4 Kembali ke Tabel Tiket: Menambahkan Field Asosiasi
Field relasi mungkin terasa abstrak saat pertama kali ditemui. Jika Anda merasa kurang mudah dipahami, Anda bisa langsung lompat ke Bab 3: Membangun Halaman, rasakan bagaimana data ditampilkan dalam operasi halaman aktual, kemudian kembali untuk menambahkan field asosiasi.
Tiket perlu diasosiasikan dengan kategori, pengirim, dan penangani. Jenis field ini disebut field relasi — tidak seperti "judul" yang langsung menyimpan teks, tetapi menyimpan ID record dari tabel lain, dan melalui ID ini dapat menemukan record yang sesuai.
Mari lihat dengan satu tiket konkret — di sebelah kiri adalah berbagai atribut tiket, di mana "kategori" dan "pengirim" tidak menyimpan teks, melainkan sebuah ID. Sistem melalui ID ini, dari tabel di sebelah kanan dapat menemukan record yang sesuai dengan tepat:

Yang Anda lihat di antarmuka adalah nama ("masalah jaringan", "Bambang"), di belakangnya diasosiasikan melalui ID. Beberapa tiket dapat menunjuk ke kategori yang sama atau pengguna yang sama — hubungan ini disebut many-to-one.
Menambahkan Field Relasi
Kembali ke "Konfigurasi field" tabel tiket → "Tambah field", pilih "Many-to-One".

Saat membuat Anda akan melihat opsi konfigurasi ini:

Foreign key secara default akan otomatis menghasilkan nama acak (seperti
f_xxxxx), disarankan diubah menjadi nama yang bermakna untuk memudahkan maintenance di masa depan. Penamaan menggunakan huruf kecil dan underscore (seperticategory_id), jangan campur huruf besar dan kecil.
Dengan cara ini, tambahkan tiga field secara berurutan:
5. Kategori → Tabel Kategori Tiket
- Judul field:
Kategori - Tabel data target: pilih "Kategori Tiket" (jika tidak ada di list, langsung ketik nama tabel akan otomatis dibuat)
- Foreign key:
category_id
6. Pengirim → Tabel Pengguna
Mencatat siapa yang mengirim tiket ini. NocoBase memiliki tabel pengguna bawaan, langsung asosiasikan saja.
- Judul field:
Pengirim - Tabel data target: pilih "Pengguna"
- Foreign key:
submitter_id
7. Penangani → Tabel Pengguna
Mencatat siapa yang bertanggung jawab menangani tiket ini.
- Judul field:
Penangani - Tabel data target: pilih "Pengguna"
- Foreign key:
assignee_id

2.5 Gambaran Lengkap Model Data
Mari kita tinjau kembali model data lengkap yang telah kita bangun:

}o--|| mewakili hubungan many-to-one: di kiri "many", di kanan "one".
Ringkasan
Pada bab ini kita telah menyelesaikan pemodelan data — kerangka seluruh sistem tiket:
- Tabel Tiket (tickets): 4 field dasar + 3 field asosiasi, dibuat dengan tabel biasa
- Tabel Kategori Tiket (categories): 2 field kustom + field Parent/Children otomatis, dibuat dengan tabel pohon, secara alami mendukung kategori berhierarki
Kita telah mempelajari beberapa konsep penting:
- Tabel Data (Collection) = container untuk satu jenis data
- Tipe Tabel Data = pilih tipe yang berbeda untuk skenario yang berbeda (tabel biasa, tabel pohon, dll.)
- Field = atribut data, dibuat melalui "Konfigurasi field" → "Tambah field"
- Field Sistem = ID, tanggal pembuatan, pembuat, dll., otomatis tercentang saat membuat tabel
- Field Relasi (Many-to-One) = mengarah ke record di tabel lain, membangun asosiasi antar tabel
Anda mungkin memperhatikan bahwa screenshot di bab selanjutnya sudah memiliki data — data uji ini kami input terlebih dahulu untuk mendemonstrasikan efek, jangan terburu-buru. Di NocoBase, operasi CRUD data dilakukan melalui halaman frontend. Bab 3 akan membangun tabel untuk menampilkan data, Bab 4 akan membangun form untuk input data, akan diungkap secara bertahap.
Pratinjau Bab Berikutnya
Kerangka sudah dibangun, tetapi sekarang hanya tabel kosong. Bab berikutnya, kita akan membangun halaman, agar data benar-benar dapat ditampilkan.
Sampai jumpa di bab berikutnya!
Sumber Daya Terkait
- Ikhtisar Data Source — Konsep inti pemodelan data NocoBase
- Field Tabel Data — Penjelasan detail semua tipe field
- Asosiasi Many-to-One — Penjelasan konfigurasi hubungan asosiasi

