ジオコーディング時の Google の TOC に沿って、サーバーの負荷を軽減するために結果をキャッシュしたいと考えています。また、通りの番号や通りの名前を含めずに、ジオコードの結果をできるだけ効率的に保存したいと考えています。以下は、私が使用するアドレスの例です。
275-291 Bedford Ave、ブルックリン、NY 11211、米国
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
これをできるだけ効率的に行うことをどのように推奨しますか。私はこのような4つのテーブルを持つことを考えていました:
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)
);
次に、それを思い出そうとすると、最上位レベル (国 -> レベル 3、レベル 2、レベル 1) から探して、それを見つけることができるかどうかを確認します。そうすれば、その値に一致する最も重要なエンティティを常に見つけることができます。
私は SQL を初めて使用するので、この構造はストレージとリコレクションの観点から理にかなっていますか?