Mô hình hóa dữ liệu trong lập trình mạng (tiếp tục)
Tuy nhiên thế còn về các hostnames là quá dài? Thế còn về các kí tự đặc biệt cái có thể được hỗ trợ trong JSON nhưng
không được hỗ trợ bởi thiết bị mạng thực? Tiện thể, tất cả các xem xét này áp dụng chỉ cho trường hostname này thế
còn về các payloads JSON phức tạp hơn? Chúng ta có thể có nhiều dạng hơn trong payload này để nghĩ về như các số
nguyên, mảng hay nested objects, mỗi cái với quan tâm hiệu lực hóa cụ thể của bản thân chúng. Chúng ta có thể muốn
đảm bảo rằng một mảng JSON đã cho không phải là rỗng, hay không chứa nhiều hơn 5 phần tử hay không chứa phần tử trùng.
Viết code phía máy chủ để kiểm tra tất cả trường hợp này có thể nhanh chóng trở nên không vững chắc. Thậm chí nếu
bạn có thể ở tại đỉnh tất cả chúng, một cách tiếp cận như vậy sẽ tạo một trải nghiệm xấu cho bất cứ ai viết code
để tiêu dùng như một API. Nếu tất cả các kiểm tra này được tích hợp vào bản thân máy chủ API, các máy khách sẽ gặp
khó khăn cực lớn để biết làm cách nào gửi dữ liệu có hiệu lực tới API này. Người duy trì API sẽ phải duy trì tài
liệu hướng dẫn chi tiết về tất cả các kiểm tra này và đảm bảo rằng nó được giữ cập nhật thủ công (bạn có thể tưởng
tượng cách tiếp cận này kết thúc trong thành công hiếm như thế nào).
Data modeling là một tập các công cụ và kĩ thuật cho giải quyết vấn đề này. Trong khi các hình thức dữ liệu cho
phép bạn chuỗi hóa dữ liệu có cấu trúc nói chung, data modeling cho phép chúng ta thực hiện bước này xa hơn và
cung cấp bó hẹp cái dữ liệu có cấu trúc này phải tuân theo. Nó cung cấp cho chúng ta cơ hội để mô tả các quy tắc
cụ thể hơn và các mối quan hệ cái đem dữ liệu vào căn chỉnh với một trường hợp sử dụng cụ thể hay quá trình doanh
nghiệp.