いまいち役割がわからないな。。何か勉強が必要なのかな?
こんにちは、古賀です!
本記事では、
はてな
「データベースの種類や製品」
「データベースの使われ方と身に付けるべきスキル」
について、お話します!
データベースはシステム開発をするにおいても、
WEBサービスを開発するにおいても欠かせないものです。
設計者であっても、プログラミングをするにしても、
データベースは避けて通れません。
システムエンジニアであっても、
プログラマーであっても、
データサイエンティストであっても、
職種に関係なく基礎知識を身に付けましょう!
自己紹介が遅れましたが、
わたしは大学卒業後、上場IT企業に就職し、プログラマー、システムエンジニアとして
約10年間働いておりまして、現在フリーランスとして活動しております。
プロフィールの詳細はこちらです。
-
プロフィール
こんにちは、古賀正雄です。現在36歳です。 簡単ではありますが、こちらのページで自己紹介とこのブログについてお話します。 高校時代 学生時代は主に野球をしていました。 進学先の高校も野球で選びました。 ...
続きを見る
※YouTubeに同内容を公開しております。
データベースとは?
はじめに「データベースとは?」についてですが、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つから選ぶことをオススメします!
データベースの役割は?どのように使われている?
続いて、データベースの役割についてですが、
データベースがあることで「続きから」ができるようになります。
ゲームであれば、前回セーブした時点から再開できます。
システムであれば、昨日入力した内容が今日も残っています。
もしデータベースがないプログラムであれば、電源を切ってしまったら「最初から」です。
電卓をイメージして頂くとわかりやすいかもしれません。
プログラムにより計算は自動でされますが、電源を切ったら前回の内容は残っていません。
データベースは「SQL」というデータベース言語を使って、
データを追加したり、上書き更新したり、削除したり、取得したりすることができます。
販売システムを例に説明します。
図の円柱がデータベースのテーブルを表しています。
在庫照会プログラムでは、在庫テーブルからデータを取得して画面に表示させています。
発注入力プログラムでは、入力内容を発注テーブルへデータを追加更新しています。
発注書プログラムでは、発注テーブルからデータを取得して発注書を印刷しています。
仕入入力では、入力内容を在庫テーブルへ更新しています。
このように各システムやWEBサービスでは必ずと言っていいほど、データベースが使われています。
また、現在データサイエンスの分野が注目されており、
データベースに蓄積されたデータを有効活用できないかと言われています。
データ分析を行う「データサイエンティスト」にとっても、データベースの知識は必要になります。
データベースに対する必要スキルは?
データベースに対する身に付けておきたいスキルは、以下の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を書く」ことを「クエリを書く」とも言います。
SELECT 受注番号 , 単価 , 数量 , 金額 FROM T_JUCHUU WHERE 単価 * 数量 <> 金額
日本語訳すると、
「単価×数量」≠「金額」となっている受注データを表示してください。
という意味になります。
取ってきたデータに対して、今度はデータを修正する「SQL」を書いて不具合対応を行います。
このようにプログラム開発の場以外でも「SQL」は活躍するので、
日本語と同じように「SQL」を扱えるようにスキルを磨きましょう!
データベース「テーブル設計」
「SQL」の次に身に付けておきたいスキルが「テーブル設計」です。
「テーブル設計」とは、
システムやサービスを作る上で、
どんなテーブルが必要で、そのテーブルにどんな項目が必要かどうかを設計するスキル
です。
先程の受注テーブルの例を借りますと、
「受注データには商品コードも必要!」
ということがわかるようになる必要があります。
設計者側だけできれば良いのではなく、
プログラマーでも「テーブル設計」スキルは必要です。
設計者のミスに気付けたり、プログラマーが自分でテーブルを作ることもありえます。
「テーブル設計」スキルは「経験」がモノを言いますので、
色んなシステムやサービスのテーブル構造を見て、あせらず、じっくり身に付けましょう!
まとめ:データベースとは?
ここまでの話をまとめます。
まとめ
データベースとは、
「データを置いておく場所であって、データを管理・操作することができるソフトがある」
データベースの種類は様々あるが、現在は
「表形式でデータを管理するリレーショナル型データベース(RDB)」
がほとんど。
データベース管理システムは、
- Oracle
- SQL Server
- MySQL
- PostgreSQL
などがある。
データベースがあることで、
「続きからができるようになり、各プログラムでSQLを実行しデータ操作が行われる」
データベースに対して身に付けておきたいスキルは、
- 「SQL」
- 「テーブル設計」
の2つ!
わたしがSIerで働いていた頃は、データベースを触らないで終わる日はほとんどありませんでした。
プログラマー時代はプログラム開発で、
システムエンジニア時代はテーブル作成をしたり、データ移行作業だったり、データ調査だったりと、
毎日のようにSQLを書いたり、テーブル設計をしていました。
そのおかげ?もあり、取ってきたいと思ったデータはすぐに取ってこれますし、
「こうしたい!」
と思った内容がどうすれば実現できるかが、すぐにわかるようになりました。
特に「SQL」は大事です。
このスキルが何度も自分を助けてくれました。
他の人が何時間も掛けている作業を一瞬で終わらせることができたり、
不具合の原因をすぐに見つけたりすることができます。
エンジニアに挑戦される方は、プログラミング言語の方の勉強も大事ですが、
「SQL」の勉強も大事です。
むしろ「SQL」の方が大事かもしれません。
データベースの知識を身に付けましょう!
身に付けた「SQL」スキルがいつか自分を救ってくれます!