Skip to main content

Multi-country adress database design

MULTI-COUNTRY ADDRESS DATABASE DESIGN

http://danielcoding.net/multi-country-address-database-design/
https://stackoverflow.com/questions/929684/is-there-common-street-addresses-database-design-for-all-addresses-of-the-world


http://www.upu.int/uploads/tx_sbdownloader/productSheetPostcodesDatabaseEn.pdf

http://www.upu.int/en/resources/postcodes/universal-postcoder-database.html

Google Place Detail API reveal some useful about its data structure design, and sure it very cool.

https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJGzHG3iMT5TQRgQ6MsXnL7xQ&key=GG_KEY_HERE&language=ja

   "result" : {
      "address_components" : [
         {
            "long_name" : "8",
            "short_name" : "8",
            "types" : [ "premise" ]
         },
         {
            "long_name" : "6",
            "short_name" : "6",
            "types" : [ "sublocality_level_4", "sublocality", "political" ]
         },
         {
            "long_name" : "1丁目",
            "short_name" : "1丁目",
            "types" : [ "sublocality_level_3", "sublocality", "political" ]
         },
         {
            "long_name" : "北前",
            "short_name" : "北前",
            "types" : [ "sublocality_level_2", "sublocality", "political" ]
         },
         {
            "long_name" : "北谷町",
            "short_name" : "北谷町",
            "types" : [ "sublocality_level_1", "sublocality", "political" ]
         },
         {
            "long_name" : "北谷町",
            "short_name" : "北谷町",
            "types" : [ "locality", "political" ]
         },
         {
            "long_name" : "中頭郡",
            "short_name" : "中頭郡",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "沖縄県",
            "short_name" : "沖縄県",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "日本",
            "short_name" : "JP",
            "types" : [ "country", "political" ]
         },
         {
            "long_name" : "904-0117",
            "short_name" : "904-0117",
            "types" : [ "postal_code" ]
         }
      ],
...

https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJfR8jHkRZwokRgllkzTBqhlM&key=GG_KEY_HERE&language=ja

    "result" : {
      "address_components" : [
         {
            "long_name" : "727",
            "short_name" : "727",
            "types" : [ "street_number" ]
         },
         {
            "long_name" : "Manhattan Avenue",
            "short_name" : "Manhattan Ave",
            "types" : [ "route" ]
         },
         {
            "long_name" : "Greenpoint",
            "short_name" : "Greenpoint",
            "types" : [ "neighborhood", "political" ]
         },
         {
            "long_name" : "Brooklyn",
            "short_name" : "Brooklyn",
            "types" : [ "sublocality_level_1", "sublocality", "political" ]
         },
         {
            "long_name" : "Kings County",
            "short_name" : "Kings County",
            "types" : [ "administrative_area_level_2", "political" ]
         },
         {
            "long_name" : "New York",
            "short_name" : "NY",
            "types" : [ "administrative_area_level_1", "political" ]
         },
         {
            "long_name" : "アメリカ合衆国",
            "short_name" : "US",
            "types" : [ "country", "political" ]
         },
         {
            "long_name" : "11222",
            "short_name" : "11222",
            "types" : [ "postal_code" ]
         }
      ],
...

address_components data contain a list of address properties, each have same structure:
{
  long_name:  => string
  short_name: => string
  types: [] => array/list
}

This is a clever design.
And one of another params is "lang=ja", so long_name property have been translated to language:
ie. US => "アメリカ合衆国"


Digging in to this lib for finding out how J2ME port to Android. I think It is simple because of both use Java but not sure about this. I have tried (at least have an idea) on using LibGDX to build a wrapper around J2ME and It seem not difficult. The most challenge path is the EXCEPTIONS, it's everywhere. For example, a J2ME game using binary image/photo (binary concat like css sheet) for memory saving... It is may not a special way of working but with me it is not familiar and when port to LibGDX/Android I have to handle it.

https://github.com/nikita36078/J2ME-Loader/blob/master/app/src/main/java/org/microemu/microedition/ImplFactory.java

Oh England as Province (yeah it have Scotland, Wales ... in GB or UK?)
GB           | イギリス              | SE1 9AF     |         | NULL     | England               | Greater London

This post mentioned about country_code used in ID (key),
https://stackoverflow.com/questions/3455297/mysql-using-string-as-primary-key
I am confused on choose use it or not, for example:
area_id = GB001 mean Great Britain London...
JP47 mean okinawa pref.

MySQL JSON real use case
https://medium.com/aubergine-solutions/working-with-mysql-json-data-type-with-prepared-statements-using-it-in-go-and-resolving-the-15ef14974c48

Comments

Popular posts from this blog

Rand mm 10

https://stackoverflow.com/questions/2447791/define-vs-const Oh const vs define, many time I got unexpected interview question. As this one, I do not know much or try to study this. My work flow, and I believe of many programmer is that search topic only when we have task or job to tackle. We ignore many 'basic', 'fundamental' documents, RTFM is boring. So I think it is a trade off between the two way of study language. And I think there are a bridge or balanced way to extract both advantage of two method. There are some huge issue with programmer like me that prevent we master some technique that take only little time if doing properly. For example, some Red Hat certificate program, lesson, course that I have learned during Collage gave our exceptional useful when it cover almost all topic while working with Linux. I remember it called something like RHEL (RedHat Enterprise Linux) Certificate... I think there are many tons of documents, guide n books about Linux bu

Martin Fowler - Software Architecture - Making Architecture matter

  https://martinfowler.com/architecture/ One can appreciate the point of this presentation when one's sense of code smell is trained, functional and utilized. Those controlling the budget as well as developer leads should understand the design stamina hypothesis, so that the appropriate focus and priority is given to internal quality - otherwise pay a high price soon. Andrew Farrell 8 months ago I love that he was able to give an important lesson on the “How?” of software architecture at the very end: delegate decisions to those with the time to focus on them. Very nice and straight-forward talk about the value of software architecture For me, architecture is the distribution of complexity in a system. And also, how subsystems communicate with each other. A battle between craftmanship and the economics and economics always win... https://hackernoon.com/applying-clean-architecture-on-web-application-with-modular-pattern-7b11f1b89011 1. Independent of Frameworks 2. Testable 3. Indepe