osa2 memo

自分の記憶のために・・・。

SQLアンチパターン読書会 「ジェイウォーク」 メモ。

2013年04月11日(木) 20時00分 - 22時00分
(http://sqlap.doorkeeper.jp/events/3416)

もともと1:多の関係を多:多に拡張せざるを得ないときにこのパターンに陥る
誘因としては、修正を軽微に済ませたい、新たにテーブル作れる状況にない、そもそもやり方が分からない。

単にCSVやJSONを受け渡しするだけのようなケースは今回のパターンとは別の状況。

本書では実際に状況に遭遇したときにどのように組み替えていけば良いかまでは指南していない。
別書、「データベース・リファクタリング」の併読がおすすめ。今回のパターンについてはp.123参照。

単に交差テーブルの導入だけなら2つのエンティティのキーを持つだけだが実際には2つのエンティティが関連を持つことになった状況(関連が発生した日)などの情報を併せ持つことが多い。

インデックスが張られるかどうかは外部キー指定されるかで決まる。ただこの部分は製品により暗黙に張られたり、明示的に指定する必要があったりする。Query Optimizerが進化しており、素直にSQL書いた方がよいことも多い。どのようにデータ取ってきているかをみたいときは EXPLAIN をつけると良い。

DBMS/SQLを理解するための良書、サイト:
SQL書き方ドリル」、「リレーショナルデータベースの世界」(Web)、「達人に学ぶSQL徹底指南書」、「SQL ゼロからはじめるデータベース操作」、「データベースパフォーマンスアップの教科書 基本原理編」

感想:
事前には「交差テーブルを入れればよいのか」というだけの理解だったが、パターンの本質的な状況、リファクタリングの仕方、インデックスの意識の仕方、交差テーブルの役割の拡張など多岐に渡って理解が広まった。最後の良書推薦は大変ありがたかった。次回までに何か1冊でも読んでみようと思う。