【経営情報システム】仕事でも役立つ!データベースの正規化を身につけよう!by sevensea

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

一発合格道場ブログを
あなたのPC・スマホの
「お気に入り」「ブックマーク」
ご登録ください!

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

X(旧Twitter)もよろしくお願いします

sevensea
sevensea

みなさんこんにちは、16代目のsevenseaです!
自己紹介の次の記事に相応しいテーマかはわかりませんが、経営情報システムの中から、データベースの正規化のお話をします!

一次試験のために勉強はしたけど、仕事でも役立つって本当なの?

さくら
さくら

めっっっっっっっっっっっちゃ役に立つ!!!!!!!異論は認めない!!!!!!!

・・・

関心の薄いまさき
関心の薄いまさき

お知らせ

セミナー告知

追加募集決定!!

  • 日 時:4月26日(土)13:00~15:00
  • 形 式:ZOOM
  • 定 員:先着30名 45名(集まり次第終了)
  • 参加費:無料
  • 内 容:道場メンバーとの座談会
    一次試験対策、二次試験対策それぞれでブレイクアウトルームに分かれて座談会を行います!診断士試験界隈では知らない人はいない?!あのスペシャルゲストも参加予定!!乞うご期待☆

中小企業診断士1次試験

1次試験の日程は以下の通りです。

令和7年度中小企業診断士試験の次の日程が発表されました。※協会のホームページより。

試験日程

試験実施試験案内配布・申込受付期間合格発表日
1次試験令和7年 8月2日(土)・3日(日)4月24日(木)~5月28日(水)9月2日(火)
2次筆記試験令和7年 10月26日(日)9月2日(火)~9月22日(月)1月14日(水)
2次口述試験令和8年 1月25日(日)2月4日(水)

なお、令和7年度から、中小企業診断士試験は、インターネットによる受験申し込みに変更する予定です。それに伴い、従来実施していた試験案内・申込書の配布は行わないそうです。

ブログでも随時案内をしますが、協会のホームページもチェックしてくださいね!

データベースは捨て問…?

過去の道場の記事を見ていると、

14代目のひろしさんや、
同じく14代目のおのDさんがデータベースは捨て問にされがちだけど、勿体無い!ということをおっしゃっています。
(ちなみに、今回はSQLにはあまり触れないので、SQLについて知りたい人はおのDさんの記事を読んでみてください!とてもわかりやすくておすすめです!)

その通りだ!!データベースの問題を捨てるなんてもったなすぎる!!!

データベースの問題は用語の問題と違い、一度しっかりと理解をしてしまえば確実に点数が取れる問題です。昨年(令和6年度)はデータベースの中でもSQLの問題に加え、正規化の問題が出題されていましたが、道場で正規化について触れられていたのは結構前の記事になるので、改めて正規化について解説していければと思います。

基本的な用語の解説

まずは正規化の説明の中で使用する用語を簡単に解説していきます。が、この用語、一部は英語で表現されることもそれなりによくあるので、ここでは両方を併記しておきます…。

面倒くさがるsevensea
面倒くさがるsevensea

日本語だけでよくない?

試験のためには日本語で覚えておけばOKだけど、英語が得意な人は英単語の意味から覚えるのもおすすめ!

関係データベース(relational database・RDBと略す場合も)

データを複数の表に分けて保管して、分けられた表同士がどのように関係しているかを決めておくことで、複雑なデータを間違いなく管理できるようにする、データベースの管理方法のことです。

上の画像は簡単な関係データベースの例です!

主キー(primary key)

関係データベースの表の中で、行(正確には「レコード」と言います)を一意に識別するための列(正確には「カラム」と言います)のことです。上の関係データベースの例で言うと、下の画像のオレンジで囲まれた列が主キーになります。

学生時代の「出席番号」や「学籍番号」をイメージしてもらうと分かりやすいかと思います。なお、主キーは必ずしも一つの列である必要は無く、複数の列を組み合わせて主キーとする場合もあります。

外部キー(foreign key)

関係データベースの中で、他の表との関係性を示すために設けられている行のことです。下の画像のオレンジで囲まれた列が外部キーで、矢印で関係性を示しています。

関数従属性

ある列(複数列でもOK)の値が決まった時、別の列の値が1つに定まる場合、「後者の列は前者の列に関数従属している」と言うことができます。

?????????????

上の関係データベースの例で言うと、「商品ID」が分かれば、「商品名」や「単価」は必ず一つの値に定まります
また、「担当者ID」が分かれば、「担当者名」や「住所」は必ず一つの値に定まります
このように、「AならばB」と表現される列の関係を、「BはAに関数従属している」と表現しています。

正規化、やってみよう!

解説に最低限必要な言葉がわかったら、正規化をやってみましょう!

非正規形

まず最初の非正規形、すなわち正規化が全くできていないデータの形の例が以下の画像になります。

図中にも書いてある通り、同じ内容の列が横方向に繰り返されていて、一人の人がたくさんの商品を売れば売るほど、表が横方向に無限に伸びていくことになります。横方向に無限に伸びていくとなると、どれだけの列を用意すれば良いか分からなくて管理がしにくいですし、後からデータを整理する時にも参照する列の数が著しく多くなってしまい、大変になるのは容易に想像がつくのでは無いでしょうか。

第一正規形

上記の非正規形の問題を解消したのが、第一正規形で、以下の画像のようになります。

