Entity Model
Mô hình mô tả các “danh từ” trong hệ thống - tên gọi, ý nghĩa, trạng thái, quan hệ. Trả lời câu hỏi: hệ thống đang nói về những khái niệm nào? Khác ERD ở chỗ chưa cần nói về index, datatype hay foreign key.
Vì sao tầng này bị đánh giá thấp nhưng lại quan trọng
Entity Model là ngôn ngữ chung (Ubiquitous Language) giữa business, dev và AI. Nếu spec dùng đúng tên nghiệp vụ, AI có cơ hội sinh ra class, function và test gần với cách team nói chuyện hằng ngày hơn.
So sánh hai prompt cho cùng một việc:
- Prompt A: “Tạo service quản lý
tbl_dh_v2với cộtid, ma_kh, tong_tien, tt…” - Prompt B: “Tạo service quản lý Order. Một Order có nhiều OrderItem, thuộc về một Customer, có một Payment sau khi thanh toán, trạng thái
draft, awaiting_payment, paid, cancelled.”
Prompt B cho code tốt hơn - không phải vì AI ghét tiếng Việt, mà vì nó cho AI nhiều móc bám hơn: khái niệm quen thuộc, quan hệ rõ, danh sách trạng thái giúp hiểu vòng đời → AI sinh guard clause, validation, test case hợp lý hơn.
Ví dụ (rút gọn)
## Order
- Đại diện: một lần khách đặt hàng
- Trạng thái: draft, awaiting_payment, paid, cancelled, manual_review
- Có nhiều: OrderItem | Có một: Payment (sau khi paid)
## QRSession
- Một lần khách yêu cầu QR | Thuộc: Order | Hết hạn sau 15 phútLiên quan
- Bốn tầng của yêu cầu - Entity Model là tầng 3
- Ubiquitous Language - vì sao đặt tên đúng lại quan trọng
- Bounded Context - cùng một từ “Order” có thể khác nghĩa giữa các context
- Hexagonal Architecture - mỗi Entity ≈ aggregate root hoặc value object