sqlアンチパターンを読んでいる

Table of Contents

  1. sqlアンチパターン:@log:
    1. ジェイウォーク(信号無視)
    2. ナイーブツリー (素朴な木)

sqlアンチパターン :@log:

Entered on [2018-07-05 Thu 19:30]

読むログ。感想を書くかぁ〜のやつ

ジェイウォーク(信号無視)

多対多の関連を表現する 交差テーブル を避けるためにカンマ区切りのリストを使う。

↑ もうヤバい感じする。

解としては 交差テーブル を作っちゃうこと。 2つのテーブルだけで解決しようとするとあとで消耗するぞい、というお話。

(なおパフォーマンス優先でカンマ区切りのリストを使う可能性もあるので注意。 使われないことをねがうが…。)

ナイーブツリー (素朴な木)

再帰構造を持つツリーテーブルがある。 基本は隣接リストの構造になるが、クエリが書きづらい。

よってこれを実現するために他の選択肢がある。

  • 経路列挙 … カンマ区切りのリスト的解放
  • 入れ子集合 … 挿入削除がだるい
  • 閉包テーブル … めちゃ便利だけど2つテーブルを使う

感覚では、閉包テーブルなるほどなぁ、という感じ。 でもこれ階層深くなればなるほどめっちゃパスの数増えてくから 挿入と削除の際のコスト重くなるのでは…?っておもった。

でもあれかなぁ〜そもそもめちゃめちゃ階層深くなるようなもの ってそんなに無いかぁ〜〜とも思った。

ちょこっと書いてあったけど、できるなら 再帰クエリが実装されているDBを使うのが良いんじゃないかぁ〜?って思った。