Data Model part 1 - Entity, DTO {Data Transfer Object}
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 mempunyaiGuidelinesaja, masih ada Challenge dengan topikout of sync
DTO: Data Transfer Object — sekilas konsep
- pada sistem yang kompleks, tidak semua data dari Database perlu dikirim ke FrontEnd
Entity→ representasi langsung dariTabledi DatabaseDTO→ “bentuk” data yang dikirim antar Layer {BackEnd ke FrontEnd, atau antar Service}
Entity≠DTO
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