![fukabori.fm artwork](https://is3-ssl.mzstatic.com/image/thumb/Podcasts113/v4/99/e7/31/99e7315f-c575-d8c6-09aa-b49dae5f1a95/mza_17233519440010280853.jpg/100x100bb.jpg)
27. 論理削除とは何か?どのような解法があるのか? w/ twada
fukabori.fm
Japanese - March 01, 2020 15:00 - 1 hour - ★★★★★ - 2 ratingsTechnology fukabori Homepage Download Apple Podcasts Google Podcasts Overcast Castro Pocket Casts RSS feed
話したネタ
論理削除とはそもそも何か?
物理削除とは?
なぜ、論理削除が生まれてくるのか?
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
理由1: 心理的なハードルの高さ、怖さがある
理由2: 削除したデータを検索対象に入れたい場合がある
理由3: ログとしての用途
理由4: 誤操作をすぐに戻したい
アンチパターンとは何か?
なぜ、論理削除はアンチパターンとして捉えられるのか?
全てのSQL文のWHERE句に削除フラグが必ず入る
LIMIT 1などが蔓延していく
論理削除に気づくきっかけは何か?
テーブル設計や、規約から気づく
論理削除というアンチパターンをどのように解いていくか?
論理削除という概念は世の中にまずなく、お客様は論理削除という言葉を使っていない
要件をどのように設計すればいいのか?
ORMの論理削除プラグインはあまり良くない
状態遷移として捉える方法
Soft Delete と Hard Delete
Doctrine 2 “Behaviours” in a Nutshell
RDBにおけるStateパターンとは?
UMLにある状態遷移図
Stateパターンが使えないケースはある?
FSM - Finite State Machine
State Machineのプラグインをまず探す
AASM - Ruby state machines
履歴テーブルを使った設計による解法
履歴テーブルをあえて使う強いモチベーションは何か?
そもそも削除も更新もしない解法もある
発生した事実に忠実にモデリングすると、情報の削除や更新をしない、改ざんになる
データ中心アプローチ(DOA) 椿さんとか佐藤さんとか渡辺さんとか
T字形ER手法
データ量が増えた場合にどうするか?
Webシステムが流行る前後のデータ量
イミュータブルデータモデル(入門編)
誤った操作をなかったことにしたい、という課題はまだ解けていない
教科書的なのは間違えにくいUI/画面設計を作る
遅延レプリケーションという解法