DB設計ではどこまで正規化するべきか?
システム開発にあたってDB設計が重要なのは言うまでもないが、設計思想は、設計者やプロジェクトによって千差万別である。
経験上、主な違いは以下の3点である。
- 正規化の徹底さ
- データ型の厳密さ
- 予備項目の有無
まず、正規化について。
今回は、正規化の是非について自分なり考えをまとめようと思う。
正規化をどこまで徹底するかは、DBと画面、どちらを中心に設計時しているかだと思っている。
DBを中心に設計している場合は、しっかり正規化していることが多い。一方、画面を中心に設計している場合は、正規化されておらず、画面の項目がテーブルのカラムと一対一で対応していることが多い。ちなみに、個人的には、前者がシステム設計のあるべき姿だと考えている。なぜなら、DBを中心に設計すると処理がシンプルになるからである。
たとえば、insert時にデフォルト値を気にする必要もないし、update時に同一のカラムを一括で更新する必要もないし、select時にdistinctする必要もない。また、性能問題の解決のために無駄にindexを作成する必要もない。正規化されていないテーブルをチューニングしていると、indexで正規化をしているような感覚に陥ることがある。
システム設計とは、ユーザー⇔アプリケーション、アプリケーション⇔DBのインターフェースを設計することに等しい。つまり、ユーザーとDBは直接メッセージをやり取りをしない。UIとDBは分けて考えるべきなのである。
ブレるシステム開発の目的
何千人という規模のSIerに勤めている。
SEを志した理由
視聴率はあまり良くないらしいが、大河ドラマの「花燃ゆ」にハマっている。
最近このドラマでしきりに発せられる言葉に「志」がある。
『志しは何にも増して重要なものであり、高い志を持ち、志のために人生を燃やすべき』
といった内容を松陰先生は日々説いている。
そしてふと思った。
私がSEを志した理由は何だったのかと。
そして思い出した。
「日本を良くしたい」
そのためにSEを志したことを。
日本を支える製造業を支える業務システム。
業務システムに携わることで、製造業を上昇させ、日本を上昇させることができるのではないかと。
最近、改めて考えている。
業務システムが日本を上昇させることができるのかと。
今の職業が人生を燃やすに値するかどうかは解らない。
しかし、ITが重要なのは間違いない。
ITを活用して日本を良くできる、そんな職業を目指して日々スキルを磨いていこうと思った
そんな日曜の夜。
宇宙人から見た地球
大層なタイトルだが、今、地球上で一番支配力を強めているのはなんだろうか?
情報の暴走
少し前からM2MやIoT、最近ではO2Oなどがブームだ。
なぜ反省できないか?
社会人として5年目になるが、同じ過ちを繰り返している諸先輩方が多くて困っている。