Pendahuluan
Dalam perjalanan kita membangun aplikasi Ride Management
, kita telah melihat pentingnya penamaan yang efektif dan penciptaan record. Sekarang, kita memasuki dunia yang lebih kompleks dan terstruktur: penerapan Child DocType. Episode ini akan membahas cara mendefinisikan dan menggunakan Child DocType untuk merepresentasikan hubungan data yang lebih kompleks, memungkinkan aplikasi kita untuk menangani informasi secara hierarkis dan memberikan fondasi yang lebih kaya untuk aplikasi Ride Management
.
Mengenal Child DocType
Child DocType adalah komponen yang memungkinkan kita untuk menangkap dan menyimpan data yang terkait langsung dengan DocType lainnya, yang kita sebut sebagai Parent DocType. Konsep ini serupa dengan konsep foreign key dalam database relasional sehingga memungkinkan sebuah record untuk menyimpan beberapa record lainnya yang membentuk hubungan many-to-one pada DocType tersebut.
Membuat Child DocType
Untuk mendemonstrasikan Child Doctype, kita akan membuat 2 doctype baru pada aplikasi kita, yaitu Ride Booking
(parent) dan Ride Booking Item
(child).
1. Buat Parent DocType:
Buatlah sebuah submittable doctype baru bernama Ride Booking
dengan fields sebagai berikut.
2. Buat Child DocType:
Untuk membuat child doctype Ride Booking Item
, pastikan Anda mencentang pilihan Is Child Table
pada saat membuat doctype baru.
Kemudian, kita tambahkan fields pada child doctype tersebut sesuai dengan business case yang kita miliki. Kolom-kolom inilah yang nantinya akan disimpan dan ditampilkan pada parent doctype yang menyimpan record doctype ini.
Jika Anda perhatikan, terdapat perbedaan dari child doctype dengan doctype lainnya. Pada child doctype, Anda tidak dapat membuat record baru secara independen. Anda hanya dapat membuat record child doctype pada record parent doctype-nya.
3. Hubungkan dengan Parent DocType:
Untuk menghubungkan child doctype tersebut dengan parent doctype-nya, kita perlu kembali ke doctype Ride Booking
kita dan menambahkan field baru dengan tipe Table
. Table
ini berfungsi layaknya field dengan tipe Link
. Namun, field Table
dikhususkan untuk child doctype karena kita dapat menyimpan beberapa record child doctype sekaligus, berbeda dengan Link
yang hanya dapat menyimpan 1 record doctype lainnya.
Pastikan untuk mengisi Ride Booking Item
pada Options
field tersebut agar kedua doctype ini dapat terhubung.
Setelah kedua doctype terhubung, setiap record dari Ride Booking
akan menyimpan sebuah tabel yang dapat diisi dengan record-record Ride Booking Item
menggunakan tombol Add Row
. Perlu diingat bahwa setiap record Ride Booking Item
yang dibuat terpisah satu sama lain (independen) sehingga kita tidak bisa menggunakan ulang sebuah record Ride Booking Item
pada lebih dari 1 record parent sekaligus.
Representasi Child DocType pada Database
Child DocType memiliki tabelnya sendiri, sama seperti doctype pada umumnya. Namun, terdapat beberapa properti khusus yang digunakan untuk mendefinisikan hubungan langsung child doctype tersebut dengan parent doctype-nya:
idx
: Urutan baris pada tabel parent
parent
: Nama dari record parent-nya
parentfield
: Nama kolom pada parent doctype yang terhubung dengan child doctype ini
parenttype
: Jenis doctype parent-nya
Kita juga dapat mengakses record-record dari child doctype ini langsung dari record parent-nya dengan cara mengakses kolom Table
yang terhubung dengan child doctype tersebut.
Praktik Terbaik
- Konsistensi Data: Pastikan bahwa semua record Child DocType secara konsisten mengikuti format dan aturan yang ditetapkan oleh Parent DocType.
- Validasi: Implementasikan validasi untuk memastikan bahwa data yang dimasukkan ke dalam Child DocType adalah valid dan relevan.
- User Experience: Sesuaikan form Parent DocType untuk memastikan bahwa entri dari Child DocType ditampilkan dengan cara yang intuitif dan mudah diakses.
Kesimpulan
Dengan memanfaatkan Child DocType, kita dapat secara signifikan meningkatkan kekuatan dan fleksibilitas aplikasi Ride Management
. Hal ini memungkinkan kita untuk merepresentasikan data yang terkait secara lebih mendalam dan terstruktur, yang pada akhirnya akan memperkaya pengalaman pengguna dan memberikan wawasan yang lebih detil pada operasi sehari-hari.