mynooのブログ

酔った勢いで日々思ったこと感じた事を気まぐれで文章化します。

DB設計ではどこまで正規化するべきか?

システム開発にあたってDB設計が重要なのは言うまでもないが、設計思想は、設計者やプロジェクトによって千差万別である。

 

経験上、主な違いは以下の3点である。

  1. 正規化の徹底さ
  2. データ型の厳密さ
  3. 予備項目の有無

まず、正規化について。

今回は、正規化の是非について自分なり考えをまとめようと思う。

 正規化をどこまで徹底するかは、DBと画面、どちらを中心に設計時しているかだと思っている。

 DBを中心に設計している場合は、しっかり正規化していることが多い。一方、画面を中心に設計している場合は、正規化されておらず、画面の項目がテーブルのカラムと一対一で対応していることが多い。ちなみに、個人的には、前者がシステム設計のあるべき姿だと考えている。なぜなら、DBを中心に設計すると処理がシンプルになるからである。

 たとえば、insert時にデフォルト値を気にする必要もないし、update時に同一のカラムを一括で更新する必要もないし、select時にdistinctする必要もない。また、性能問題の解決のために無駄にindexを作成する必要もない。正規化されていないテーブルをチューニングしていると、indexで正規化をしているような感覚に陥ることがある

 システム設計とは、ユーザー⇔アプリケーション、アプリケーション⇔DBのインターフェースを設計することに等しい。つまり、ユーザーとDBは直接メッセージをやり取りをしない。UIとDBは分けて考えるべきなのである。

 

ブレるシステム開発の目的

何千人という規模のSIerに勤めている。

 
うちの会社では品質の担保のために、第三者による点検が多々ある。
この点検がなかなか厳しく、プロジェクトは途中からこの点検を乗り切ることに変わる。
 
目的と手段が入れ替わる。
 
特に製造工程に入ってから厳しくなる。
 
個人的には、SS工程以降はあくまでシステムを構築するための手段であるから、そこまで厳密に
こだわる必要がないと思っている。
もちろん画面に表示する値とDBとのマッピングや、e-r図など一部のドキュメントは厳密なものが必要だとは思う。
でも、ロジックを記述したものについては、実装するためのメモ書き程度の位置づけだと思っている。開発者が考えを整理するために作成するもので、第三者があーだこーだ言うものではない。
 
それよりも費用や期間の見積もり時に一番厳しく点検してほしい。
その後のプロジェクトの運営に関わる一番大事な意思決定だというのに、えいやで決めてしまう。
えいやで決めた見積もりに作業を納めるために無茶なスケジュールを組まされる。
 
無茶なスケジュールにも関わらず、第三者点検のための作業が発生する。
ただでさえ少ない時間がさらに削られる。
そして炎上する。
そして騒ぎ立てる。
 
おかしい。何かが間違っている。
何のためにやっているかわからない作業ばかりじゃ自分の仕事に誇りがもてなくなる。
 
一度でいいから、プロジェクトの立ち上げから本稼働まで一貫して目的を見失わずに、顧客の顧客のために全力で作業に取り組みたいと思う今日この頃。

SEを志した理由

視聴率はあまり良くないらしいが、大河ドラマの「花燃ゆ」にハマっている。

最近このドラマでしきりに発せられる言葉に「志」がある。

『志しは何にも増して重要なものであり、高い志を持ち、志のために人生を燃やすべき』

といった内容を松陰先生は日々説いている。

 

そしてふと思った。

 

私がSEを志した理由は何だったのかと。

 

そして思い出した。

「日本を良くしたい」

そのためにSEを志したことを。

 

日本を支える製造業を支える業務システム。

業務システムに携わることで、製造業を上昇させ、日本を上昇させることができるのではないかと。

 

最近、改めて考えている。

業務システムが日本を上昇させることができるのかと。

 

今の職業が人生を燃やすに値するかどうかは解らない。

しかし、ITが重要なのは間違いない。

ITを活用して日本を良くできる、そんな職業を目指して日々スキルを磨いていこうと思った

 

そんな日曜の夜。

宇宙人から見た地球

大層なタイトルだが、今、地球上で一番支配力を強めているのはなんだろうか?

 
人間?穀物?
 
