2013年4月24日水曜日

SQLアンチパターン読書会 「ジェイウォーク」 に参加してきました #sqlap

SQLアンチパターン読書会 「ジェイウォーク」
http://sqlap.doorkeeper.jp/events/3416

はじめに

SQLアンチパターンの読書会が開催されるとのことでしたので、申し込みました。
自分が経験していなかった話を聴いたり、逆に自分が経験したパターンについて他の人がどういう対処をしてきたのか知りたいと思ったのがきっかけです。

ジェイウォーク



読書会とは言うものの読んでくる前提でしたので、ディスカッションが主な内容でした。

ジェイウォークに陥る要因として上げられたのが、以下の通りでした。
  • そもそも、交差テーブルを作るということを知らない。
  • テーブルを追加するには、いろいろと手続きが必要。
一対多から多対多へ変更が生じた場合は、キーとなる属性同士で関連付けるので、ジェイウォークのようにしてしまうと、検索時にインデックスを利用しないため、遅くなりがちです。
なので、そういう匂いを感じたら、交差テーブルを導入するのが正しいということを知りました。


解決策の交差テーブルを導入するのが望ましいのですが、既にジェイウォークになっていた場合は、どのように解決したら良いかという疑問については、@t_wadaさんがデータベース・リファクタリングの本を用いて解説したくださいました。
トリガーを用いて新しい交差テーブルへデータを同期して、アプリケーション側で経過措置を講じ、最終的に交差テーブルを利用するように変更するといった内容でした。
DB周りについて体系的に学習したことがなかったので、こういった対応が出来るということ自体知りませんでした。
また、交差テーブルについても、関連付けられた日付などキー以外の項目が必要になってきたりして単なる交差テーブルからエンティティへ変化してしまうこともあるので、テーブルを設計するのはやはり難しいと感じました。

おわりに

今以下のジェイウォークは、本の始めの方にあるので容易に感じてしまいそうですが、解決策の先がまだあり奥深いものだと実感しました。
また、@t_wadaさんにSQLに関して参考になる書籍を教えていただいたので、一つづつ取り寄せて見たいと思います。
次回は、ナイーブツリーということで、自分の経験した内容でもあるので、楽しみです。

主催の@natsu_nananaさん、参加者の皆様、会場を提供してくださった株式会社アルティネット様ありがとうございました。
次回もまたよろしくお願いします。