在地理编码时与 Google 的 TOC 一致,我想缓存结果以减少其服务器上的负载。我还想尽可能有效地存储地理编码结果,而不包括街道编号和街道名称。这是我将使用的示例地址:
275-291 Bedford Ave, 布鲁克林, NY 11211, USA
Types: street_number # 275-291
Types: route # Bedford Ave
Types: Administrative_area_level_3 # Brooklyn
Types: administrative_area_level_2 # Kings
Types: administrative_area_level_1 # New York
Types: Country # USA
有人会如何建议我尽可能有效地做到这一点。我正在考虑有四个这样的表:
CREATE TABLE locality (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
loc varchar(255),
size varchar(255)
);
CREATE TABLE administrative_area_level_1 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
loc varchar(255),
rad varchar(255)
);
CREATE TABLE administrative_area_level_2 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
loc varchar(255),
rad varchar(255)
);
CREATE TABLE administrative_area_level_3 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
loc varchar(255),
rad varchar(255)
);
CREATE TABLE country (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(255),
loc varchar(255),
rad varchar(255)
);
然后当我尝试回忆它时,我会从最高级别(国家 -> Level3,Level2,Level1)查看是否可以找到它。这样我总能找到与该值匹配的最重要的实体。
我是 SQL 新手,所以从存储和回忆的角度来看,这种结构是否有意义?