どうすべき国際地理的なアドレスに格納するリレーショナルデータベース?

StackOverflow https://stackoverflow.com/questions/1159756

  •  18-09-2019
  •  | 
  •  

質問

の保存国際地理的なアドレスのリレーションテーブル、その中で最も柔軟なスキーマ?あのアドレスするための記念施設として整備されたら、自分の分野、またはそれより無料テキストを使うことができます。

ある意味においても現場を離れ異なる形式のアドレスの異なるテーブル?例えば、テーブルを用USAAddress,CanadianAddress,UKAddress...?

役に立ちましたか?

解決

まめ私の思いから私のこのブログポスト レッスンアドレスの保管.

私の現在のプロジェクト"を含む、様々な仕事をこなしてい物流会社]ま貯蔵国際スしています。もちろん、研究のアドレスを全世界のデザインのこの部分のデータベースです。あァイル形式が複数存在します。に西洋世界がありますの使用はかなり均一の形式の数の違いが主:

  • 通りに数 -数値
  • ハウスはビル名 -[VarChar-英国では一部の住宅/ビルで指定された名前ではなく、数]
  • 通りに数接尾辞 [VarCharはほとんどの場合、Char(1)。]
    • A,ガバナンスやディスクロージャー
  • 通り名 "VarChar"を
  • トタイプ [VarCharまたはIntとした場合StreetTypesテーブル]
    • これまでに、私がその場で発音を確認することが262独自の種類の英語の世界がある、を忘れないその他の言語すなわちStrasse km圏内にあります。
  • 通り方向 [VarChar(2)]
    • N,E,S,W,NE,SE,NW,SW
  • アドレス型 [VarCharまたはIntとした場合にAddressTypesテーブル]
    • PO Box
    • アパート
    • 建物
    • 事務所
    • スイート
    • など---。
  • アドレス型の識別子 "VarChar"を
    • すなわちボックス番号、アパート番号、階数を覚えてアパート番号やオフィスを同時に英数字情報など1A
  • 地方自治体 [VarCharまたはIntとした場合市町村のテーブル]
    • 例えば、お二村の住所前町です。
  • 市町 [VarCharまたはIntとした場合の都市をテーブル]
  • 治地区 [VarCharまたはIntとした場合地区のテーブル]
    • 状態(米国)
    • 州(カナダ)
    • 連邦区メキシコ)
    • 郡(英国)
    • など---。
  • 郵便番地 "VarChar"を
    • Zip(米国)
    • 郵便番号(カナダ、メキシコ)
    • 郵便番号(英国)
  • [VarCharまたはIntとした場合国テーブル]

これカバーのほとんどの国でも、発注の分野が表示されることがあります。きのリストを表示形式で http://www.bitboost.com/ref/international-address-formats.html#Formats

例えば、多くの国の郵便コードが以前の都市の名前の通りの数の滝の後、通りの名前です。カナダ、米国および英国通りの数の前の通りの名前と郵便番号(またはZIP)の後の都市の名前です。

に不明な点があれば、ここでお答え分のアドレスに、異なる国からそれだけで生活困難になその他の分野のためのインスタンス報告といいます。の形式のうニケーション能力の向上に取り組アドレスに当社の物流データベースするアメリカ、カナダ、メキシコ及び英国では問題なくクリア。に対しても当社の全てのヨーロッパ、中国、日本、マレーシアードの事を指します。なったその他の国にもなった店内に住所の国からこれらの分野になります。

いこいのAddress1,Address2,Address3形式が他の人が見られる多くのデータベースが構文解析アドレス情報を収集することを意図したのは、英数字の文字列など単純ではない、特にがんを正しくご記入により、記事の誤植,ュなど。場合に別の分野で利用できる距離アルゴリズムのチェックが意味、利用率をチェック通りの名前に対し郵便番号や番号をチェック州の都市街路の名前など。みを行っている時なんかを表すstringおります。いうのは、想像を絶する。

QA住所データベースは、頭痛---。最も簡単な方法の簡素化人生をこの地域はすべての分野におけアピールできる情報を自動的に検証して正しいで入ります。確率距離アルゴリズムの正規表現できるの妥当性を確認入力フィードバックをユーザにどのような誤った提案に適して訂正に関するお知らせ"を参照。

一つ問題点を意識する道ではな名前がつけられていますがもりタイプまで覆うカナダ意識する必要があり、"通り道"トロントまで旅行す大きな時間でご利用の場合はAddress1、2つ、3つの形式です。これが他の場所でも、がんを意識して、この単一インスタンスのための悲鳴を上げ作?!

