Lưu trữ địa chỉ gửi thư trong cơ sở dữ liệu: Tôi nên sử dụng cấu trúc nào cho các ứng dụng Quốc tế?


8

Tôi sẽ có người dùng quốc tế sử dụng cơ sở dữ liệu của mình, nhưng tôi không biết hệ thống gửi thư hoạt động bên ngoài Hoa Kỳ như thế nào.

Các khái niệm "Thành phố", "Bang, Quốc gia và có thể là" Zip "có đủ để nắm bắt bất kỳ phân cấp nào không (ngay cả khi chỉ sâu 2 cấp: (thành phố / quốc gia)


1
Bạn luôn có thể thêm một trường khác intl_addrs_line_3để biết thêm thông tin không được nắm bắt bởi thành phố, tiểu bang / tỉnh, quốc gia, mã bưu điện.
Thất vọngWithFormsDesigner

Câu trả lời:


8

Sử dụng một trường văn bản đơn giản!

Trừ khi bạn đang xây dựng cơ sở dữ liệu để tối ưu hóa phân phối hoặc sử dụng cục bộ cao khác, bạn chỉ nên tiếp tục và lưu trữ địa chỉ đầy đủ dưới dạng trường văn bản với các ngắt dòng tiêu chuẩn.

Nếu có thêm thông tin mà bạn cần, chẳng hạn như mã zip hoặc đường phố để sắp xếp và phân nhóm để bạn được giảm giá hàng loạt thư, bạn có thể lưu trữ thông tin đó trong một trường bổ sung hoặc chỉ xác định nó tại thời điểm gửi thư logic khá đơn giản. (Hoặc bạn có thể cung cấp cho mỗi địa chỉ một khóa vĩnh viễn và có thông tin giảm giá được cung cấp theo cách của các bảng khác.)

Bây giờ, tôi không nói rằng bạn không nên cung cấp một số biểu mẫu địa chỉ nhiều phần với danh sách thành phố và tiểu bang và có lẽ là tham chiếu tự động đến API địa chỉ dịch vụ bưu chính của một quốc gia , nhưng bạn không hỏi về cách tạo biểu mẫu cho đầu vào của người dùng, bạn hỏi làm thế nào để lưu trữ địa chỉ trong cơ sở dữ liệu.


Tất nhiên, nếu bạn làm biểu mẫu đó, bạn có thể muốn lưu trữ một blob JSON hoặc XML để các trường có thể được điền lại, nhưng đó không phải là dữ liệu mà chính cơ sở dữ liệu của bạn cần phải quan tâm ...


... Và 'logic đơn giản' nào sẽ cho phép bạn xác định mã zip là gì từ một đốm màu? Mã zip của Mỹ có 5 chữ số (thực tế là 9) và được đặt ở cuối địa chỉ; Mã zip của Canada có dạng A0A 0A0 và được đặt ở cuối; Mã zip của Nhật Bản có 7 chữ số và thường được đặt ở đầu : Tối thiểu, bạn sẽ muốn lưu trữ quốc gia (mặc dù điều đó có vấn đề chính trị), nếu chỉ để biết định dạng nên là gì. Vì lý do hiệu suất, mọi thứ bạn tìm kiếm / sắp xếp phải nằm trong một trường riêng biệt, tại thời điểm đó bạn có thể nên tách nó ra ...
Clockwork-Muse

SELECT * FROM Customers C INNER JOIN PostalCodes P ON C.Address LIKE '%'+P.code + '%' Và tôi đã lưu ý rằng bạn có thể bao gồm các trường nhóm và sắp xếp riêng biệt, trên cùng một bản ghi hoặc trong một bảng riêng biệt có mối quan hệ nhiều-nhiều giữa các địa chỉ và các khía cạnh có thể sắp xếp.
DougM

Chà, đây là hy vọng không có địa chỉ nào có dữ liệu tìm mã zip từ một quốc gia khác! Mặc dù vấn đề lớn hơn là trên các cơ sở dữ liệu có kích thước bất kỳ, điều này sẽ bỏ qua các chỉ số ... đó là lý do tại sao, như bạn nói, chúng nên nằm trong các trường riêng biệt.
Clockwork-Muse

6

Giống như với tất cả mọi thứ, có một tiêu chuẩn quốc tế. Trong trường hợp này, đó là ISO / IEC 19773 Phần 08: Cấu trúc dữ liệu cho dữ liệu bưu chính UPU . Nhưng như thường lệ với các tiêu chuẩn quốc tế, chúng thực sự phức tạp. Trang này có 30 trang và định nghĩa khoảng 50 yếu tố có thể là một phần của một địa chỉ bưu chính hoàn chỉnh để bao quát mọi sơ đồ địa chỉ có thể được sử dụng ở đâu đó trên thế giới.

Mặc dù đây có thể là cách chính xác để lưu trữ một địa chỉ, nhưng nó có thể không phải là địa chỉ thực tế .

Để biết tổng quan về cách các địa chỉ ở các quốc gia khác nhau, bạn có thể muốn xem bài viết trên Wikipedia về địa chỉ bài đăng . Như bạn thấy hầu hết tất cả các quốc gia đều sử dụng người, số nhà, đường phố và thành phố (nhưng có một vài trường hợp kỳ lạ, như Iran, nơi các tòa nhà có tên thay vì số hoặc Nhật Bản, nơi một số thành phố sử dụng hệ thống tọa độ ). Ngoài ra, một số quốc gia được chia thành các khu vực và một số quốc gia chia chúng thành các khu vực phụ. Hầu hết các quốc gia sử dụng mã zip có độ dài khác nhau và bạn thường có thể mong đợi họ mang thông tin giống như khu vực, tiểu vùng và thành phố, nhưng thông tin này thường được dự kiến ​​sẽ xác minh rằng mã zip là chính xác.

Vậy điều đó có nghĩa gì đối với nhà phát triển cơ sở dữ liệu địa chỉ quốc tế thực sự? Được linh hoạt. Không yêu cầu trường và cho phép một số trường mục đích chung tùy chọn có thể được sử dụng để đại diện cho các yêu cầu khu vực.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.