« 誕生日と帽子とボール(?)と... | トップページ | 新卒者のOJT、真っ最中! »

RDBMS;温故知新

「DB設計に付いて;~正規化ほか編~」と題して、Jinさんのセッションがありました。

当初予定の時間枠は45分だったのですが、60分にまで膨らんで、なおかつ収まり切れないという、相変わらずの密な内容はさすがです!(...と、手前味噌ですが...)

中身は大きく分けて3部構成、
※リレーショナルデータベースの考え方
※正規化
※アンチパターン

Pict2658ワークショップ形式というわけでは無いのですが、全員に向けての質問(設問)あり、白板に回答ER図を(参加者に)描いてもらったりと、決してボ~ッと聞いていても終わってしまうようなダルいセッションではありませんでした(←まあこれは、Jinさんセッションでは毎回のことなのですが)。

で、いきなり講師側からの質問。

★「今作っているアプリケーションのテーブル設計。第何正規形を満たしているか言えますか?」

...正しく即答できる人はいませんでした。

Pict2659
で、次に、Web上で話題になっていた記事(ちょっと過激な(正直な?)タイトルですが)をキーに話題を展開。

フィールドの設定で、...予備1 ~ 予備50(全てVARCHAR(1000))、なんて名称のフィールド群が有って、頭の方の幾つかのフィールドは既に謎の値の格納に利用されていた.....(ぞぞ~~っ)。

おかげで(?)、SQLのスキルが跳ね上がった!
(こういったケースって、有りますよね。下手に馴染んでしまうと危険極まりないのですが...)

★「リレーションって、正確に言うと何だろう?」

ヒント;「テーブル間の関連性...ではない」。

⇒答え;テーブルそれ自体、列と列の関連。

適切なリレーションとは...
・行に上下の順番がない
・列に左右の順番がない
・重複行を許可しない
・すべての列は1つの型をもち、各行に1つの値を持つ
・行に隠されたコンポーネントがない

★「正規化の目的は?」

答え;
・正規化の目的(1)
  ・人間が理解できる形で、現実世界の事実を表現する。
・正規化の目的(2)
  ・事実の格納方法から冗長性を排除し、データの異常や不整合を防ぐ。
・正規化の目的(3)
  ・整合性制約をサポートする。

正規形とは?...
・正規化のルールを満たしているテーブルの状態。

Pict2660これ以降、第1正規形違反のテーブルが表示され、その改修案を白板に書くなりして回答する、といったパターンで、更に、
・第2正規形違反のケース、
・第3正規形違反のケース、
・ボイスコッド正規形違反のケース、
・第正4規形違反のケース、
・第正5規形違反のケース、
・第正6規形違反のケースについても、同様に繰り返されました。

途中、「え?、こうだったっけ?」、「もう忘れてるな...」とか、多くの実務を乗り越えてくれば来るほど、本来の正しい(?)論理からは疎遠になっていくようです。

また、実務上では、
・正規形として問題なくても、論理的に重複がある場合。
・正規形だけではなく、運用を考慮してテーブル設計した方が良い場合もあります。
.....と、ここはもう少し具体的に掘り下げておきたかった所ですが(実例ベースで)、時間が余りにも押して来てしまいました...(今回の定例会は、ただでさえ通常よりも拡大バージョンで実施していたので...)。

この辺に関連しては、もしかしたら次回の定例会(6/13)で多少の補完情報のやりとりが出来るかも知れません。
同じく、Jinさんの時間枠が、「データ移行」を中心としてですが15分間取ってあります。
質疑で15分を大きく超える可能性が大ですが...
まあ、全然盛り上がらないで、予定時刻よりも極端に早く定例会が終了するよりは良いでしょう。
(無駄に引き伸ばすような事はしていないので)

最後に、書籍紹介がありました。
※SQLアンチパターン(オライリー)
 特に正規化を勉強するには大変良い本で、特に付録部分に必見の価値があるとか!
 和訳:http://www.amazon.co.jp/SQL%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-Bill-Karwin/dp/4873115892/ref=sr_1_1?s=books&ie=UTF8&qid=1401244600&sr=1-1&keywords=sql%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3
 英文:Kindle版:http://www.amazon.co.jp/SQL-Antipatterns-Programming-Pragmatic-Programmers-ebook/dp/B00A376BB2/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1401244600&sr=1-1-catcorr&keywords=sql%E3%82%A2%E3%83%B3%E3%83%81%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3

KVSが多用される昨今ですが、RDBMSも早々無くなるという事は考えにくいでしょう。

それぞれの特性を活かして、使い分けていくだけのアーキ的な形式知と暗黙知を溜め込んで、共有して行ければ良いのだろうと思います。


★クリック1つでブログランキングにご協力戴けます! m(_ _)m

|

« 誕生日と帽子とボール(?)と... | トップページ | 新卒者のOJT、真っ最中! »

定例会、勉強会など」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: RDBMS;温故知新:

« 誕生日と帽子とボール(?)と... | トップページ | 新卒者のOJT、真っ最中! »