Fondasi Framework Frappe : Memperdalam Struktur Data dengan Child DocType

Rio Pramana

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

Sumber: Define a relationship (oracle.com)

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 TableTable 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.

Share this article

Photo of author

About the author

Rio Pramana