違う
 
そう、情報だ。
 
21世紀、特にここ5年で爆発的に増えている。
形を変え、何千キロもの距離を瞬く間に移動する。
増殖のスピードも半端ない。
劣化もしない。
 
人間の力を借り、多様性を増し、自己増殖を繰り返す。
 
当初は、DNAという形でしか情報を後世に残すことが出来なかったが、
人が言葉を手にしたことにより、情報は世代をこえることが出来た。
時間の壁を超えた。
 
文字が生まれたことで、精度が高まった。
符号化することで、遠く離れていても情報を伝達することができるようになった。
空間の壁を超えた
 
デジタルになったことで劣化しなくなった。
不老不死になった。
 
もはや神だ。
宇宙人から見れば、地球は情報に支配されている。
人間は情報を生み出すためだけの存在でしかない。
 
次の支配者は情報か?
 
それでも、信じたい。
人間の可能性を。
 
信じることでしか神に打ち勝てない。
 
ならば、最後の手段は信じること。
 
信じることが地球を支配するようになって欲しいと思った今日この頃。

情報の暴走

少し前からM2MやIoT、最近ではO2Oなどがブームだ。

スマホのアプリで1日の活動ログを記録出来たりもする。(lifelogなど)
 
その結果凄まじいスピードで情報の蓄積が進んでいる。
指数関数的に増えている。
 
最近ふと思う
 
この情報は何処から来たのか?
 
もちろん、人間の活動やスマホのセンサーといった答えは求めていない。
 
なぜこんな事を思ったかというと今読んでいる本の影響だ。
ちなみに、生命誕生という本。
この本では、物理的な視点で生命

www.amazon.co.jp

の誕生を進化を捉えている。
 
宇宙はエントロピー増大の法則に従っているはずなのに、生命はどんどん進化し、地球はどんどん秩序ある状態になっていく。
なぜか?
地球から熱を放出することでエントロピーを増大させている。
つまり、エントロピーが大きいものを用意することで負のエントロピーの存在を可能にしている。
生命という秩序の塊は地球の熱放出が基になっている。
 
冒頭に戻ろう。
 
センサーから収集したデータは、エントロピーが大きいのか小さいのか?
 
もし、エントロピーが大きい(どちらかと言えば無秩序)のであれば、社会に秩序を与えることは出来ない。地球にも影響は少ない。
 
もし、エントロピーが小さいのであれば、社会に秩序を与えることができる。また、先ほどの論法により、地球への影響が大きい。
 
とりあえず今日は眠いのでこの辺にして、これから先は、後日考えるとする。
 

なぜ反省できないか?

社会人として5年目になるが、同じ過ちを繰り返している諸先輩方が多くて困っている。

これだけキャリアを重ねているのだからある程度想像がつくだろうと思うことでも間違える。
間違えて初めて対策する。
 
遅くね?
 
もっと早くにわかるっしょ??
 
なぜわからないのだ??
 
そこで、なぜ同じ過ちを繰り返すのか?、なぜ反省できないのか考えてみた。
 
結論から言うと、物事を抽象化してとらえられていないのだと思う。
全く同じ事象は2度と発生しない。だが、よく似た事象は発生する。
しかし、この"よく似た"が曲者なのだ。
 
ある事象が過去に発生した事象と似ていると判断するためには、事象を抽象化しなければならない。
そして、抽象化した上で距離を測る必要がある。
しかし、社会人になると具体的に考えることを強要される。
それゆえ、物事を抽象化することを怠ってしまう。
その結果僅かな違いにも関わらず全然別の事象だと判断し過去の経験を全く活かせない。
 
これからはアダプティブ戦略が必要になるが、そのためには反省することが必須になる。
結局これからのは、色々な尺度で物事を抽象化出来る能力が求められるのではないかと思う。
 

ブログデビュー

 

ブログという言葉は「weblog

 

「web(web上の)」+「log(記録)」

 

に由来するらしい。

 

それにしても便利な世の中になったもんだ。

知らないこと”や“気になること”がすぐさま検索できる。

 

こんな便利な世の中にしてくれた過去および現代の偉人たちに感謝、感謝。