データベースとは何か

システムを構築する際に、データを保存する場所として利用することが多いのがデータベースです。
データベースは、エクセルの表にデータを保存していくイメージに近いです。

例えば、ツイッターをイメージしてみます。
ツイッターシステムは利用ユーザという情報を扱います。
これをエクセルの表で表すとざっくりと次のような表になります。

(表)ユーザ

ユーザは、それぞれが名前を持ち、ログインIDとパスワードを持っています。
ユーザがツイッターに新規アカウントを作ると、システムはその新規アカウントのユーザ情報を保存する必要があります。
この時、システムはこの表に新しい1行を追加して、新しいユーザ情報を書き込むのです。

ユーザはツイートを投稿することができます。
ツイート情報は次のような表で表すことができます。

(表)ツイート

ツイートには本文があり、投稿日時も記録されます。
でもこれだけでは、どのツイートをどのユーザが投稿したのかわかりませんね。
そこで、次のように表の列を増やしてみます。

(表)ユーザ
(表)ツイート

(表)ユーザには、ユーザIDの列を追加しました。
このユーザIDは表の行番号のようなものです。ユーザIDがわかればユーザを一意に特定することができます。例えば、ユーザIDが3のユーザは名前が「Maarten Hol」だとわかります。
同じように(表)ツイートには、ツイートIDを追加しました。ツイートIDが3のツイートの本文は「変ましたんたはたす…」だとわかります。
このように表の1行を特定するための値を、データベースでは「主キー」と呼びます。

更に、(表)ツイートにはユーザIDの列も追加しています。
これは、「どのユーザが投稿したツイートか」という情報です。例えば、「ツイートIDが3のツイートはユーザIDが2のユーザが投稿した」とわかります。少し言い換えると、「ツイートIDが3のツイートはSisto Polliniという人が投稿した」と捉えることもできます。
このように別の表の行を参照するための値を、データベースでは「外部キー」と呼びます。


ツイッターにはフォロー機能があります。
どのユーザがどのユーザをフォローしているか、という情報は次のような表で表すことができます。

(表)フォロー

この表から次のことがわかります。
・ユーザIDが1のユーザは、ユーザIDが2のユーザをフォローしている
・ユーザIDが1のユーザは、ユーザIDが3のユーザをフォローしている
・ユーザIDが2のユーザは、ユーザIDが3のユーザをフォローしている

また、次のように列を追加することで、「いつフォローしたか」という情報を持たせることもできます。

(表)フォロー

・ユーザIDが1のユーザは、ユーザIDが2のユーザを2019/4/2 12:34にフォローした
・ユーザIDが1のユーザは、ユーザIDが3のユーザを2020/12/23 3:03にフォローした
・ユーザIDが2のユーザは、ユーザIDが3のユーザを2020/10/10 19:55にフォローした

(表)フォローでは、ユーザIDとフォローユーザIDの2つの外部キーを持ちます。共に(表)ユーザの主キーであるユーザIDを参照しています。
(表)フォローの1行を特定したいとき、外部キーであるユーザIDとフォローユーザIDの2つの値がわからなければ特定できません。
ユーザIDが1という情報だけでは2行存在し、フォローユーザIDが3という情報だけでも2行存在します。
ユーザIDが1かつフォローユーザIDが2であるという情報が揃うことで1行を特定できます。
よって、ユーザIDとフォローユーザIDのセットで、(表)フォローの主キーということになります。


ここまで見てきたように、データベースは様々な情報を表に記録して、表同士の関係性を主キーと外部キーで表現します。
表同士に関係性を持たせることから、このようなデータベースを特に関係データベース(リレーショナルデータベース)と言います。

関係データベースを使うためには、RDBMS(関係データベース管理システム)が必要です。
一般に普及しているRDBMSには次のような製品があります。

  • Oracle Database(Oracle)
  • SQL Server(Microsoft)
  • DB2(IBM)
  • PostgreSQL(オープンソース)
  • MySQL(オープンソース)

これらのRDBMS製品をサーバにインストールすることで、関係データベースを構築することができます。

コメントを残す

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