達人に学ぶDB設計を読み終えたので忘れないうちに学びをアウトプットしていきます。
この本は設計の本なのですが、正規化とかER図とかの教科書的な説明にはとどまりません。
具体例を交え、なぜそうするべきなのか、そうしなかった場合にどんな問題が起こるのかといったことを様々な角度から教えてくれます。
また、設計において切り離せないDBの内部的な構造についても触れていますので(オプティマイザとか統計情報、効率的なクエリの書き方など)、SQLはなんとなく書けるけど「性能を考慮する」とか「DBの裏側で何が行われているのかまではわからない」といった人にもおすすめです。
本書の帯通り、初級者から中級者にステップアップしたい方に非常におすすめできる本です。
POAとDOA
POA(Process Oriented Approach)とは、プロセス中心アプローチのことを指します。
システムがユーザーによってどう使われるかを中心にシステムの設計を考えていくやり方です。
一方、DOA(Data Oriented Approach)とは、データ中心アプローチのことを指します。
業務で発生するデータをフォーマット化し、それに合ったようにシステムを設計していく方法です。
かつてはシステムが単純だったため、POAでもシステムを問題なく作ることができました。
しかし、この方法ではプロセス(業務)毎に同じようなデータを持つことになります。
例えば、受注と発注と経理で同じようなデータを持つことになります。
そうするとプロセスが変更された場合に、またデータを作り直す必要があります。
もしくは、今までのデータをそのまま使いたいなら、データの変換が発生します。
いずれにせよ、改修のたびに大きなコストがかかるようになってしまうのです。
こうなってしまう原因は、変化しやすいプロセスをもとにシステムを構築しているためです。
そこで、変化しずらいデータを中心にシステムを構築していくという考え方のDOAが生まれました。
例えば経理の処理は法律によって変化していきます。
しかし、大本のデータ(受注、売上、原価など)は変わりません。
変わるのはそれがどの勘定科目に充てられるかとか、減価償却の方法が変わるなどのプロセスです。
業務の変更に素早く対応するという要請からDOAという概念が生まれたということになります。