当试图将街道地址仅存储在表中一次时,我试图避免重新发明轮子。唯一性约束在某些常见情况下不起作用:

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是否已存在于“地址”表中。

诸如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)
)

最佳答案

在Google map 中查找地址并使用其拼写。

关于database - 避免在数据库表中重复地址,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/866906/

10-10 10:42
查看更多