39

データベースに国際住所を保存するための「最良の」方法は何ですか?スキーマの形式で回答し、自分が行った方法を正規化する(またはしない)ことを選択した理由を説明します。また、各フィールドのタイプと長さを選択した理由も説明してください。

注:必要と思われるフィールドはユーザーが決定します。

4

6 に答える 6

25

プレーンな自由形式のテキスト。

世界中のすべての郵便番号を検証するのは非常に困難です。固定された国のリストは政治的にセンシティブすぎる。必須の州/地域/その他の行政区画は、まったく不適切です (グレーター・ロンドンはまったく郡ではないため、住んでいる郡は尋ねられないことがよくあります)。

さらに言えば、それは単に不必要です。あなたのアプリケーションが、深刻な方法で住所をモデル化している可能性はほとんどありません。郵送先住所が必要な場合は、郵送先住所を尋ねてください。ほとんどの人は、住所以外のものを入力するほど愚かではありません。そうする場合、新しく購入したアイテムにバイバイのキスをすることができます。

これに対する例外は、とにかく 1 つの国に自然に制約される何かをしている場合です。この状況では、たとえば、{ 郵便番号、番地 } のペアを要求する必要があります。これで住所を特定するのに十分です。米国の拡張郵便番号で同様のことを達成できると思います。

于 2008-08-23T19:04:38.800 に答える
9

過去に、私は彼らのウェブサイトのups / fedex配送先住所フォームの後に国際的である必要があるフォームをモデル化しました(彼らが国際的な注文を処理する方法を知らない場合、私たちは皆うんざりしています)。それらが使用するフィールドは、スキーマを設定するための参照として使用できます。

于 2008-09-29T11:24:22.713 に答える
5

一般に、アドレスが必要な理由を理解する必要があります。発送・郵送用ですか?次に、実際には1つの要件のみがあり、国を分離します。他の行は自由形式で、ユーザーが入力できます。この理由は、メールの一般的な転送戦略です。外国への受信メールは、他のアドレス行を見ずに転送されます。したがって、詳細情報は、その国にあるメールソーターによってのみ解析されます。受信者のように、彼らは全国大会に精通しているでしょう。

(UPSは、いくつかの小さなヨーロッパ諸国をまとめる可能性があります。たとえば、すべての低国はおそらくベルギーからサービスを受けています。この考えは今でも当てはまります。)

于 2008-09-29T11:31:27.750 に答える
2

Facebookに過度の敬意を払わないこと。ただし、データベースの全体的な構造は、毎日起動する多くの Web アプリケーションで見落とされているようです。明らかに、ハードワークなしですべての潜在的な変数をアドレス構造でカバーする完璧なソリューションがあるとは思いません。とはいえ、オートコンプリートと組み合わせることで、Facebook は位置入力データを取得し、冗長なエントリの大部分を排除することができます。これを行うには、データベースを十分に整理して、オートコンプリート情報を低コストでエラーの少ない方法でクライアントにリアルタイムで提供し、既存のリストから多かれ少なかれ正しい場所を選択できるようにします。

最善の解決策は、目的の地理的範囲を含むサードパーティのデータベースにアクセスし、それを使用してユーザーの位置情報を最初にシードすることだと思います. これにより、独自のものを作成するための基礎作業を避けることができます。運が良ければ、新しいユーザーがサードパーティのサプライヤーから直接正しいオートコンプリート情報を受け取ることができるようにすることで、サーバーの負荷を軽減できます。最終的には、都市、国などの位置情報のほとんどのオートコンプリートを、ユーザー入力データから独自のデータベースに含まれる情報から入力できるようになります。

于 2011-05-08T22:57:27.243 に答える
2

国/都市と住所のテキストを追加しても問題ないと思います。レポートでは、国と都市を区別する必要があります。マネージャーは、あなたが予期しないようなレポートを常に要求します。私は、大規模なデータベースを介して LIKE クエリを実行することを好みません。

于 2009-09-18T19:19:53.887 に答える
-3

データの使用方法について、もう少し詳しく説明する必要があります。たとえば、City、State、Country などのフィールドは、単一のテーブル内のテキストにすることも、外部キーで別のテーブルにリンクされたコードにすることもできます。

最も簡単なのは

Address_Line_01 (必須、空白以外) Address_Line_02 Address_Line_03 Landmark City (必須) Pin (必須) Province_District State (必須) Country (必須)

上記のすべては、適切なフィールド長を持つ Text/Unicode にすることができます。

該当する電話番号。

于 2008-08-23T18:50:17.213 に答える