支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • 基礎から分かるデータベース

データベースとは

「データベース」とは、ある特定の条件にあてはまる「データ」を蓄積しておいて、そこから必要な情報を抜き出したり、更新したりということが行えるデータの集まりのことを言います。身近な例で言いますと携帯電話やスマートフォンのアドレス帳などが上げられます。このようにコンピュータ上で管理するデータをデータベースと呼ぶことが多いですが、紙媒体の住所録などもデータベースと呼べます。

データベースの仕組み

データベースにはいくつかの種類がありますが、代表的なのは「関係型」「階層型」「ネットワーク型」の3つがあげられます。その中でも「関係型」がデータベースの現在の主流になっています。

関係データベースは以下の図のように「テーブル」という表で構成されます。その表の横の項目を「行」(レコード)と呼び、縦の項目を「列」(カラム)と呼びます。なぜ「関係型」と呼ばれるのかというと、データの内容次第で複数の表を関連付けして扱う事ができるようになっているからです。そのため関係データベースはリレーショナルデータベース(RDB:Relational Database)とも呼ばれます。

主キーと外部キー

データベースを扱う場合、その中の行ひとつひとつを識別するために「キー」を設定しなくてはなりません。これを「主キー」(プライマリーキー)と呼びます。もし名前などを主キーにしてしまうと、同姓同名の名前が表にある場合に識別できなくなってしまうので、学生番号や会員番号などが主キーになる場合が多いです。また主キーは行を特定するために必ず一意の値を設定しなくてはならず、空の値(NULL)になってはいけません。

テーブルが複数存在し、表と表を関連付けするときにもこの主キーが活躍します。その場合は外部の主キーを参照しているので「外部キー」と呼ばれます。

トランザクション管理と排他制御

データベースは複数の人で共有して使う事ができますが、もし複数の利用者が同時に読み書きを行った場合データベースは正しいデータを保持することができなくなってしまいます。そこで利用されるのがトランザクション管理と排他制御です。

トランザクション管理

データベースでは一連の処理をひとまとめにしたものを「トランザクション」と言います。例えば銀行の振込処理を行う場合、自分の口座から指定の口座へ振り込む際に、まず自分の口座の残高を減らし、振込先の口座の残高を増やすという処理が行われます。もし途中でなんらかのエラーが発生し自分の口座の残高は減ったのに振込先の残高は増えていないといった状況が起こると困ります。そこで上記の自分の口座の残高を減らす、振込先の口座の残高を増やすという処理をひとまとめに扱い、最後の処理が終わった時にその結果を確定します。そのことをコミットと呼びます。もしトランザクションの途中でエラーが発生した場合は、トランザクション内の処理を取り消して処理の開始直前の状態に戻します。そのことをロールバックといいます。

トランザクションにはACID特性と呼ばれる特性を備える必要があります。

A:Atomicity(原子性)~トランザクションの処理結果は中途半端に一部だけ実行されないようにする事。
C:Consistency(一貫性)~データベースの内容に矛盾が生じないようにすること。
I:Isolation(隔離性)~複数のトランザクションを同時に実行した時の結果と、順番に実行した場合の処理結果が一致する事。
D:Durability(耐久性)~正常に終了したトランザクションの処理結果は障害が発生した場合も消失しないこと。

排他制御

処理中のデータに複数の人が同時に編集しようとするとデータに不整合が生じてしまうので編集中のデータをロックして他の人が読み書きできないようにすることを排他制御と言います。排他制御には「共有ロック」と「専有ロック」の2種類があります。

共有ロック

データを参照する時だけにかけるロックの方法です。共有ロック中は他のトランザクションからもデータを参照する事はできますが、更新することはできなくなります。

専有ロック

データを更新する時にかけるロック方法です。専有ロック中は他のトランザクションでデータを参照する事も出来なくなります。

デッドロック

ただしロック機能を使う場合には注意しなくてはなりません。複数のトランザクションがお互いに相手の使いたいデータをロックしてしまい、お互いがお互いにロックを待ち続ける状態になってしまいます。この現象をデッドロックと言います。

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

上記で説明したデータベースの機能をアプリケーションから簡単に扱えるようにしたのが「データベース管理システム」(DBMS:Data Base Management System)というミドルウェアです。社内やWebのデータベースには直接アクセスしているわけではなく、このDBMSが間に入ってデータベースの読み書きを行っています。

データベース管理システムの種類

MySQL

OSSのRDBMSであり、OSSの中ではとても高いシェアを誇っています。大容量のデータも高速に行えるため、レンタルサーバや検索エンジンでも使用されています。

PostgreSQL

MySQLとともに人気のRDBMSです。MySQLがパフォーマンスを引き出すことに長けているのに対してPostgreSQLはバランスよく機能が実装されています。

Microsoft SQL server

上記のデータベースと比較すると操作のしやすさに定評があり、国内で人気の高いデータベースです。

Microsoft Access

サーバー等に接続せずとも単体でデータベースとして動作するアプリケーションで、データ操作にSQLを書く必要がなく状況に応じて簡単にカスタマイズすることが可能です。主に中小企業や小規模事業差に利用されることが多いです。

おわりに

本記事ではデータベースの基礎的な知識をご紹介させていただきました。データベースに関する知識はどのような職種でも必須の知識であるので、ぜひ学習してください。またデータベースを操作する際にSQLという言語を用いなくてはならないので、SQL文の書き方もセットで学習しましょう。