web-dev-qa-db-ja.com

世界中のすべての住所に共通の住所データベースの設計はありますか?

私はプログラマーであり、正直に言って、世界の番地の構造を知りません。私の国ではどのように構成されているのでしょうか?)使い方はとてもシンプルで、クエリは高速で、1つのIDで識別する世界のすべての住所を動的に保存する必要があります。
どうもありがとう

113
Arsen Mkrtchyan

標準セットのフィールドで、さまざまな国の住所を表すことができます。名前付きまたは番号付きの建物が位置する名前付きアクセスルート(道路)の基本的な考え方は、中国を除き、かなり標準的です。他のほぼ普遍的な概念には次のものがあります。集落(市/町/村)の命名。これは一般的に地域と呼ばれます。領域に名前を付け、英数字の郵便番号を割り当てます。郵便番号(郵便番号とも呼ばれる)は、一部の国でのみ数値であることに注意してください。本当に汎用的になりたい場合は、多くのフィールドが必要になります。

UPU Universal Postal Unionは、多くの国の住所データを 標準形式 で提供します。 UPU形式は、国全体のすべての住所(使用可能なフィールド精度まで)を保持するため、リレーショナルであることに注意してください。可能性のあるすべての住所のごく一部のみが保管される顧客住所を保管する場合、すべてのフィールドと行ごとに1つの住所を含む単一のテーブル(またはフラット形式)を使用することをお勧めします。

アドレスを保存するための合理的な形式は次のとおりです。

  • 住所行1〜4
  • 局所性
  • 領域
  • 郵便番号(または郵便番号)

アドレス行1〜4は、次のようなコンポーネントを保持できます。

  • 建物
  • サブビル
  • 施設番号(住宅番号)
  • 前提範囲
  • 大通り
  • 細道
  • 二重依存の局所性
  • サブローカリティ

頻繁に使用される住所行は3行のみですが、これでは不十分なことがよくあります。もちろん、正式な形式ですべての住所を表すためにより多くの行を必要とすることも可能ですが、コンマは常に行区切り文字として使用できます。つまり、情報をキャプチャできます。

通常、データの分析は地域、地域、郵便番号、国ごとに実行され、これらの要素はユーザーがデータを入力するときに理解しやすいものです。これが、これらの要素を個別のフィールドとして保存する理由です。ただし、ユーザーに郵便番号または地域を強制的に提供しないでください。ローカルで使用することはできません。

局所性、特に地図の局所性と郵便の局所性の区別が不明確になることがあります。郵便区域は、郵便局によって見なされる区域であり、時には近くの大きな町である場合があります。ただし、郵便番号は通常、問題や矛盾を解決し、公式の郵便局地が使用されていない場合でも正しい配達を可能にします。

114
Edward Ross

Database Answers をご覧ください。具体的には、これは多くの場合をカバーします:

(すべての可変長文字データ型)

AddressId
Line1
Line2
Line3
City
ZipOrPostcode
StateProvinceCounty
CountryId
OtherAddressDetails

enter image description here

43
Mitch Wheat

このデータを保存する主な目的を自問してください。実際にその住所の人にメールを送るつもりですか?人口統計、人口を追跡しますか?基本的な認証/検証の一環として、発信者に正しいアドレスを尋ねることができますか?上記のすべて?上記のどれでもない?

実際のニーズに応じて、a)それは実際には問題ではなく、フリーテキストアプローチを採用できるか、b)すべての国の構造化/特定フィールド、またはc)国固有のアーキテクチャを決定します。

25
andora

住所に最も近いのは都市である場合があります。

私はかつて、インドのすべての中等学校をGoogleマップに配置するプロジェクトを持っていました。 Google APIを使用して気の利いたプログラムを作成し、それは非常に簡単だと思いました。

次に、クライアントからデータを取得しました。学校の住所には、「市場の向こう、床屋の隣」や「古いバス停の近く」などがありました。

残念ながら、Google APIはその形式をサポートしていないので、私の仕事はずっと難しくなりました。

12
Emily

国際住所の場合、情報がフィールドに分割されている場合、情報をフォーマットする方法を見つけるのは非常に困難です。たとえば、イタリアの住所では次を使用します。

<street address>
<Zip> <town> <region>
<country>

といった

Via Eroi della Repubblica
89861 Tropea VV
Italy

これは、2番目の行の米国住所の順序とはかなり異なります。

