5

私は SQL とリレーショナル データベースに不慣れで、よくある問題だと思います。

私はウェブサイトを作成しており、各ユーザーが投稿を送信するときに、郵便番号または市/州のいずれかで場所を提供する必要があります。

これを処理するためのベストプラクティスは何ですか? Zip Code と City and State テーブルを作成してクエリを実行するだけですか? それとも、これを処理するための既製のソリューションがありますか?

違いがある場合は、SQL Server 2005 を使用しています。

市/州を指定して郵便番号を取得できる必要があるか、郵便番号を指定して市の州を吐き出すことができる必要があります。

4

11 に答える 11

10

いくつかのオプションがあります。州ごとに郵便番号、都市、郡などをリストする一括郵便番号ライブラリを誰かから購入するか、より詳細なレベルで同じ機能を実行するWeb サービスにアクセスするために誰かにお金を払うことができます。

最善の策は、郵便番号ライブラリ オプションを使用することです。これは、Web サービスよりも費用がかからず、パフォーマンスが向上するためです。このライブラリをクエリまたは前処理する方法は、あなた次第です。あなたは SQL Server に言及しているので、State、Zipcode、および City テーブルが必要であり、それらの間の関連関係を含めることになるでしょう。また、複数の郵便番号にまたがる都市、または複数の都市を持つ郵便番号に対する準備も必要になりますが、これらの問題はいずれも克服できないものではありません。

ユーザー入力の気まぐれに対処する限り、住所検証 Web サービスの助けを借りることを検討できますが、ほとんどの場合、検証のために完全な配送先住所が必要です。

編集:緯度/経度データなどを含む無料の郵便番号データを提供するSourceForgeプロジェクトがあるようです。それがどれほど正しいか、または最新かはわかりません。

編集 2: その SourceForge プロジェクトのサイトをざっと見たところ、これは死んだプロジェクトのように見えます。このデータを使用する場合は、データベースに存在しない郵便番号や市区町村を考慮に入れる必要があります。購入した一括ライブラリには、通常、何らかの更新の保証、または更新の料金プランなどが付属しており、おそらくより信頼性が高くなります。

于 2009-02-05T21:31:41.717 に答える
1

ルックアップの理由がユーザーの利便性である場合、サードパーティ データベースのライセンスを必要としない代替アプローチを次に示します。

郵便番号が一致していれば、既存の名前/住所テーブルから都市/州を検索するだけです。誰かが以前にその郵便番号のエントリを作成している場合、そのエントリから都市と州を見つけることができます。前のエントリが存在しない場合、最悪の場合、ユーザーは都市と州にエントリする必要があります。

このソリューションは、ユーザーの利便性が必要であることを前提としています。市区町村、州、郵便番号の正確な検証に関心がある場合は、検証済みデータベースのライセンスを取得することをお勧めします。

于 2009-02-05T21:57:30.930 に答える
1

都市国家から郵便番号を取得したり、その逆を行ったりできる無料のジオコーディング Web サービスが多数あります。GeoNames Web サービスを見てみましょう。データベースをチェックして、探しているものがそこにない場合は、Web サービスから取得して追加することができます。

于 2009-02-05T21:45:31.813 に答える
0

US States テーブルの場合、テーブルに と があり、自動インクリメントがあるStateIdと仮定すると、次のクエリを使用できます。StateNameStatesStateId

このクエリには 50 の米国の州があります...

INSERT INTO States
        ( StateName )
        VALUES
( 'Alabama'),
( 'Alaska'),
( 'Arizona'),
( 'Arkansas'),
( 'California'),
( 'Colorado'),
( 'Connecticut'),
( 'Delaware'),
( 'District of Columbia'),
( 'Florida'),
( 'Georgia'),
( 'Hawaii'),
( 'Idaho'),
( 'Illinois'),
( 'Indiana'),
( 'Iowa'),
( 'Kansas'),
( 'Kentucky'),
( 'Louisiana'),
( 'Maine'),
( 'Maryland'),
( 'Massachusetts'),
( 'Michigan'),
( 'Minnesota'),
( 'Mississippi'),
( 'Missouri'),
( 'Montana'),
( 'Nebraska'),
( 'Nevada'),
( 'New Hampshire'),
( 'New Jersey'),
( 'New Mexico'),
( 'New York'),
( 'North Carolina'),
( 'North Dakota'),
( 'Ohio'),
( 'Oklahoma'),
( 'Oregon'),
( 'Pennsylvania'),
( 'Puerto Rico'),
( 'Rhode Island'),
( 'South Carolina'),
( 'South Dakota'),
( 'Tennessee'),
( 'Texas'),
( 'Utah'),
( 'Vermont'),
( 'Virginia'),
( 'Washington'),
( 'West Virginia'),
( 'Wisconsin'),
( 'Wyoming');
于 2016-07-28T18:47:11.047 に答える
-1

私はそのビートを手に入れました。これは無料のものです(圧縮、csv):

maphacks.com でホスト

ヘッダーは、zip、city、state、latitude、longitude、timezone、dst です。

さて、あなたの潜在的な損失は、あなたがアップデートにお金を払っていないことです(最終的にはあなたを苦しめますが、彼らはそれをいくらか更新し続けようとします).

于 2009-02-05T21:42:25.610 に答える
-1

このウェブサイトを追加したいと思います。

http://www.unitedstateszipcodes.org/zip-code-database/

個人・教育用途でご利用の場合は無料でデータをダウンロードできます(2014-03-20現在)。

于 2014-03-20T21:22:49.460 に答える