俺流テキストデータベース #9 リレーショナルデータベースにTRY

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

データベースは、データ管理をするモノですが、独自テキストで行う事で、SQLの中身も理解できてきます。
 

そして、速度改善などのやり方をストレートに理解できるので、何も考えずにSQLコマンドだけを叩いているエンジニアの方は、是非データをモジュール依存せずに考えてみることをオススメします。
 

今回は、SQLでおなじみのリレーショナルをテキストデータベースで行ってみたいと思います。

テーブルデータの構築

SQLのテーブルにあたる、マトリクス配列にあたる縦横データを、郵便番号データを元に作ったjsonデータを使って構築していきます。
 

ファイルは全て”data”フォルダに格納するので、事前にdataディレクトリを作成しておきましょう。
 

http://wordpress.ideacompo.com/?p=12700
 

基本構造

– 都道府県マスターテーブル (prefecture.csv)
– 市区町村マスターテーブル (city.csv)
– それ以降の住所マスターデータ (town.csv)
– 上記テーブルのIDをまとめた基本データテーブル (datas.csv)
 

データ構造は、容量を軽くするために、csvを使って行います。
 

テーブルは「マスターテーブル」と「データテーブル」の2パターンで構成します。
 

マスターテーブルは「ID」「名称」のシンプルな構造で、データテーブルは「郵便番号,prefecture-id,city-id,town-id」のフィールド情報で構築します。
 

都道府県マスターの作成

市区町村マスターの作成

 

予備住所マスターの作成

 

総合データ作成

データは上記のマスターを参照しながら、IDを書き込んでいく必要があるので、awkをファイルプログラムしておきます。
 

 

上記をコマンドで実行
 

 

データの呼び出し

マスターと基本データが整ったところで、郵便番号から、住所検索をしてみます。
 

これもマスター検索用にawkコードを事前に書いておきます。
ただこのプログラムで一括検索するのではなく、jqコマンドで、絞り込まれたデータをこのプログラムで、マスター検索して、IDを名称に変換します。
 

 

 

jqコマンドのselectで絞り込んでいる箇所が郵便番号の7桁数値になるので、郵便番号に対して複数の住所結果がある場合は、その分の住所が表示されます。
 

今回は強引にリレーショナルに持っていきましたが、データベースも中はこのように、それぞれのデータのIDを繋げてデータ検索を行うという点では同じ動きであることが理解できれば、データベースの扱いスキルが向上できるでしょう。
 

それにしても、もう少し効率的に行いたいので、データ構造の見直しと、検索方法の見直しをやる必要がありますね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です