sqlアンチパターンを読んでいる
Table of Contents
sqlアンチパターン :@log:
Entered on
読むログ。感想を書くかぁ〜のやつ
ジェイウォーク(信号無視)
多対多の関連を表現する 交差テーブル を避けるためにカンマ区切りのリストを使う。
↑ もうヤバい感じする。
解としては 交差テーブル を作っちゃうこと。 2つのテーブルだけで解決しようとするとあとで消耗するぞい、というお話。
(なおパフォーマンス優先でカンマ区切りのリストを使う可能性もあるので注意。 使われないことをねがうが…。)
ナイーブツリー (素朴な木)
再帰構造を持つツリーテーブルがある。 基本は隣接リストの構造になるが、クエリが書きづらい。
よってこれを実現するために他の選択肢がある。
- 経路列挙 … カンマ区切りのリスト的解放
- 入れ子集合 … 挿入削除がだるい
- 閉包テーブル … めちゃ便利だけど2つテーブルを使う
感覚では、閉包テーブルなるほどなぁ、という感じ。 でもこれ階層深くなればなるほどめっちゃパスの数増えてくから 挿入と削除の際のコスト重くなるのでは…?っておもった。
でもあれかなぁ〜そもそもめちゃめちゃ階層深くなるようなもの ってそんなに無いかぁ〜〜とも思った。
ちょこっと書いてあったけど、できるなら 再帰クエリが実装されているDBを使うのが良いんじゃないかぁ〜?って思った。