2020.02.21フルスタックエンジニアのためのデータベースの知識【基礎編】データベースこんにちは、徳田です。皆さんは「データベース」という言葉を聞いたことがありますか?このブログでも度々出てきている言葉ですが、プログラミングとデータベースは切っても切れない関係にあります。今回は、そんなデータベースについて、初心者の方向けにご説明します。この記事を読むと・データベースとは何か?を知ることが出来ます。結論から言うとデータベースとは、データを永続的に保存しておく場所なぜデータベースが必要なのか?Webサービスでは、ユーザー情報を登録したり、ブログ記事を投稿したり、商品を注文した履歴を残したりといったように、様々な情報を保存(記録)しておく必要があります。プログラムだけでは情報を永続的に覚えておくことが出来ません。※変数というものを使って一時的に覚えておくことは出来ます。変数についてはこちらの記事で詳しく解説しています。変数とはプログラムを汎用的に動かすためのマジックアイテム2020.01.07プログラミングには欠かせない「変数(へんすう)とは何か?」について解説しています。変数をいまいちよく理解できていない...という方は、ぜひ一度読んでみてください。データベースは、こういった情報を「永続的に保存」しておくために使います。Amazonに掲載されている商品も、Twitterに投稿されたツイートも、このブログ記事も、全てデータベースの中に保存されています。※全てが1つのデータベースに保存されている訳ではなく、それぞれのサービスごとにデータベースを持っています。全てのWebサービスで、データベースを使っていると言っても過言ではありません。データベースはどこにある?データベースは、物理的には「サーバー」と呼ばれるコンピューターの中にあります。Webサービスが動くサーバーの中に、「データベース管理システム(DBMS)」と呼ばれるソフトをインストールして、それを常に稼働させておくことで、データベースが使えるようになります。Server」などがあります(使用形態によって料金体系が変わる場合があります)なお、規模の大きなWebサービスでは、データベース専用のサーバーを何台も設置して、プログラムのサーバーとは分けて稼働させている場合もあります。データベースの中身はどうなっているのか?MySQLなどのデータベース管理システムの中には、複数の「データベース」(=データを保存しておく場所)を作ることが出来ます。通常、サービスごとに1つのデータベースを作ります。例)ネットショップを作る場合まず、データベースを作ります。データベースの中には、複数の「テーブル」を作ることが出来ます。サービスの中で扱うデータは、種類ごとにテーブルに保存します。テーブルの中には複数の「カラム」を作ることが出来ます。カラムには、そのデータ持つ様々な属性値を保存します。データベースの中身は、このような構造体になっており、Webサービスを作るときに「どういうテーブルをいくつ作って、その中にどんなカラムを作れば良いか」を考えることを「データベース設計」と呼び、これもプログラマーの仕事の1つです。無駄のあるデータの持ち方になっていると、プログラムからデータを操作する際にも非効率になってしまうため、データベース設計はWebサービスのパフォーマンスにもつながる重要なスキルです。プログラムからデータベースに対して行う操作は、主に以下の4種類です。操作を行う際は、「SQL(エスキューエル)」という専用の命令を使って行います。実際のWebサービスの画面で、データベースがどのようになっているのか見てみましょう。このような「商品一覧」を表示する画面があります。このWebサービスのデータベース構造はこのようになっています。これは、商品を保存しているテーブルの実際の画面です。テーブルは、このように「表」形式で管理されています。この1行1行が「1商品」になっています。現場の知識データベースの設計次第で、Webサービスの動作速度や、今後の拡張のしやすさなどが変わってきます。設計にはコツがあり、慣れてくるとあまり考えなくてもサクサク出来るようになってきます。データベース設計は大体このような流れで行います。1Webサービスの画面設計を起こす。↓2このサービスに登場するデータの種類(例えばユーザー、商品など)を洗い出し、それをテーブルとする。↓3画面設計の表示項目や入力項目を見ながら、各データに必要なカラムを決めていく。↓4テーブル間のつながりの設計や、正規化を行う。※正規化とは、複数のテーブルで同じデータを持たないように整理する作業。これらについての詳しい話は「データベース設計」の記事にて、また別の機会に書きたいと思います。啓Webプログラマー暦20年、2児の父。IT企業でWebプログラマーを13年ほどやっており、在職時は新人プログラマーの採用や育成なども担当。現在はその経験を活かして独立。パソコン1台で好きな場所で働くノマドワークを実践しています。