クヌギの勉強記

こんにちは、クヌギです。このブログでは情報処理技術者試験を中心とした各種資格の勉強を記録していきます。

データベースの正規化【No.1】

こんにちは、クヌギです。

今回は「正規化」という技術について学習したことを共有していきます。

f:id:Kunugin:20200124144835p:plain

はじめに

この記事は「正規化」について詳しく解説をしているわけではありません。ある分野を対象とした問題を解くための、いわば「試験のための知識」を紹介しているブログになります。よってこのブログはとりあえず試験に受かるための知識が欲しいという方だけお読みください。尚、このブログを読んだからと言って試験に受かるわけではありません。あくまで試験に受かるかどうかは皆さんの努力次第になります。頑張ってください。

正規化とは

定義

正規化とは、「ある対象を、ある一定のルールに基づいて加工していくこと」です。正直この知識は役に立っても午前問題のみって感じだと思いますので、そうなんだぐらいに考えておいてください。

目的

正規化の目的は自分が何のために正規化をしているのかを理解するためにも覚えておきましょう。ずばり正規化の目的は、「データの冗長性を排除するため」です。つまりデータの無駄な部分をなくすってことです。これだけ覚えておけば十分でしょう。

種類

では正規化の種類について、出題実績のあるものをあげていきます。

非正規形

これは「繰り返し項目が存在するテーブル」です。
例えば、「コーラを1本、ソーダを2本買った」とします。そのデータをテーブルに直したときに

伝票番号 商品名 数量 商品名 数量
1 コーラ 1 ソーダ 2

このように1行のテーブルに繰り返している列(カラム)が存在したらそれは非正規形です。
試験の問題では、「非正規形である理由をこたえよ」みたいな感じで出題されます。これに対する回答は、「テーブルに繰り返し項目が存在するため」という感じです。

第一正規形

これは「繰り返し項目はないが、部分関数従属性が存在するテーブル」です。
例えば、「商品番号:1のコーラを1本、商品番号:2のソーダを2本買った」とします。そのデータをテーブルに直したときに

伝票番号 商品番号 商品名 数量
1 1 コーラ 1
1 2 ソーダ 2

このようなテーブルができたら、部分関数従属性が存在しています。それぞれの属性の関係を見てみると、
「数量は伝票番号と商品番号の両方が分かって初めて決まる」
「商品名は商品番号がわかって初めて決まる」
こんな関係が浮かんできます。この関係からわかることは「このテーブルの主キーは伝票番号商品番号である」です。主キーが複合キーである場合においてそのうちの一部からの関数従属が存在しているものは「部分関数従属性が存在」しています。
試験の問題では、「第一正規形である理由をこたえよ」みたいな感じで出題されます。これに対する回答は、「非キー属性である’商品名’が候補キーの一部である’商品番号’に部分関数従属しているから」という感じです。

第二正規形

これは「繰り返し項目や部分関数は存在しないが、推移的関数従属性が存在するテーブル」です。
例えば

伝票番号 店舗番号 店舗名
1 10 クヌギ支店

このようなテーブル(主キーは_で示す)が存在した場合に「伝票番号がわかったら店舗番号がわかる、店舗番号がわかったら店舗名がわかる」という関係が存在します。これが非キー属性が候補キーに推移的関数従属している状況です。
試験の問題では、「第二正規形である理由をこたえよ」みたいな感じで出題されます。これに対する回答は、「非キー属性である’店舗名’が候補キーである’伝票番号’に推移的関数従属しているため」や「’伝票番号’→’店舗番号’→’店舗名’という推移的関数従属性が存在するため」という感じです。

第三正規形

これは「第二正規形であり、推移的関数従属性が存在しないテーブル」です。基本的には正規化の問題ではここを目指して正規化していきます。
上の第二正規形で使ったテーブルを

伝票番号 店舗番号
1 10

店舗番号 店舗名
10 クヌギ支店

みたいな感じに正規化できていれば、両方のテーブルが第三正規形の条件を満たしています。

最後に

さて今回は「正規化」という言葉について学んだjことを共有してきました。お気づきの方もいらっしゃるかもしれませんが、実は正規化にはまだ種類があり「第四正規形」、「第五正規形」、「ボイスコッド正規形」などが代表的なものです。これらの正規形も紹介しようと思いましたが、中途半端な知識で紹介すると読者様の混乱を招くことになりそうなので止めておきました。
とはいっても第一、第二、第三が理解できていれば午後Ⅰの問題は解けると思われますので基本をしっかり押さえておきましょう。



出典:情報処理教科書 データベーススペシャリスト 2020年版(ITのプロ46 三好康之)|翔泳社の本


↓押してくれると嬉しいです
にほんブログ村 資格ブログ IT系資格へ
にほんブログ村