テーブルに住所を1回だけ格納することについては、私は再発明を避けようとしています。一意性制約は、いくつかの一般的な状況では動作しません。データベーステーブルに重複アドレスを避ける
100 W 5th Ave
100 West 5th Ave
100 W 5th
200 N 6th Ave Suite 405
200 N 6th Ave #405
私は挿入する前に、すべてのフィールドを正規化し、テーブル内のいくつかのフィールド全体で一意性制約を使用するためにいくつかのビジネスロジックやトリガーを実装することができますが、それはに簡単だろういくつかのケースでは、通りの住所と同じように変化するものがあります。
おそらくGPS座標に基づいて、各アドレスの普遍的な識別子になります。新しいアドレスを保存する前に、そのGUIDを参照し、GUIDがすでにAddressテーブルに存在するかどうかを確認してください。
Mapquest、Postal Serice、FedEx、または米国政府のような組織はおそらくこのようなシステムを持っています。
誰にでもこれに対する良い解決策が見つかりましたか?
は、ここで(JPAによって生成された)今、私のアドレステーブルです:
CREATE TABLE address
(
id bigint NOT NULL,
"number" character varying(255),
dir character varying(255),
street character varying(255),
"type" character varying(255),
trailingdir character varying(255),
unit character varying(255),
city character varying(255),
state character varying(255),
zip integer,
zip4 integer,
CONSTRAINT address_pkey PRIMARY KEY (id)
)
「私は車輪を再発明するのを避けようとしています。似たような質問をしている開発者は、それが決して前に行われたとは思わないようです。とにかく、私はあなたのニーズに応えるソリューションを見つけられたことをうれしく思っています...でも、私はSmartyStreetsと呼ばれる会社で働いています。アドレスリストを確認し、重複のフラグを立てます。リストをアップロードするか、彼らはLiveAddressのAPIで入力されます。私たちはこれらの作業を行うためにCASS認証を取得しています。住所データに関するご質問があれば、私はあなたを個人的にお手伝いいたします。 – Matt