エンジニア データサイエンティスト

データベースとは?データベースの役割と身に付けるべきスキルとは?

2020年10月17日

データベースとは?

プログラミングの勉強を始めたけど、データベースってどういう風に使われているんだろう?
いまいち役割がわからないな。。何か勉強が必要なのかな?

 

こんにちは、古賀です!

 

本記事では、

はてな

「データベースの種類や製品」

「データベースの使われ方と身に付けるべきスキル」

について、お話します!

 

データベースはシステム開発をするにおいても、

WEBサービスを開発するにおいても欠かせないものです。

 

設計者であっても、プログラミングをするにしても、

データベースは避けて通れません。

 

システムエンジニアであっても、

プログラマーであっても、

データサイエンティストであっても、

職種に関係なく基礎知識を身に付けましょう!

 

自己紹介が遅れましたが、

わたしは大学卒業後、上場IT企業に就職し、プログラマー、システムエンジニアとして

約10年間働いておりまして、現在フリーランスとして活動しております。

プロフィールの詳細はこちらです。

※YouTubeに同内容を公開しております。

データベースとは?

PC

はじめに「データベースとは?」についてですが、Wikipediaから引用しますと、

データベース(英: database, DB)とは、検索や蓄積が容易にできるよう整理された情報の集まり。 通常はコンピュータによって実現されたものを指す。コンピュータを使用したデータベース・システムでは、データベース管理用のソフトウェアであるデータベース管理システムを使用する場合も多い。

Wikipediaより引用

とありますが、簡単に言い換えますと「データベース」は、

「データを置いておく場所であって、データを管理・操作することができるソフトがある」

と言えます。

ちなみに「データベース」は、よく「DB(デービー)」と略されて呼ばれます。

 

一口にデータベースと言っても、色々な種類があります。

上記にあります「管理ソフト」にも色々な製品があるので、

次はデータベースの「種類」と「製品」についてお話していきます。

データベースの種類

データベースの種類には、

  • 階層型データベース
  • ネットワーク型データベース
  • リレーショナル型データベース

とありますが、現在使われているデータベースはほとんどが「リレーショナル型データベース」です。

「リレーショナル型データベース」は「RDB」と略されて呼ばれます。

 

「階層型データベース」と「ネットワーク型データベース」は、

各データが「親子関係」で結び付けられているデータベースです。

それに対して「リレーショナル型データベース」はEXCELのように、

データが以下のように「表形式」で管理されています。

受注番号 単価 数量 金額
101 200 5 1,000
102 300 4 1,200
103 400 2 800

1つ1つの表をEXCELで言えば「シート」ですが、データベースでは「テーブル」と言います。

このようなテーブルが1つのデータベースに複数存在して、

システムやWEBサービスが成り立っています。

データベース管理システム(DBMS)

データベースを管理するソフトを「データベース管理システム(DBMS)」と呼びます。

このデータベース管理システムも多くの種類が存在しますが、2020年のトップ4を挙げますと、

以下のような製品があります。

  • Oracle
  • SQL Server
  • MySQL
  • PostgreSQL

「Oracle」や「SQL Server」は企業システムで使用されていることが多いです。

逆に「MySQL」や「PosgreSQL」はWebサービスで使用されることが多いです。

このトップ4が代表的なデータベース管理システムになるので、

初めてデータベースを学んだり、使用される方は、上記の4つから選ぶことをオススメします!

データベースの役割は?どのように使われている?

PC

続いて、データベースの役割についてですが、

データベースがあることで「続きから」ができるようになります。

ゲームであれば、前回セーブした時点から再開できます。

システムであれば、昨日入力した内容が今日も残っています。

 

もしデータベースがないプログラムであれば、電源を切ってしまったら「最初から」です。

電卓をイメージして頂くとわかりやすいかもしれません。

プログラムにより計算は自動でされますが、電源を切ったら前回の内容は残っていません。

 

データベースは「SQL」というデータベース言語を使って、

データを追加したり、上書き更新したり、削除したり、取得したりすることができます。

販売システムを例に説明します。

業務フロー

図の円柱がデータベースのテーブルを表しています。

在庫照会プログラムでは、在庫テーブルからデータを取得して画面に表示させています。

発注入力プログラムでは、入力内容を発注テーブルへデータを追加更新しています。

発注書プログラムでは、発注テーブルからデータを取得して発注書を印刷しています。

仕入入力では、入力内容を在庫テーブルへ更新しています。

 

このように各システムやWEBサービスでは必ずと言っていいほど、データベースが使われています。

また、現在データサイエンスの分野が注目されており、

データベースに蓄積されたデータを有効活用できないかと言われています。

データ分析を行う「データサイエンティスト」にとっても、データベースの知識は必要になります。

データベースに対する必要スキルは?

BIGDATA

データベースに対する身に付けておきたいスキルは、以下の2つです。

  • 「SQL」
  • 「テーブル設計」

