Data Model part 1 - Entity, DTO {Data Transfer Object}

Situasi:

saya mempunyai system yang cukup kompleks

  • banyak sekali Table {lebih dari 500 table}
  • banyak sekali Columns {1 Table bisa mempunyai lebih dari 50 column}
  • Security {data sensitivity}
Object Columns
Sales Order
  Header lebih dari 80
  Items lebih dari 50
Shipment Request
  Header lebih dari 50
  Items lebih dari 50
Delivery Order
  Header lebih dari 80
  Items lebih dari 50
Purchase Order
  Header lebih dari 50
  Items lebih dari 50

Objective:
Saya memerlukan Guideline untuk Data Model, yang:

  • sesuai dengan Business Process
    • spesifik untuk Business Process milik saya
    • mungkin berbeda / tidak lazim bagi System lain {no problem}
  • simple
    • relatif mudah diimplementasikan
  • konsisten
    • konsisten pada masing-masing Object
    • konsisten terkait naming convention

What-if: saya tidak punya Guideline tersebut ?

  • System yang cukup kompleks seperti di atas –> susah untuk di Develop
  • susah juga untuk di Maintain
  • perubahan and/or penambahan column/field, bisa membuat lupa untuk update bagian yang related

Note:
dengan mempunyai Guideline saja, masih ada Challenge dengan topik out of sync

DTO: Data Transfer Objectsekilas konsep

  • pada sistem yang kompleks, tidak semua data dari Database perlu dikirim ke FrontEnd
  • Entity → representasi langsung dari Table di Database
  • DTO → “bentuk” data yang dikirim antar Layer {BackEnd ke FrontEnd, atau antar Service}

EntityDTO
Entity untuk Database. DTO untuk komunikasi antar Layer.

Database Object

  • Table
    • actual data
  • View
    • View langsung ke Table
    • View ke View lainnya

DTO: Data Transfer Object
dibahas lebih detail pada artikel Data Model part 2 - DTO {Data Transfer Object} link

Challenge dengan topik out of sync
dibahas pada artikel:

  • Data Model part 3 - out of sync Database Object {Table, View} vs Model {BackEnd} link
  • Data Model part 4 - out of sync Model {BackEnd} vs Types {FrontEnd} link

Guideline ini bukan tentang perfectionism —
melainkan tentang consistency.

  • konsisten dalam naming
  • konsisten dalam structure
    sehingga sistem yang kompleks tetap bisa di-navigate.

Contoh Implementasi:

  • Table: Sales Order
    • Header dengan lebih dari 80 columns
    • Items dengan lebih dari 50 columns
  • Tidak lantas semuanya akan digunakan pada FrontEnd {bagian View HTML} dengan mapping one to one
  • ada mekanisme:
    • dengan pembatasan column
    • dengan Masking