他のヒント

アドレス形式を過剰に分析しないように注意してください。あなたが行うと、あなたは、ほとんどのユーザーは、を作業する必要があります仕様で終わることは非常に可能性が高いです。の周りに、効果的に間違ったフィールドを使用するためにそれらを強制的に、または唯一の主要分野を充填し、余分なフィールドを無視。

をシンプルなものにしてください。

あなたが英語やスペイン語などの孤立語と異なる言語で作業を開始するとき、

BenAlabasterで述べたようなStreetTypeは、問題が発生します。

野生で取得することができますどのように悪いものをお見せするには:「アンリエット」+「ローランドホルスト」+「straat」から構築アムステルダムの「アンリエットローランドHolststraat」、「ローランドHolststraat」と略記することができます、または "ローランドHolststr。" として、またはスペルミス "HRHolststr。"天候に応じて、または「アンリエットローランド・ホルストのstraat」、。あなたは地球上の各国の最新のストリート・レジスタを持っていない限り、あなたはどこにも行かないでしょう。

そして最後に、いくつかの多言語の国では、名前が別の言語と異なることができることを注意してください!宛先の優先言語に応じて、「Avenuデュポート」と「Havenlaan」:多くの街は、フランスののオランダ語名の両方を持っているブリュッセルの例えば。 (Googleマップは、念のために、交互に両方の名前が表示されます。)

あなたはここに巧妙なトリックのすべての種類を考案しようとすることができますが、営業担当者があります。これを理解するつもりは?

きるようになりたいものが大きく関係している。

がその場で発音を確認することがで常に使いやすいアドレスその他の目的の検証などに対しても下の状態に戻データは送料からのアップ/フェデックス)だけを分離する。

ここでの私的使用のためのアドレス:

  • 住所1号線
  • 住所2
  • アドレスライン3
  • 都市
  • 地域
  • 郵便番号

の編集: ほとんどの状況にあると思いますか。の表記は、十分な分野で一般に十分なほとんどの国のスしています。

住所

としての極性と反対の回答@BenAlabaster提供していきたい:

address       TEXT(300)
postal_code   VARCHAR(15)
country_code  VARCHAR(2)

クライアント側の形でレイアウトができて貴重な資料が閲覧又は利用のマルチライン入力、ユーザが手動でタイプをアドレス)その後の追加の改行のアドレスが必要です。

自国の表のようにして

country_code  VARCHAR(2)
country_name  VARCHAR(255)

また、できてい 一つ 次の

postal_code_required  TINYINT(1)
postal_code_regex     VARCHAR(255) NULL DEFAULT NULL

その後は以下のリストをデザインカントリーテーブル:

こう逸話を持つ人のためにご理解い:

話して人暮らした多くの大陸欧州、アジア、北アメリカ).私の経験の経験について、それでいてく使用するシステムの

  1. 三線をさせていただきますタイプ一アドレスです。それぞれ三つのラインを現地の郵便サービスしていただいたものとさせていた、verbatim.を利用する文字を設定したい;UTF-8になります。
  2. システムの場合、事業の要件を必要とするかを指定し、特定の情報などを郵便番号、県があります。-)をお願いしますによる業務要件に対応するために、味のような分析;これらのビットの情報は共有地の郵便サービスにない場合でも起こったく同じ情報を一つのラインから1点ます。
  3. してドロップダウンが問われるかを指定しカテゴリ場所の住所までのラインのポイント1ポイント以上、かな国です。
  4. が発生する場合には、解析情報の提供を行っているラインのポイント1ポイントを使用私の答えを点3を選択regex.施設まで格安料金プランを正規表現に対する情報ポイント1ポイントに構文解析します。くのユーザインタフェース要素のポイント2の出力からregex.またそれを補正することautofilled情報の利用くことで改善regex.同様に、どうだいの機会を見直し、正しい出力をoffにregex:いよいコミュニケーションをなんですよ。

システムの構築このように思うのは、私の人生す。特に私の送信メール送信s!メールを送信する郵便につながるインターネットでデータ復旧会社はほとんど機能内蔵。

ればインターネットでデータ復旧会社は社内の知識の特定の郵便システムの使い選択ポイント3お知らせするビューで表示です。多くの人かの郵便制度を見込んパッケージ;ばんを選んだポイント3しているかどうかチェックできるビューを見適した米国のアドレスです。場合に選択については国るインターネットでデータ復旧会社を知っても--表示汎用タイルなどの世;な力を使えるようになったのでASCII。

