Menu

Định dạng SSN Mỹ và những dải số không bao giờ cấp

SSN của Hoa Kỳ gồm chín chữ số viết thành ba nhóm, nhưng có những dải số chưa từng được cấp. Bài này giải thích cách đọc cấu trúc đó, vì sao nó không phải thẻ căn cước, và cách dùng nó trong dữ liệu thử.

Đăng ngày

  • SSN
  • dữ liệu thử
  • Hoa Kỳ

Định dạng SSN Mỹ trông đơn giản: chín chữ số, thường được viết thành ba nhóm ngăn bằng dấu gạch nối. Nhưng chính vì trông đơn giản nên rất nhiều biểu mẫu và đoạn kiểm tra viết sai. Bài này giải thích từng nhóm số có nghĩa gì, những dải số chưa từng được cấp, và lý do bạn không nên coi số an sinh xã hội là một loại giấy tờ tùy thân.

SSN được viết như thế nào?

Số an sinh xã hội Hoa Kỳ có đúng chín chữ số. Khi in ra, người ta chia thành ba nhóm: nhóm đầu ba chữ số, nhóm giữa hai chữ số, nhóm cuối bốn chữ số, ngăn nhau bằng dấu gạch nối. Cách viết có gạch nối là quy ước cho dễ đọc, còn giá trị thật vẫn là chín chữ số liền nhau khi lưu trữ.

Ba nhóm đó có tên riêng. Nhóm đầu thường được gọi là mã vùng, nhóm giữa là mã nhóm, nhóm cuối là số thứ tự. Trước đây người ta tin rằng nhóm đầu cho biết nơi cấp và nhóm giữa cho biết thứ tự đăng ký, nhưng cách hiểu đó đã lỗi thời: từ năm 2011, cơ quan cấp số dùng cách gán ngẫu nhiên, nên các chữ số trong số không còn mô tả nơi cấp hay thời điểm cấp nữa.

Những dải số chưa từng được cấp

Cơ quan quản lý an sinh xã hội Hoa Kỳ công bố rõ một số dải số không bao giờ được đưa vào sử dụng. Biết danh sách này rất hữu ích, vì nó cho bạn một cách kiểm tra rẻ tiền để loại bỏ dữ liệu rác trước khi lưu.

Nhóm Dải không bao giờ cấp
Mã vùng 000, 666, và toàn bộ khoảng từ 900 tới 999
Mã nhóm 00
Số thứ tự 0000

Ý nghĩa thực tế của bảng này là: một chuỗi chín chữ số đúng hình dạng vẫn có thể là số không hợp lệ. Nếu biểu mẫu của bạn chỉ đếm đủ chín chữ số rồi cho qua, bạn sẽ nhận cả những giá trị mà không cơ quan nào từng cấp cho ai, và những giá trị đó sẽ nằm lại trong cơ sở dữ liệu của bạn như một lỗi dữ liệu khó truy.

Vì sao không thể đoán nơi sinh hay năm sinh từ SSN?

Vì các chữ số không mang thông tin đó nữa. Trước năm 2011, mã vùng có liên hệ với bang nơi cấp, nên người ta hay dùng nó để phỏng đoán. Từ khi chuyển sang gán ngẫu nhiên, mối liên hệ đó không còn, và bất kỳ đoạn mã nào cố suy ra tuổi hay quê quán từ chín chữ số đều đang dựa trên một giả định đã sai.

Hệ quả là những phép kiểm tra kiểu này không chỉ vô ích mà còn gây hại. Chúng từ chối nhầm người dùng hợp lệ, đồng thời tạo cảm giác an toàn giả khi cho qua một con số chưa từng được cấp.

SSN có phải là thẻ căn cước không?

Không. Đây là điểm bị hiểu sai nhiều nhất ở ngoài nước Mỹ. Hoa Kỳ không có một loại thẻ căn cước công dân bắt buộc dùng cho mọi công dân, và số an sinh xã hội ra đời cho mục đích theo dõi thu nhập, không phải để chứng minh danh tính trước công chúng.