SOの質問:

また、タグ ' 郵便番号 'もチェックアウトしてください。


Edit:地域と町の逆順- [〜#〜] upu [〜#〜]

9

https://Gist.github.com/259744 プロジェクトのために、ISOコード、トップレベルドメイン、電話コード、車のサイン、Zipの長さと正規表現。残念ながら、ドイツ語のみの国名とコメント...

5
Hraban

いいえ、標準のアドレス指定スキームはありません。通常、国によって異なります。 Universal Postal Unionでさえ 世界のアドレス、全員の住所 がないと述べた。これに対する最善の解決策は、 ISO 3166 として知られる2/3文字の国コード標準を使用し、他のすべてを国の標準で処理することです。

ただし、プロジェクトで簡単にアクセスできるツールを使用したい場合は、 Google Place API を試してください。

2
Abel Callejo

いいえ、まったくありません。米国と 日本の住所 の動作を比較すると、不可能であることがわかります。

更新:

考え直して、何でもできますが、トレードオフがあります。

1つのアプローチは、アドレスとaddress_attributeテーブルで問題をモデル化することです。これらのテーブルは1:mの関係で、何でもモデル化できます。 address_attributeテーブルには、pk、名前、値、およびアドレスの親のpkを指すfkがあります。これは、名前と値のペアでマップを使用するのとほとんど同じです。

トレードオフは、住所が必要になるたびにJOINを実行する必要があることです。また、address_attributesの名前を調べて、毎回何を処理しているかを把握する必要があります。

別のアプローチは、住所が世界中でどのようにモデル化されるかについて、より包括的な研究を行うことです。オブジェクト指向の世界では、西中国の住所クラス(street1/street2/city/state/Zip)と、その他の日本、中国用に、アドレス空間をタイル化するのに必要な数だけ持つことができます。次に、マスターアドレステーブルと他のタイプの子テーブルがあり、それらの間に1:1の関係があります。

AmazonまたはeBayはどのようにそれを行いますか?彼らは国際的に出荷されます。ロケール固有のUI機能はありますか?私は米国のロケールのみを使用しました。

2
duffymo

どのように自由形式でフィールドを使用するかによって異なります。 1つの自由形式の住所フィールドは、明らかに常に機能しますが、地理の絞り込みにはあまり役立ちません。

あなたが抱える問題は、国によって地理的階層のレベルが多すぎるということです。ちなみに、国によってはどこにも「番地」がありません。

あまり賢くしようとしないことをお勧めします。

2
jerryjvl

ここでの他の回答とは異なり、構造化された住所データベースを持つことは可能だと思います。

帽子をかぶって、次の構造を考えることができます。

  • 地域(州/県)
  • 市区町村(市区町村)
  • サブローカリティ(郡/ローカリティの他の細区分)
  • 通り

しかし、それを十分に速く照会する方法は?

私が常に達成できると思う方法の1つは、国によって異なりますが、国内では堅実な郵便番号(または郵便番号)を要求することです。

これにより、世界中の郵便局が提供する情報を中心にデータを構成できます。

2
Paulo Santos

niversal Data Model fameのLen Silverstonは、GEOGRAPHIC BOUNDARIESそして、あなたがどれだけの自由形式性を受け入れるかによって、単純なSTREET ADDRESS LINEsまたは国ごとの派生物。

2
David Schmitt

設計は目的に強く依存する必要があります。一部の人々は、データを構造化する方法を投稿しています。だから、単に誰かにs-mailを送りたいだけなら、それはうまくいくでしょう。このデータをナビゲーションに使用する場合、事態は複雑になります。カーナビゲーションには、交通情報(一方通行道路など)を含めるための追加の構造が必要になりますが、徒歩ナビゲーションには多くの追加データが必要になります。ここに小さな例があります。私の街では、私の近所は公園の近くにあります。公園の隣には、飛行場になった旧飛行場(実際にはヨーロッパで最も古い飛行場の1つ)があります。航空博物館の隣にはビジネスパークがあります。博物館の番地は39ですが、ビジネスパークの番号は39Aから始まります。したがって、39と39Aは近いように見えるかもしれませんが、一方から他方へ歩くには約1マイルかかります(車で行く場合はさらに長くなります)。
これは私の都市からのほんの小さな例です。おそらく多くの例外を見つけることができると思います(特に、すべての国の田舎や荒野で)。

1
smok1