やりましょう現実がここに--築、優データベースのすべてのグローバル郵便システム(公共および民間のは至難の業でない場合にはありえない。があり、例えば、郵便システムだける最適な組み合わせで、最後はマイルキャリア私がアドレスがあります。ことができ渡債とキャリアパッケージには非常に便利です。びマッピング地元の知識の端の場合キャリアへのデータベースでは不可能です。

をご覧くださいゲーデル.(そして自分自身に尋ねればねを使用しようとしている公理的システムのモデルは、宇宙の談話、または何らかの演算のようにセット理論は関係代数.)

コメントのBen雪花の回答:フォーマットのアドレスに基づき、あらかのフォーマットテーブルの順序付けのため、列のそれぞれの国の個別されています。

  • AddressFormat(CountryCode,FieldName,FieldOrder)

のフィールド順でコードが複雑になグリッドレイアウトもございます

パスポートは分離アドレスによります。この混沌として国の数が増えますの土地にしたい場合はトラブルのすべてのアドレスも、国際的なクライアントを有するアドレス型を示唆するベンにも繋が曖昧できるし、アドレスの両方の建物番号とアパート番号です。をとることができると思いますかアパート錯体が各建物の様々な名前がつけられている。これは非常に共通です。

私は、国際的なアドレスをフォーマットする https://github.com/commerceguys/addressing のライブラリを使用し、彼らこれらの要素を使用します:

Country
Administrative area
Locality (City)
Dependent Locality (in: BR, CN, IR, MY, MX, NZ, PH, KR, ZA, TH)
Postal code
Sorting code
Address line 1
Address line 2
Organization
Recipient

このdoen'tヘルプあなたは通り(名前、家屋番号、...)を解析したい場合。

ところで。あなたは多言語の国のリストを探している場合: https://github.com/umpirsky/country-list

唯一の方法は、それらを分割することです

Name varchar,
Title varchar,
StreetAddress varchar,
StreetAddressLine2 varchar,
zipCode varchar,
City varchar,
Province varchar,
Country lookup

ほぼすべての国は、アドレスデータを持つため、それ独自の基準を持っている、とevey国は、ジップコードの異なるフォーマットを有しているからである。
あなたは<のhref = "https://stackoverflow.com/questions/929684/is-there-common-street-addresses-database-design-for-all-addresses-of-the-に問題の小さなサンプルを持つことができます世界/ 938843#938843" >似質問から私のポストでます。

これは、いくつかのアドレスの規則を持っている国があるので、すべての国のためのアドレスを分離するために意味をなすべきではありません。通りは大きな都市のアドレスにいる間、いくつかの人気の規則は、小さな村、唯一の村の名前と番号で通りを持っていないなどがあります。他の都市は(これが本当であれば、ハンガリーから、誰かが実際に確認することができる)そのようなアドレスを持っていませんが、ブダペスト、(市の地区の数によって、あなたの異なるそれら)と同じ名前を持ついくつかの通りがあります - 私は、ハンガリーの首都であることを学びました。だから、アドレス形式の総数は、この国のアドレスフォーマットの数を乗じnumer_of_countriesは...別のテーブルで行うことができますされますが、行うには恐ろしい仕事になります。

私は、これはすでに答えている非常に古いトピックです知っているが、私は同様に私の2セントを投げるだろうと思いました。これは、すべてのものを、プロジェクトの目標とどのようにあなたがあなたのターゲットユーザーはアドレスを入力することを期待に依存しています。ベンの提案は、あなたが正確にアドレスを解析することができますが、一方で長い(そしておそらくもっとイライラ)のユーザデータ入力処理のために作ることができます。スティーブンWrightonの提案は単純であり、ユーザーは、結果としてアドレスを入力するために容易である可能性があります。

私はまた、単純に1列になど典型的な通りの数、種類、通りの名前、ユニット/アパート番号、すべてをキャプチャします「アドレス」欄を持っていたいくつかのモデルを見てきまし市、国、地域を維持しながら、などの他の列の中。アドレス1、アドレス2、およびアドレス3を除き、スティーブンのモデルと同様に、すべての列に集約します。

私の意見は最も柔軟性のあるモデルが柔軟なのあなたの解釈に応じて、最も制限のあるもの、になりがちということです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top