データ(情報)を集めて記録したもののことです。 ベースとは、野球のベースと語源は同じです。 ベースは塁(るい)ともいいますね。 土塁という言葉もあります。 塁には塁を築くというように砦という意味も有ります。 また、登山のベースキャンプのベースも同じものをさします。
ベース=基地ですね。軍隊の基地もベースです。 基地とは物を蓄えてしっかり守っている施設です。
つまり、
データベース : データを集めて蓄えてある装置(紙の本やCD,DVD,HDDなどの、メディア(媒体)に記録されたデータの集合)
です。
データはただ単に何でもかんでも集めてあればよいというものではありません。
例えば、身長のデータベースに、単に、170cm、175cm、と身長の数値だけが記録されていても意味は無く、 「A君、170cm。 B君、175cm」 というように幾つかの要素と組み合わせて記録して初めて役に立ちます。また、 データベースは 「学生の身体記録データベース」というように、具体的な利用目的に沿ってデータを集め記録し整理したものです。
上で書いた、データベースを管理(マネージメント)するためのソフトウェアのことです。本演習ではAccessというソフトを利用します。 また、後半では、データベースサーバとネットワークで通信する演習も行います。データベースサーバとしては、MySQLを予定しています。
データベースマネージメントシステムを略して DBMS といいます。
では、MySQLやAccessなどのDBMSと、電話番号管理ソフトなどのデータベースはどうちがうのでしょうか?
じつは、DBMSは、名刺管理といったとうな特定の目的にそって使うための専用ソフトではなく、
ある目的のために必要な「なんとかかんとかデータベース」というデータベース自体を作成するための汎用的なソフトです。
ですから、Accessを学ぶということは、データの記録の仕方や取り出し方だけを学ぶのではなく、 「自分の目的に合ったデータベースを自由自在に設計して作成できるようにする」ということです。
では、特定の目的で使用するには、1から自分で全てデータベースを設計しないとデータの管理すら出来ないDBMSという面倒なものが何故必要なのでしょうか?
実は、これはデータベースを利用する人に直接必要なのではなく、 実際にデータベースを必要とする様々な業務に応じて、多種多様なデータベースを作成する人、つまりデータベースエンジニアにとって大変ありがたいソフトなのです。
例えば、大学の成績管理という、どの大学でも必要な成績管理データベースについて考えてみます。
ある1つのデータベースソフトを作成すれば全てまかなえるということは無く、各大学に応じて様々にカスタマイズする必要があります。
このような場合、カスタマイズするのは、情報の表現の仕方(学籍番号の書式など)、どの情報をどう組み合わせるのか、情報の表示(印刷)方法、情報の検索の仕方 などです。
逆にカスタマイズする必要の無いのは、データをどのようにファイルに記録(記入)するか、検索のアルゴリズムや、データの並べ替えのアルゴリズム、データ保護の為のバックアップの仕組み、セキュリティの為の仕組み、といったようなものです。
どの様なデータの表現や組み合わせ方に対しても、この様に変更する必要の無い部分が、うまく機能するように設計されたソフトがDBMSです。
手帳に例えると、
鍵のかかる手帳があって、五十音順の見出しを備えている(何度でも書けるペンや消しゴム付き)
ような手帳は、 電話帳としても利用できるし、出席簿にできるし、 コミックスの読書記録にも利用できます。この五十音順の目次やペンや消しゴムや鍵がDBMSに相当します。
つまり、DBMSは利用者の目的に応じて柔軟にデータベースを用意できるようなソフトウェアです。
手帳の例では、必要なだけ罫線を引いて見出しを付ければ手帳版データベースの出来上がりです。
日常で皆さんがよく利用するデータベースシステムについて、例をあげて見ましょう。
例)
大学関連: 図書館書籍管理 ・ 履修システム ・ 出席管理
Webサービス: メール ・ Blog ・ SNS
携帯情報端末: 電話帳 ・ 住所録
店舗: 会員情報 ・ 定期券 ・ 券売機 ・ 商品管理 ・ カラオケ曲目
ゲーム: ランキング ・ アイテム管理
データベースといえば、必ずデータモデルの話が出てきます。これは、先に述べた、
どの様に情報を表現したり、組み合わせても、DBMSがもともと備えている記録や検索などのデータの処理方法で、うまく対処できる
ということと関連します。
DBMSは、そのシステムが採用しているデータモデルによって、 リレーショナル型DBMS、階層型DBMS、ネットワーク型DBMS、などに分類されます。
あるDBMSで処理可能なようにデータを記録するということは、そのDBMSのデータモデルに沿ってデータを記録するということです。
つまりDBMSによるデータベースにデータを記録するときには様々な規則にしたがってデータを記録する必要があります。 やや不正確になりますが簡単に言うと、名前の欄には名前しか書いてはいけないとか、複数の欄にまたがってデータを書いてはいけないとか、まったく同じデータを2重登録してはいけない といったような考えてみればあたり前のルールともいえます。
本演習で使用するソフトAccessは、リレーショナルモデルに基づいたDBMSです。リレーショナルを略してRDBMSともよく表現されます。
RDMBSは、現在実際に使用されているDBMSで最も一般的なタイプのものです。
リレーショナルモデルのデータの記録の仕方は、
表による記録
といえます。 簡単に言えば以下のようなルールを持った表です。
・幾つかの見出しがあって、該当する場所(マス)にデータを1つだけ記録する
・横1行を1組の情報としてあつかう
・ある情報と別のある情報を区別できるような見出しを1つ持つ(同姓同名対策で、学籍番号をつける場合もこのルールにあっている)
・情報は縦方向にいくらでも記録できる
・情報を追加するときは、どの行に追加されても構わない(なぜならどの情報もある見出しによって区別が付くので、必要に応じて並べ替えればよいから)
・情報の記録・更新・削除が確実かつ効率的に実行できるように、データを幾つかの表に分割して登録する
見出し1 | 見出し2 | 見出し3 | ・・・ |
←1個目の情報 | |||
←2個目の情報 | |||
・ ・ |
質問: 表は何次元のデータを管理しているのか?
データベースを設計する際に、DBMSに予め備わった、高速な検索機能・堅牢なデータ記録(障害対策)・セキュリティ対策 を利用できます。 つまり何万件もの大量のデータを効率よく処理するデータベースを作成することが出来ます。
DBMSを利用せずに、1からデータベースをC言語などのプログラム言語で作成する場合、データの検索プログラムや記録プログラムなど、データベースの利用者に直接必要の無い部分まで1から設計する必要があるのに比べ大変有利です。
一般に、BasicやC言語などの汎用言語からは、外部のDBMSと連携をとるような仕組みが用意されています。 この時使用されるのがSQLと呼ばれるデータベース用言語です。
このことからもSQLについてよく理解することが、業務系アプリケーションのプログラマなどにとって必要といえますね。