読者です 読者をやめる 読者になる 読者になる

TechNote

とあるエンジニアのただのメモ

応用情報技術者受けるなら知っておくべき!? データベース「第1正規形」の正しい解釈方法

データベースの「正規化」については、基本情報技術者試験応用情報技術者試験データベーススペシャリストなどで必ず問われるといっても過言ではない知識の一つである。


仕事でシステム構築をしているような人でも、データベースの部分はあまり深い知識がなくても動いてしまうので、この辺りをあいまいにしたまま済ませている人も結構いるのではないだろうか。実際あいまいにしたまま、冗長部分を外出ししていけば勝手に第3正規形ができあがっているのだから問題はない。


ただ、教科書やWebサイト上でよく見かける「第1正規形」に関する説明は、大半が行き過ぎた説明となっている感があるのでメモを残しておく。



教科書やWebサイト上でよくみかける「第1正規形」の説明


「第1正規形」はよく「繰り返しを排除したもの」ということで、実例を用いて以下のような説明がよくなされている。

Q1.以下のような非正規形の表を第一正規形にしなさい。

 ※実際はこんなところは問われることはない。

f:id:kojikoji75:20130820205650j:plain

A1.

f:id:kojikoji75:20130820205742j:plain

自分の場合も最初に読んだ教科書で、このような説明がなされていたので、長い間勘違いをしたまま過ごしてきた。




「第1正規形」の正しい解釈


実際求められる条件は"ドメインが単一値であること"のみであり、以下の表で充分である。これは、Excelでいうところの結合されたセルの結合を解除して、全セルを埋めた状態である。

f:id:kojikoji75:20130820205846j:plain


テーブルをわけてももちろんOKではあるのだが、「繰り返し属性を排除しなければならない」⇒「繰り返し属性は別テーブルに分けなければならない」という認識は間違いである。

幸いなことにこの部分が問われることはないので、間違って覚えていても問題が表面化することはない。だが、間違って覚えたまま過ごすよりは、正解を知っておくべきだろう。


マンガでわかるデータベース

マンガでわかるデータベース