たかといいます。
関係データベースの第一~第三正規化についてですが
第一正規化はわかるのですが、
それ以降がどうにも理解できません。
第一正規化は、1つの行の中に項目が複数入らないこと。
第三正規化は、主キーによって一意になる表に分けて
それらの表が外部キーによって関係している状態?ですよね。
でもなんで第二正規形ってあるのでしょう。
第一正規形から、第三正規形は作れそうですが
第二正規形がどうにも作れそうにありません。
普通に考えると第一正規形→第三正規形にいきなりなってしまいます。
そもそも第二正規形の定義がいまいちわかりません。
また、HP,書籍等を見てもやっぱりよくわからないんです。
それで、かならず受注番号が出てきて複雑な表をひょいひょいと出して
こんがらがります。
こんなオバカな私にどなたか教えてくださいませ。
テーブル
NO NAME SKILL POST JOB
--------------------------
001 aaa abc AAA ABC
def
002 bbb abc AAA ABC
003 ccc abc BBB DEF
004 ddd abc BBB DEF
第一正規形
NO NAME SKILL POST JOB
--------------------------
001 aaa abc AAA ABC
001 aaa def AAA ABC
002 bbb abc AAA ABC
003 ccc abc BBB DEF
004 ddd abc BBB DEF
第二正規形 (主キーに対するデータが固定)
NO NAME POST JOB
-------------------
001 aaa AAA ABC
002 bbb AAA ABC
003 ccc BBB DEF
004 ddd BBB DEF
第三正規形 (テーブル別では第二正規化ともいえる)
NO NAME POST
--------------
001 aaa AAA
002 bbb AAA
003 ccc BBB
004 ddd BBB
POST JOB
---------
AAA ABC
BBB DEF
多分これであっていると思います・・・間違ってたらごめんなさい。
もう、レスがついてる~!ありがとうございます。TAKAさん。
ん?、あれ、たかが、TAKAさんにレスをもらっている~。
まず、第一正規化まではわかります。
>第二正規形 (主キーに対するデータが固定)
>NO NAME POST JOB
>-------------------
>001 aaa AAA ABC
>002 bbb AAA ABC
>003 ccc BBB DEF
>004 ddd BBB DEF
すいません。SKILLはどこへ?
SKILLはSKILLで別表にわけるのでしょうか。
とんちんかな質問だったらすいません。
> ん?、あれ、たかが、TAKAさんにレスをもらっている~。
(笑)
それはさておき、
NO SKILL (第一正規形された表)
---------
001 abc
001 def
002 abc
003 abc
004 abc
という、別表ですね。
今回、この表は説明には必要ないと思ったので省いてました。
ご回答ありがとうございます。
>NO SKILL (第一正規形された表)
>---------
>001 abc
>001 def
>002 abc
>003 abc
>004 abc
この表は、第三正規形でもこのままでしょうか。
この表は主キーがないのではないでしょうか。
また、やはり第二正規系というのがわかりません。
>第二正規形 (主キーに対するデータが固定)
>NO NAME POST JOB
>-------------------
>001 aaa AAA ABC
>002 bbb AAA ABC
>003 ccc BBB DEF
>004 ddd BBB DEF
「主キーに対するデータが固定」とありますので
主キーで一意に判別できる表に分割するということでしょうか。
でもどこまで、それを行うのが第二正規系でしょうか。
>第三正規形 (テーブル別では第二正規化ともいえる)
>NO NAME POST
>--------------
>001 aaa AAA
>002 bbb AAA
>003 ccc BBB
>004 ddd BBB
>POST JOB
>---------
>AAA ABC
>BBB DEF
「テーブル別では第二正規化ともいえる」ですが
1番目の表、2番目の表ともに主キー「no」「POST」でひとつの
レコードをさがせますよね。ということは完全に冗長ではないと思うのですが
もしかして、SKILLの表があるから、まだ第二正規化なのでしょうか。
すいません。書き間違えました。
>レコードをさがせますよね。ということは完全に冗長ではないと思うのですが
↓
>レコードをさがせますよね。ということは完全に冗長だと思うのですが
>この表は、第三正規形でもこのままでしょうか。
第三正規形でもあります。
また、テーブル別にいっているのであって
全体をいっているのではありません。
>NO NAME POST
>--------------
>001 aaa AAA
>002 bbb AAA
>003 ccc BBB
>004 ddd BBB
これも
>POST JOB
>---------
>AAA ABC
>BBB DEF
これも
どっちも第三正規形です。
又、NOを主キーと考えると上の表は第二正規形であります。
同様に下の表もそうですね。
> 「主キーに対するデータが固定」とありますので
> 主キーで一意に判別できる表に分割するということでしょうか。
> でもどこまで、それを行うのが第二正規系でしょうか
どこまでおこなっても同じです。
主キーが分かるとそれに対するデータが分かるテーブルが第二正規形です。
(まちがってないはず・・・)
何度もありがとうございます。
>主キーが分かるとそれに対するデータが分かるテーブルが第二正規形です。
私、↑を第三正規系だと思っていました。
ということは第三正規系とは何をするものなのでしょうか。
>又、NOを主キーと考えると上の表は第二正規形であります。
↑の表現もよくわからないです。見方によって第二だったり第三だったり
するものなのでしょうか。
(しつこくてすみません)
> ↑の表現もよくわからないです。見方によって第二だったり第三だったり
> するものなのでしょうか。
はい、そうです。
えっとこっちを見てみるといいかも?
http://www.wakhok.ac.jp/DB/section2.7.6.html
「データベースの論理設計」より抜粋。
>こうした、「第二正規形」の、キー項目以外の項目が相互に依存関係を持たない
>ようにすることを、「第三正規化」という。別の言い方をすれば、
>「第三正規形」とは、キー項目以外の全ての項目が、主キーに間接的でなく、
>直接に従属している「第二正規形」である。
http://www.wakhok.ac.jp/DB/section2.7.9.html
↑で目からウロコでした。
実はこれが何年もわからず、今日思い立って質問したところ
上記のようなサイトを教えていただき、かつ私のわけわからない質問に
答えて頂いて本当に感謝です。ありがとうございました。