Vì vậy, đừng thiết kế hệ thống của mình như thể con số này là một định danh công dân đáng tin. Nó không xác nhận người đang nhập là ai, và việc ai đó đọc đúng chín chữ số không chứng minh được gì cả. Nếu sản phẩm của bạn cần xác minh danh tính ở mức nghiêm túc, đó là một quy trình riêng với giấy tờ do cơ quan có thẩm quyền cấp, không phải một ô nhập chín chữ số.

Dùng SSN trong dữ liệu thử thế nào?

Trong môi trường thử, bạn cần những giá trị đúng định dạng để biểu mẫu và phép kiểm tra chạy được, nhưng tuyệt đối không nên lấy số của bất kỳ ai. Trình tạo dữ liệu danh tính của trang này sinh ra những giá trị như vậy theo đúng cấu trúc ba nhóm, chỉ dùng cho kiểm thử phần mềm, không ứng với một người có thật, và không dùng để mạo danh ai.

Khi cần thử cả những trường hợp xấu, hãy chủ động đưa vào mẫu các giá trị thuộc dải không bao giờ được cấp, mẫu thiếu chữ số, mẫu có dấu cách hoặc dấu chấm thay cho gạch nối, và mẫu có ký tự chữ cái lẫn vào. Biểu mẫu đạt yêu cầu là biểu mẫu từ chối được tất cả những trường hợp đó, chứ không phải biểu mẫu chỉ chạy đúng với dữ liệu đẹp.

Nếu bạn xử lý nhiều quốc gia cùng lúc, đừng giả định rằng mọi nơi đều dùng một con số dài chín chữ số như vậy. Độ dài và bộ ký tự khác nhau rất nhiều giữa các nước, như bài độ dài số giấy tờ tùy thân theo quốc gia trình bày, và Hoa Kỳ chỉ là một trường hợp trong đó.

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

Việc kiểm tra nên dừng ở hai bước: xác nhận đúng chín chữ số sau khi bỏ hết ký tự phân cách, và loại các dải số bị chặn nêu ở trên. Mọi bước suy luận thêm về nơi cấp, năm sinh hay tính hợp lệ thật đều không có cơ sở, và theo thời gian sẽ trở thành nguồn lỗi giả.

Vài điểm nên chốt khi viết phép kiểm tra và khi dựng dữ liệu thử:

  • Chuẩn hóa trước khi so sánh: bỏ gạch nối, bỏ dấu cách, bỏ dấu chấm, rồi mới đếm chữ số. Người dùng nhập đủ kiểu phân cách khác nhau, và tất cả đều là cùng một giá trị.
  • Khoan dung với cách viết, nghiêm khắc với độ dài. Ba nhóm ba hai bốn là quy ước trình bày, không phải yêu cầu bắt buộc khi lưu.
  • Đừng lưu giá trị nguyên văn nếu không cần thiết. Nếu chỉ cần bốn chữ số cuối cho mục đích hiển thị, hãy chỉ lưu bốn chữ số cuối.
  • Kiểm tra chéo với quốc gia trong cùng bản ghi. Một hồ sơ mang quốc gia khác nhưng lại có số an sinh xã hội Hoa Kỳ là dấu hiệu dữ liệu không tự nhất quán.
  • Trong dữ liệu thử, hãy ghi rõ nguồn gốc tổng hợp để không ai nhầm nó với số thật khi đọc báo cáo lỗi hay xem ảnh chụp màn hình.

Cơ quan quản lý an sinh xã hội Hoa Kỳ là nguồn chính thức cho các quy tắc cấp số, và bạn có thể đối chiếu tại trang chính thức của cơ quan này.

Bước tiếp theo

Hãy mở lại phép kiểm tra số an sinh xã hội trong dự án của bạn và xem nó có chặn đúng ba dải số bị cấm hay không. Sau đó, mở trình tạo dữ liệu danh tính, chọn Hoa Kỳ và sinh vài bản ghi mẫu để thử cả trường hợp hợp lệ lẫn trường hợp bị chặn trước khi đưa vào bộ kiểm thử tự động.

Đọc tiếp

Bài viết về Trình tạo dữ liệu danh tính và kiểm thử trực tuyến