Menu

Mã quốc gia ISO 3166 và mã đơn vị hành chính

Mã quốc gia ISO 3166 có ba cách viết khác nhau và rất dễ bị trộn lẫn. Bài này giải thích khi nào dùng mã hai chữ cái, khi nào dùng ba chữ cái hay ba chữ số, và vì sao mã đơn vị hành chính là chuyện khác.

Đăng ngày

  • địa chỉ
  • dữ liệu thử
  • kiểm thử

Mã quốc gia ISO 3166 là thứ xuất hiện ở gần như mọi hệ thống có yếu tố quốc tế, nhưng cũng là thứ bị trộn lẫn nhiều nhất giữa ba cách viết khác nhau. Bài này giải thích từng loại mã dùng để làm gì, vì sao mã cấp dưới quốc gia lại là một hệ thống riêng, và những chỗ cần phòng ngừa khi bạn đưa mã quốc gia vào cơ sở dữ liệu.

Vì sao cần một bộ mã quốc gia dùng chung?

Tên quốc gia là dữ liệu không ổn định. Cùng một quốc gia có thể được viết khác nhau ở mỗi ngôn ngữ, có thể đổi tên chính thức theo thời gian, và có thể bị viết sai chính tả theo vô số cách. Nếu hệ thống lưu tên quốc gia dưới dạng văn bản tự do, mọi phép so sánh và mọi báo cáo thống kê đều sẽ sai lệch.

Mã quốc gia giải quyết đúng vấn đề đó: nó là một định danh ngắn, không phụ thuộc ngôn ngữ, do một tổ chức tiêu chuẩn quản lý. Nhờ vậy, hai hệ thống khác nhau có thể trao đổi dữ liệu mà không cần thống nhất cách viết tên. Tên hiển thị vẫn cần cho người dùng, nhưng nó trở thành một lớp trình bày, không phải khóa định danh.

Ba cách viết mã quốc gia và khi nào dùng cách nào

Bộ tiêu chuẩn này cung cấp ba cách viết cho cùng một quốc gia, và mỗi cách có một lý do tồn tại riêng.

Cách viết Đặc điểm Thường dùng ở đâu
Hai chữ cái Ngắn nhất, dễ đọc với con người Trao đổi dữ liệu, giao diện, tên miền
Ba chữ cái Rõ nghĩa hơn, ít trùng ngẫu nhiên Tài liệu, báo cáo, hệ thống tài chính
Ba chữ số Không phụ thuộc bảng chữ cái Hệ thống cũ, nơi cần tránh lỗi gõ chữ

Điểm cần nhớ là cả ba cách viết cùng trỏ tới một quốc gia, nên chúng không phải là ba trường dữ liệu độc lập. Nếu bạn lưu cả ba mà không ghi rõ cái nào là nguồn chính, sớm muộn sẽ có bản ghi mâu thuẫn: mã hai chữ cái của nước này đi kèm mã ba chữ cái của nước khác.

Cách viết ba chữ số có một ưu điểm riêng đáng cân nhắc khi dữ liệu phải đi qua nhiều hệ thống khác nhau: vì nó chỉ gồm chữ số, người nhập khó gõ nhầm sang một mã khác còn hợp lệ. Đổi lại, nó khó nhớ với con người và khó đọc trong nhật ký hệ thống, nên thường chỉ dùng ở tầng lưu trữ.

Mã đơn vị hành chính khác gì mã quốc gia?

Bộ tiêu chuẩn quốc gia chỉ định danh quốc gia. Cấp dưới quốc gia có một bộ mã riêng, được tạo theo công thức gồm mã quốc gia, một dấu gạch nối, rồi tới mã do chính quốc gia đó quy định. Nhờ vậy, mã của một bang, một tỉnh hay một vùng luôn mang theo ngữ cảnh quốc gia của nó, và hai vùng cùng tên ở hai nước khác nhau sẽ không bị lẫn.

Tuy nhiên, cần phân biệt rõ bộ mã này với các bộ mã hành chính do từng quốc gia tự dùng cho thống kê, thuế hoặc bưu chính. Đó là những hệ thống khác nhau, có thể có độ dài, cách viết và cấp bậc khác nhau. Mã quốc tế không thay thế mã nội bộ, và mã nội bộ cũng không tự động trở thành mã quốc tế.

Vì sao không nên tự đặt mã cho quốc gia mới?