非正規形の時のように、横方向に無限に広がることはなくなり、縦方向にデータが伸びていく形を作ることはできました。おかげで、幾分か管理はしやすくなりましたが、まだまだ改善すべき点はあります。
もし、なつが急にこんなことを言い出したらどうなるでしょうか?

改名したいなつ
改名したいなつ

あー、もう夏は飽きたから、「ふゆ」って名前に変えようかな〜〜〜

こうなった場合、二つの行に分かれて記載されている「なつ」の名前を両方とも「ふゆ」に変えなければなりません。この例ではデータの件数が少ないのでまだデータが少ないので対応できますが、もしこのデータが数万行などの膨大な量になれば、どう考えてもデータ更新のミス(これを「不整合」と言います。)が起こります

また、本来は担当者としてsevenseaもいるはずなのですが、一切商品を販売できていないため、存在しないことになってしまっています。

いないことにされたsevensea
いないことにされたsevensea

僕いなくなっちゃった!!

現実の世界でも、売り上げが発生しない限りデータベースに社員の情報が登録できないような形になっていたら、新入社員の情報を管理する方法がなくなってしまいます。やはり、まだまだ改善が必要だと言えるでしょう。

第二正規形

上記の第一正規形の問題を解消するためには、「部分関数従属」を解消する必要があります。

急に難しくなってきたぞ!

部分関数従属とは、関数従属の中でも、主キーの一部から主キー以外の値が特定できる状態のことを言います。先ほどの例で言うと、主キーは「担当者ID」と「商品ID」と「日付」の列になりますが、例えば「担当者ID」だけ分かれば「担当者名」がわかってしまいます。

一方で、「数量」は主キー全てが分からないと数値を特定することができない状態で、これを「完全関数従属」と言います。これ以上分解のしようがない状態であり、データに無駄もない状態です。
他の部分もこの状態に近づけるため、適切に表を分けてあげて、部分関数従属をなくしていくことで、先述の第一正規形の問題解消をしてみます。

このような形にすることで、主キーの一部からいずれかのキーを特定することはできない状態となりました。その結果、なつの名前を変えたければ1箇所だけ変更すれば良いですし、無事sevenseaの存在をデータ内に示すこともできるようになりました。
しかし、「支店」の列を見てみると「東京支店」が何回も出現しており、どうやらこの「支店」は「住所」が決まれば自動的に決定されるようです。この表ではあまり問題はなさそうに見えますが、もし支店の電話番号などの情報も管理しようとしたら、同じ情報が何度も繰り返し出現し、やはりデータ更新時の不整合を誘発する原因となってしまいそうです。

第三正規形

上記の第二正規形の問題を解消するためには、「推移関数従属」を解消する必要があります。

推移関数従属とは、関数従属の中で、「AならばB」かつ、「BならばC」の時、間接的に「AならばC」となる、三段論法のような形となっているものを指します。今回の例では、主キーの「担当者ID」が分かると「住所」が分かり、「住所」が分かると「支店」が分かる、となっている箇所が「推移関数従属」となっていると言えます。やはりこの推移関数従属も、表を分割してあげることで解消します。

これでようやく管理のしやすいデータベースを作成することができました。この手順が理解できれば診断士試験の正規化の問題はバッチリ!(なはず。)

このようなデータの管理方法を覚えておくと、Excelなどで簡単なデータの管理を行う時、後から整理したり、グラフ化したりしやすいデータ管理が自然とできるようになります。診断士試験だけでなく、日頃の仕事にも役に立つので、ぜひ覚えておきましょう🎵

過激なsevensea
過激なsevensea

横に伸びまくる表とか、セルの結合をしまくった表を渡されたら、僕はブチギレます。

(発展)その他の正規形

ちなみに、上記の第三正規形までに加え、ボイスコッド正規形(第3.5正規形とも言う)、第四正規形、第五正規形というものも存在しますが、診断士試験では出ませんし、実務でもそこまで意識しないと思いますし、何より僕が解説できないので、ここでは解説を割愛します。

まとめ

大事なことなのでもう一度言いますが、データベースの問題は用語の問題と違い、一度しっかりと理解をしてしまえば確実に点数が取れる問題です。経営情報システムの横文字が苦手な人こそ、是非データベースを得点源にしましょう!

明日はまさき、事例Ⅳ強者の話楽しみにしてるよ!

任せて〜

まさき
まさき

☆☆☆☆☆

いいね!と思っていただけたらぜひ投票(クリック)をお願いします!
ブログを読んでいるみなさんが合格しますように。

にほんブログ村 資格ブログ 中小企業診断士試験へにほんブログ村
にほんブログ村のランキングに参加しています。
(クリックしても個人が特定されることはありません)

記事へのコメントについて

記事へのご感想やご要望があれば、下部の入力フォームから是非コメントをお寄せください!
執筆メンバーの励みになりますので、よろしくお願いいたします。

※コメント送信後、サイトへ即時反映はされません。反映まで数日要することもあります。
※コメントの内容によっては反映を見送る場合がございますので、予めご了承ください。

Follow me!

【経営情報システム】仕事でも役立つ!データベースの正規化を身につけよう!by sevensea”へ1件のコメント

  1. にっく より:

    こんばんは!
    にっくです。
    データベースについてポイントがまとめられた記事、ありがとうございました!
    若干あやふやなところもありますが、何とか理解できたかもしれません!
    これから実践を通して身につけていきたいと思います!
    ありがとうございました!
    にっく

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です