細かく言えば、データベースに対するバックアップのことであったり、

動作が遅くなってしまった場合のレスポンスのことであったりと、

色々とありますが、万人に身に付けて欲しいな思うのは、この2つになります。

データベース言語「SQL」

「SQL」のスキルはSIer業界、WEB業界に限らず、必須のスキルです。

システム開発、WEBサービスの開発をする際にプログラミングで使用することはもちろんですが、

実際にシステムやサービスを使っている最中に、

不具合を引き起こしてしまった時にも「SQL」を使います。

 

例えば、プログラムの不具合によって、受注テーブルの中のデータが以下のように、

「単価×数量」≠「金額」の状態になってしまったとします。

受注番号 単価 数量 金額
101 200 5 900
102 300 4 1,100
103 400 2 700

上記は3つしか表示していませんが、

不具合が発生しているのはこの受注データだけではないかもしれません。

そんな時にSQLで対象のデータを絞り込みます。

※SQL Serverを例にSQLを書いています。「SQLを書く」ことを「クエリを書く」とも言います。

日本語訳すると、

「単価×数量」≠「金額」となっている受注データを表示してください。

という意味になります。

取ってきたデータに対して、今度はデータを修正する「SQL」を書いて不具合対応を行います。

 

このようにプログラム開発の場以外でも「SQL」は活躍するので、

日本語と同じように「SQL」を扱えるようにスキルを磨きましょう!

データベース「テーブル設計」

「SQL」の次に身に付けておきたいスキルが「テーブル設計」です。

「テーブル設計」とは、

システムやサービスを作る上で、

どんなテーブルが必要で、そのテーブルにどんな項目が必要かどうかを設計するスキル

です。

 

先程の受注テーブルの例を借りますと、

「受注データには商品コードも必要!」

ということがわかるようになる必要があります。

 

設計者側だけできれば良いのではなく、

プログラマーでも「テーブル設計」スキルは必要です。

設計者のミスに気付けたり、プログラマーが自分でテーブルを作ることもありえます。

 

「テーブル設計」スキルは「経験」がモノを言いますので、

色んなシステムやサービスのテーブル構造を見て、あせらず、じっくり身に付けましょう!

まとめ

ここまでの話をまとめます。

まとめ

データベースとは、

「データを置いておく場所であって、データを管理・操作することができるソフトがある」

データベースの種類は様々あるが、現在は

「表形式でデータを管理するリレーショナル型データベース(RDB)」

がほとんど。

データベース管理システムは、

  • Oracle
  • SQL Server
  • MySQL
  • PostgreSQL

などがある。

データベースがあることで、

「続きからができるようになり、各プログラムでSQLを実行しデータ操作が行われる」

データベースに対して身に付けておきたいスキルは、

  • 「SQL」
  • 「テーブル設計」

の2つ!

 

わたしがSIerで働いていた頃は、データベースを触らないで終わる日はほとんどありませんでした。

プログラマー時代はプログラム開発で、

システムエンジニア時代はテーブル作成をしたり、データ移行作業だったり、データ調査だったりと、

毎日のようにSQLを書いたり、テーブル設計をしていました。

 

そのおかげ?もあり、取ってきたいと思ったデータはすぐに取ってこれますし、

「こうしたい!」

と思った内容がどうすれば実現できるかが、すぐにわかるようになりました。

 

特に「SQL」は大事です。

このスキルが何度も自分を助けてくれました。

他の人が何時間も掛けている作業を一瞬で終わらせることができたり、

不具合の原因をすぐに見つけたりすることができます。

 

エンジニアに挑戦される方は、プログラミング言語の方の勉強も大事ですが、

「SQL」の勉強も大事です。

むしろ「SQL」の方が大事かもしれません。

 

データベースの知識を身に付けましょう!

身に付けた「SQL」スキルがいつか自分を救ってくれます!

おすすめ記事

道のり 1

※本記事は、各記事のまとめ記事です。   こんにちは、古賀です!   本記事では、 「プログラミング未経験者がエンジニアとして働き、 年収1000万に到達するまでの道のり」 をご説 ...

成長するエンジニア 2

  エンジニアになったけど、いまいち成長を感じられないなぁ。。 作業スピードも品質も平凡。 この先成長していけるんだろうか。。   こんにちは、古賀です!   エンジニア ...

闘病記 3

※本記事は、各記事のまとめ記事です。   こんにちは、古賀です!   わたしは25歳の時に、悪性リンパ腫になりました。 不安な気持ちになって、たくさん泣きました。 本気で「死ぬかも ...

プログラミングスクール 4

  プログラミングを本格的に勉強して仕事に繋げていきたいけど、 プログラミングスクール多すぎる。。 どういう目線で選べばいいんだ。。   こんにちは、古賀です。   プロ ...

-エンジニア, データサイエンティスト
-, ,

Copyright© Koga Masao's LifeBlog 〜Alive Today〜 , 2020 All Rights Reserved.