Khi hệ thống cần thêm một vùng lãnh thổ chưa có trong bảng mã, phản ứng đầu tiên thường là tự nghĩ ra một mã trông hợp lý. Đây là quyết định gây hậu quả lâu dài: mã đó chỉ có ý nghĩa bên trong hệ thống của bạn, sẽ xung đột khi bạn tích hợp với đối tác, và khi tiêu chuẩn quốc tế bổ sung một mã chính thức, bạn phải chuyển đổi dữ liệu cũ.

Cách làm an toàn hơn là tách bảng mã nội bộ khỏi bảng mã quốc tế. Bạn có thể dùng một mã nội bộ cho trường hợp đặc biệt, nhưng phải ghi rõ nó không phải mã quốc tế, và phải có sẵn đường chuyển đổi khi mã chính thức xuất hiện. Điều tương tự cũng đúng với các vùng lãnh thổ có tình trạng pháp lý đặc biệt, vì việc gán mã cho chúng không chỉ là chuyện kỹ thuật.

Mã quốc gia cũ hoặc không xác định thì xử lý ra sao?

Dữ liệu thực tế luôn chứa vài giá trị không nằm trong bảng mã hiện hành: mã của một thực thể đã giải thể, mã cũ còn sót trong hồ sơ nhiều năm, hoặc giá trị rỗng do người dùng bỏ qua trường. Nếu hệ thống từ chối cứng, bạn sẽ không thể nhập lại hồ sơ cũ, và nếu hệ thống chấp nhận tất, bạn sẽ có một cột dữ liệu không kiểm tra được.

Cách làm cân bằng là chia giá trị thành ba nhóm: mã hợp lệ theo bảng hiện hành, mã đã biết nhưng không còn hiệu lực kèm ghi chú, và giá trị không xác định được giữ nguyên nhưng bị đánh dấu. Nhóm thứ ba không nên bị tự động sửa, vì sửa sai sẽ làm mất thông tin gốc. Nếu bạn muốn xem cấu trúc địa chỉ của từng nơi để đối chiếu, bài định dạng địa chỉ quốc tế là điểm bắt đầu phù hợp.

Tra mã quốc gia trên trang này

Tiêu chuẩn quốc tế về mã quốc gia được công bố công khai trên trang của ISO về bộ mã ISO 3166, và đó là nguồn nên đối chiếu khi bạn cần xác nhận một mã cụ thể.

Với dữ liệu mẫu, trình tạo địa chỉ giả của trang này cho phép chọn quốc gia theo tên rồi sinh địa chỉ tương ứng, nên bạn không phải tự tra mã khi thử biểu mẫu. Bạn cũng có thể xem cách trình bày của từng nơi ở các trang quốc gia, ví dụ Đức, rồi đối chiếu với mã đang dùng trong hệ thống của bạn.

Dữ liệu sinh ra là tổng hợp và chỉ dùng cho kiểm thử phần mềm, không tương ứng với người hay địa chỉ thật.

Phần dành cho nhà phát triển

Hãy chọn một cách viết mã quốc gia làm nguồn chính và dùng nó xuyên suốt, kể cả trong tên cột, trong tham số giao diện lập trình, và trong tệp cấu hình. Việc chuyển đổi sang cách viết khác nên là một hàm duy nhất, có bảng tra rõ ràng, thay vì những đoạn xử lý rải rác ở nhiều nơi.

Những điểm khác nên chốt sớm:

  • Bảng mã nên được nạp như dữ liệu để cập nhật được mà không phải phát hành lại ứng dụng.
  • Với danh sách chọn trên giao diện, cần quyết định sắp theo mã hay theo tên hiển thị, và tên hiển thị phải theo ngôn ngữ của người dùng.
  • Mã quốc gia hai chữ cái rất dễ bị nhầm với mã đơn vị hành chính cùng độ dài, nên hãy đặt tên cột đủ rõ để phân biệt.
  • Kiểm thử ca mã viết thường, mã có khoảng trắng thừa, mã đã ngừng hiệu lực, và giá trị rỗng.
  • Ghi lại quyết định về việc có chấp nhận mã ngoài bảng hay không, vì người viết mã sau sẽ cần biết lý do.

Bước tiếp theo

Hãy kiểm tra xem hệ thống của bạn đang dùng cách viết nào và có nơi nào vô tình trộn hai cách với nhau không. Sau đó mở trình tạo địa chỉ giả, chọn vài quốc gia, và đối chiếu mã quốc gia trong dữ liệu sinh ra với bảng mã bạn đang dùng để phát hiện sớm những chỗ lệch.

Đọc tiếp

Bài viết về Trình tạo địa chỉ giả