https://www.slideshare.net/t_wada/sql-antipatterns-digest?next_slideshow=19520294

SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)

    1. 和田 卓人 (@t_wada) Apr 20, 2013 @ デブサミ再演 SQL アンチパターン (拡大版)
  1. 2. 和田 卓人 id: t-wada @t_wada github: twada
  2. 4. 1. アンチパターンとは 2. 本書のダイジェスト 3. おわりに Agenda
  3. 5. アンチパターンとは べからず集 あるある集 だけでは無い
  4. 6. 0. 名前 1. 目的 2. アンチパターン 3. アンチパターンの見つけ方 4. アンチパターンを用いても良い場合 5. 解決策 名前重要!! 本書のアンチパターンの構成
  5. 7. 例: ナイーブツリー (素朴な木) 名付けの例
  6. 8. パターン名が英語そのままカタカナ表記であ るのは、目次を見ただけではビックリするポ イントですね。 ただ、チーム内で相談するときなどに目立つ 名前が付いているのはむしろありがたいです し、何よりなんかカッコよくておもしろかっ たです! http://d.hatena.ne.jp/moro/20130205/1360044434 なぜカタカナ!?
  7. 9. 0. 名前 1. 目的 2. アンチパターン 3. アンチパターンの見つけ方 4. アンチパターンを用いても良い場合 5. 解決策 実例: ナイーブツリー(素朴な木)
  8. 10. 目的: 階層構造を格納し、クエリを実行する
  9. 11. 0. 名前 1. 目的 2. アンチパターン 3. アンチパターンの見つけ方 4. アンチパターンを用いても良い場合 5. 解決策 実例: ナイーブツリー(素朴な木)
  10. 12. アンチパターンとは何でしょうか。それは、 問題の解決を意図しながらも、しばしば他の 問題を生じさせてしまうような技法を指しま す。 ─ Bill Karwin よかれと思って裏目 に出てしまうもの
  11. 13. CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT NOT NULL, ); 親idが入る アンチパターン: 常に親のみに依存する
  12. 14. SELECT c1., c2., c3., c4. FROM Comments c1 -- 1階層目 LEFT OUTER JOIN Comments c2 ON c2.parent_id = c1.comment_id -- 2階層目 LEFT OUTER JOIN Comments c3 ON c3.parent_id = c2.comment_id -- 3階層目 LEFT OUTER JOIN Comments c4 ON c4.parent_id = c3.comment_id -- 4階層目 アンチパターンにより起こること 素朴すぎる故に アンチパターン
  13. 15. 0. 名前 1. 目的 2. アンチパターン 3. アンチパターンの見つけ方 4. アンチパターンを用いても良い場合 5. 解決策 実例: ナイーブツリー(素朴な木)
  14. 16. 直面している問題の種類や、メンバー間の会 話での何気ない言葉が、そこにアンチパター ンがあるかもしれないことに気づくヒントに なります。 ─ Bill Karwin