Data Dictionary
Bảng liệt kê từng trường dữ liệu của hệ thống: tên, kiểu, độ dài, bắt buộc hay không, giá trị hợp lệ và ý nghĩa nghiệp vụ. Tài liệu ít hào nhoáng nhưng được mở ra nhiều nhất.
Định nghĩa
Dev hỏi trường mã khách tối đa bao nhiêu ký tự. QC hỏi trạng thái đơn hàng có mấy giá trị. Đội tích hợp hỏi ngày sinh lưu kiểu gì. Ba câu hỏi này sẽ được hỏi lại mỗi tháng cho tới hết dự án, trừ khi có một chỗ ghi sẵn câu trả lời. Chỗ đó là data dictionary.
Từ điển dữ liệu mô tả từng trường: nó là gì, kiểu gì, dài bao nhiêu, nhận giá trị nào, và ai đó dựa vào nó để làm gì.
Một dòng gồm những cột gì
| Cột | Nội dung | Ví dụ |
|---|---|---|
| Tên trường | Tên kỹ thuật trong hệ thống | customer_code |
| Tên nghiệp vụ | Cách người dùng gọi | Mã khách hàng |
| Kiểu và độ dài | Kiểu dữ liệu, giới hạn | Chuỗi, 20 ký tự |
| Bắt buộc | Có hay không, điều kiện nào | Bắt buộc |
| Giá trị hợp lệ | Danh sách hoặc quy tắc | Chữ hoa và số, bắt đầu bằng KH |
| Mặc định | Giá trị khi để trống | Không có |
| Nguồn dữ liệu | Người nhập hay hệ thống sinh | Hệ thống sinh tự động |
| Ghi chú nghiệp vụ | Quy tắc riêng, ngoại lệ | Không được sửa sau khi phát sinh giao dịch đầu tiên |
Với các trường trạng thái, liệt kê đủ giá trị kèm ý nghĩa. Một dòng ghi status: varchar(20) là vô dụng; ghi rõ draft / confirmed / shipped / cancelled cùng điều kiện chuyển trạng thái thì QC viết được test case ngay.
Khác gì ERD và business glossary
| Data dictionary | ERD | Business glossary | |
|---|---|---|---|
| Trả lời | Từng trường trông ra sao | Các bảng liên hệ với nhau thế nào | Thuật ngữ nghiệp vụ nghĩa là gì |
| Mức chi tiết | Trường | Thực thể và quan hệ | Khái niệm |
| Người dùng chính | Dev, QC, đội tích hợp | Dev, kiến trúc sư | Nghiệp vụ, ban lãnh đạo |
| Ví dụ một mục | due_date, kiểu ngày, bắt buộc | Hoá đơn thuộc về một khách hàng | Khách hàng đang hoạt động nghĩa là có giao dịch trong 12 tháng |
Không cái nào thay được cái nào. ERD để nhìn tổng thể, data dictionary để tra chi tiết. Còn business glossary là thứ chấm dứt cuộc cãi doanh thu tính trước hay sau chiết khấu — cuộc cãi đó chưa bao giờ nằm ở tầng kỹ thuật.
Ví dụ thực tế
Trong một dự án cho vay tiêu dùng, trường approved_date được đội back-end hiểu là ngày hệ thống tự động chấm điểm xong, còn phía nghiệp vụ hiểu là ngày chuyên viên thẩm định bấm duyệt. Hai mốc này cách nhau trung bình một ngày rưỡi. Báo cáo thời gian xử lý hồ sơ vì thế đẹp hơn thực tế, và chuyện chỉ vỡ ra ở tháng thứ tư khi phòng vận hành so với sổ tay của mình.
Sửa mất hai dòng trong data dictionary và một lần đổi tên trường thành system_scored_date với officer_approved_date. Nhưng phải làm lại toàn bộ báo cáo lịch sử của bốn tháng.
Mẹo khi đi làm
- Viết trong lúc phân tích, đừng để tới lúc bàn giao. Từ điển dữ liệu viết sau khi hệ thống chạy chỉ là bản chép lại cấu trúc bảng và mất hết phần ý nghĩa nghiệp vụ.
- Đặt cạnh tài liệu chức năng và liên kết qua lại. Trên Confluence, một bảng có thể nhúng vào nhiều trang.
- Ghi ngày cập nhật và người cập nhật cho từng thay đổi lớn. Đội tích hợp bên ngoài sẽ hỏi bản nào mới nhất.
- Đừng liệt kê mọi bảng kỹ thuật kiểu log hay bảng tạm. Chỉ mô tả những gì có ý nghĩa nghiệp vụ. Nhét cả bảng log vào thì tài liệu phồng lên gấp đôi, và phần đáng giá bị chôn ở giữa.
- Khi bàn giao cho đội vận hành, in ra vài trang quan trọng nhất. Nghe cổ lỗ, nhưng 2h sáng mạng nội bộ sập thì tờ giấy là thứ duy nhất còn tra được.
