Chọn normalize (tách thành cột/bảng riêng) khi field cần join, hay lọc, cần ràng buộc/foreign key, cần update độc lập hoặc dùng cho báo cáo. Chọn JSONB khi cấu trúc hay đổi, ít khi query sâu, metadata thay đổi liên tục, hoặc cần giữ nguyên payload từ hệ thống ngoài.
Quy tắc thực tế: dữ liệu cốt lõi của nghiệp vụ nên là cột/bảng rõ ràng; dữ liệu phụ hoặc nửa cấu trúc thì để JSONB. Dấu hiệu nên normalize: bạn cứ phải liên tục tạo index trên từng field bên trong JSONB để query — lúc đó JSONB đang gánh việc của bảng quan hệ.