法政大学国際文化学部

情報システム概論

担当 重定 如彦

20091215

 

11回 データベース(その1)

1.      データベースとは?

データベース(Database)とは関連する大量の情報を利用者が活用(データの格納や検索など)することができるようにしたシステムのことです。データベースは、大量の情報を扱う現代の情報社会においてなくてはならないソフトウェアの一つで、企業の顧客情報、従業員の情報、スポーツの選手の成績情報など、様々な用途で使われています。

データベースを使ったシステムの身近な例をいくつか挙げてみます。みなさんがコンピュータにログインする時に、ユーザIDとパスワードを入力しますが、それらの情報はサーバ室にあるコンピュータのデータベースの中に登録されています。ユーザIDとパスワードを入力すると、入力したデータが正しいかどうかが、サーバ室のデータベースに問い合わされ、正しければログインが完了するという手順でログインの作業が行われます。他の身近な例では、学生窓口に各種証明書(在学証明書、成績証明書、履修証明書、健康診断書など)の自動発行機があります。自動発行機は学生の様々なデータが格納されたデータベースに繋がっており、証明書の発行ボタンを押すとデータベースにその学生のデータを問い合わせ、その問い合わせ結果を使って証明書を作成しています。他にも、ウェブのサーチエンジンなどもデータベースシステムの一種と分類することができます。

2.      データベースの機能

データベースの機能は、大きく「データの格納」と「データの検索」の2つに分類することができます。データの格納に関する機能としては以下のようなものがあります。

Ø  大量のデータを格納する

データの種類にもよりますが、ものによっては数万〜数億といった膨大な量のデータを格納する必要があるため、効率よくデータを格納する必要があります。

Ø  データを標準化して格納する

大量のデータを何の整理もせずに、ただ単にコンピュータに格納しただけでは、後でそれらのデータを有効に利用することができません。そこで、データベースでは、格納するデータの形式をまず標準化し、その形式に従って格納を行います。

例えば生徒のデータを格納するデータベースの場合、生徒の情報を「名前」、「年齢」、「性別」、「学生証番号」、「学年」、「クラス」、「住所」、「成績」などのように分類することで標準化を行い、その分類に従ってデータを格納するということを行います。このように標準化を行った上でデータを格納しておけば、データを検索する際に、「○○」という「名前」の生徒の「学生証番号」を調べるといった検索を行うことが可能になります。

Ø  一貫性の実現

データベースは一般に多くの人間が利用し、時には同時に複数の人間が利用する可能性があります。そのような場合でも、データベースの中のデータに矛盾がないように、一貫性を保つ必要があります。例えば、新幹線の窓口で指定席の切符を買う際には、窓口の係員が操作する機械は、新幹線のそれぞれの列車の座席の予約状況を格納したデータベースに繋がっています。この時にオペレータは以下のような操作を行います。

·           電車の番号を入力しその時点での空席の一覧をデータベースに問い合わせる

·           データベースから「空席の数」、「空席の特徴(禁煙席、車両番号、窓際かどうなど)」などの、空席に関する様々な情報が返ってきて画面に表示される。オペレータはその情報を客に知らせ注文を受ける

·           客の注文に答えて座席を予約し、切符を発行する

この時、全国にある無数の窓口でも同じような事が行われていますが、例えばある窓口と別の窓口で同じ座席を予約するといったことが行われるとダブルブッキングという問題が発生し、データベースの中のデータの一貫性が保てなくなってしまいます。データベースではこの例のように、同じ座席を複数の人が同時に予約するといった矛盾がおきないように、どのような操作を行っても中身のデータの一貫性を必ず保つ必要があります。例えば上記の例の場合、同時に複数の窓口に同じ空き座席の情報を表示しないなどの工夫が考えられます(注:実際の新幹線の座席予約システムはもっと高度な工夫を行っています)

Ø  機密性の実現

データベースに格納されたデータの多くは例えば顧客情報など特定の決められた人間以外には公開してはいけない機密情報が格納されています。そのようなデータを扱う場合は、決められた以外の人間に機密情報が漏れないような機能が必要となります。

一方データの検索に関する機能としては以下のようなものがあります。

Ø  一般のユーザの為のわかりやすく、使いやすいデータのアクセス機能

データベースを使ったシステムの中には、コンピュータの知識があまりない人も使うことができる必要があります。例えば銀行のATMの機械は、銀行の中にある預金者のデータ(預金者の名前、預金額、カードの番号、カードの暗証番号)などを格納したデータベースに繋がっており、ATMを操作することでお金をおろしたり、振り込んだりすることができますが、ATMはコンピュータの詳しい知識がなくても誰もが使えるように、対話形式で操作を行うことが出来るように設計されています。

Ø  プログラムによるデータのアクセス(検索)

対話形式によるデータベースのアクセスは操作が直感的でわかりやすいという利点がありますが、大量のデータのアクセスには向いていません。例えば、100万人の顧客の預金の利子を計算し、預金額を増やすというデータベースへのアクセスを対話形式で行うと大変な時間がかかってしまします。そのような場合に対処するため、データベースはデータベースにアクセスするためのプログラム言語が用意されており、それを使って効率よく、高速にデータベースにアクセスすることができるようになっています。例えば、先ほどの例の場合、アセンブラの時に学んだ「繰り返し」を使ってプログラムを記述すれば簡単に100万人の利子を計算し、データベースに反映することが可能になります。

Ø  共有利用の実現

一貫性の実現の所で説明しましたが、データベースは多くのユーザが同時に利用するという、共有利用の機能が非常に重要です。パソコンのOSのファイル管理機能は、一種のデータベースといっても差し支えないのですが、共有して利用するという目的の為には(もともとそのように使うことを目的に設計されていないので)向いていないという問題があります。データベースというシステムが開発されたきっかけの一つはこの共有利用を実現するためであると言われています。

3.      関係データベース(relational database

データベースは、格納するデータをどのような形式(モデル)で保存するかによって様々な種類に分類することができます(詳しくは教科書の127P参照)。この授業では、その中でも現在最も一般的に使われている関係データモデルという形式を使った関係データベースリレーショナルデータベースとも呼ぶ)について解説します。

関係データベースの最大の特徴は、データを表の形で格納することです。例えば生徒のデータを格納する場合、生徒の様々な性質を「属性」という形で分類しそれぞれの生徒のデータを以下のような表の形式で格納します。この表を関係表(relational table)と呼びます。

名前

年齢

性別

学生証番号

学年

・・・

法政 太郎

19

F0123456

C

 

市ヶ谷 次郎

20

F1234567

K

 

小金井 花子

19

F2345678

F

 

・・・

 

 

 

 

 

 

 

表の一番上の行の灰色の部分が生徒の性質を分類した生徒の「属性」を表しており、  表のそれぞれの行に、各生徒のそれぞれの属性に関する情報が格納されます。

関係データベースに関する主な操作には以下のものがあります。

Ø  データベースの属性を設定する

まず、最初にデータベースに格納するデータの「属性」の一覧を設定します。

Ø  データを格納する

それぞれの属性のデータを指定して新しい項目をデータベースに格納します。先ほどの例の場合、「名前:国際 学」、「年齢:21」、「性別:男」のように、すべての属性に対して具体的なデータを指定することで新しい項目をデータベースに追加します。

Ø  データを検索する

データを検索する際には、「属性名」と「値」の2つを使って行います。例えば先ほどのデータベースで、「性別」(属性名)が「女」(値)のデータを検索する、という操作を行うことにより、「小金井 花子」に関するデータを得ることができます。

この時、「性別」が「男」を検索した場合のように、該当するデータが複数存在する場合は、見つかった全てのデータが結果として表示されます。また、検索時に複数の条件を設定することで、検索の条件を絞ったり広げたりすることも可能です。例えば、「性別」が「男」で、同時に「年齢」が「20」のデータを検索する、という操作を行った場合、「市ヶ谷 次郎」のデータを得ることができます。

Ø  データを削除する

表の中からいらなくなったデータを削除することができます。削除の場合も、検索と同様に「属性名」と「値」の2つを使って行います。例えば「学年」が「2」のデータを削除するという操作を行うと、表の中から「市ヶ谷 次郎」のデータが削除されます。

Ø  データの一部を更新する

表の中の一部分だけを更新することができます。データの更新は、表のデータのどのデータを更新するかを指定する為の「属性名」と「値」、変更する属性と変更後の値を指定するための「属性名」と「値」という4つのデータを使って行います。例えば「学生証番号」が「F0123456」のデータの「クラス」を「H」にするという操作を行うと、「法政 太郎」の「クラス」のデータがCからHに変更されます。

 

ここで挙げた操作は関係データベースの基本機能です。実際のデータベースでは、上記の4つのそれぞれの操作が対話形式で行えたり、もっときめ細かな操作を行うことが可能なものや、上記以外の拡張機能を持つものもあります。

4.      Access

Ø  Accessと用語

それでは、実際にデータベースソフトを使って、データベースがどのようなものであるかの演習を行います。WindowsにはAccessというデータベースソフトがあるので、授業ではそれを使って演習を行います。Accessの使い方を説明する前に、いくつかAccessで使う用語について説明します。

·           テーブル
Access
では関係表のことをテーブルと呼びます。

·           フィールド、フィールド名
属性のことをフィールド、属性の名前のことをフィールド名と呼びます。

·           レコード
テーブルに格納された一つのデータのことをレコードと呼びます。具体的にはテーブルの一つの行のデータがレコードです。

·           フォーム
テーブルのデータを入力したり、レコードの内容を表示するためのウィンドウです。Accessではフォームのレイアウトを自由に設計することが可能です。

Ø  Accessの起動方法

Accessを起動するには、「スタートメニュー」→「すべてのプログラム」→「Microsoft Office」→「Microsoft Access 2007」を選択して下さい。以下のようなウィンドウが表示されます。

Officeボタン

 

Ø  新しいデータベースの作成

新しいデータベースを作成するには、Officeボタンをクリックして表示される「新規作成」メニューをクリックします。画面に「空のデータベースを新規作成」というボタンが表示されるのでそれをクリックして下さい。下の図のようにファイル名を入力するテキストボックスが表示されるので入力して「作成」ボタンをクリックすると新しいデータベースが作成されます。このときに、テキストボックスの右にあるフォルダマークのボタンをクリックするとデータベースを保存する場所を指定できます。各自このボタンをクリックしてGドライブを指定し、ファイル名に「student」を入力して「作成」ボタンをクリックして下さい。

 

Ø  データシートビューとテーブルの作成

データベースを作成すると次のようなデータシートビューのウィンドウが表示されます。

 

 

 

 

 

 

 

 

 

テーブルを作成するには、まずフィールド(属性)を設定する必要があります。今回は、テーブルに学生のデータを入力することにします。そして、学生の属性として「名前」、「年齢」、「性別」、「学生証番号」、「学年」、「クラス」のフィールドを設定することにします。画面の「新しいフィールドの追加」をクリックし、リボンの「フィールドと列」の中の「名前の変更」ボタンをクリックして下さい。フィールド名が編集できるようになるので、キーボードから「名前」を入力してエンターキーを押してください。

 

 

同じやり方で「年齢」、「性別」、「学生証番号」、「学年」、「クラス」のフィールドを追加して下さい。なお「ID」のフィールドは後で削除しますので残しておいてください。

 

 

次に「Office」ボタン→「上書き保存」を選択して下さい。作成したテーブルの名前を設定するパネルが表示されるので、「生徒表」という名前を入力して「OK」ボタンをクリックして下さい。これで作成したテーブルが保存されます。

Ø  デザインビュー

次に、デザインビューを使ってそれぞれのフィールドに細かい設定を行います。デザインビューは「表示」リボンの「表示」ボタンの下の▼マークをクリックして表示されるメニューから「デザインビュー」を選択します。なお、ウィンドウの右下にある小さな「デザインビュー」ボタンで表示を切り替えることもできます。

デザインビューでは以下のようなウィンドウが表示されます。

 

 

ウィンドウの右上には設定したフィールドの一覧が表示されます。この一覧の中からフィールド名の列のセルをクリックすると、クリックしたフィールドの詳細設定を右下部分で行うことができるになります。上の図では「名前」のフィールドをクリックしています。右下の部分では必要に応じて様々な設定を行うことができますが、今回の例では特に何も設定しなくてもかまいません。

テーブルを作成した後は、右上の一覧部分で各フィールドの「データ型」の列に適切な設定を行う必要があります。データ型とは、そのフィールドに入力することができるデータの種類を表します。次のページの表は主なデータ型とその説明です。

「データ型」を設定するには以下の手順を行って下さい。

Ø  設定したいデータ型のセルをクリックする。

Ø  セルの右に▼ボタンが表示されるのでクリックする。

Ø  データ型の一覧のメニューが表示されるので、適切なデータ型を選択する

データ型の設定は、その属性にどのような種類のデータを格納するかを考えて適切な値を設定する必要があります。

 

 

データ型

意味

テキスト型

文字を入力するタイプのフィールドの場合に指定する

メモ型

テキスト型と同じだが入力する文字の長さが多い(約250文字 以上)場合に指定する

数値型

数字を入力するタイプのフィールドの場合に指定する

日付/時刻型

日付や時刻を入力するタイプのフィールドの場合に指定する

通貨型

金額を入力するタイプのフィールドの場合に指定する

オートナンバー型

これを指定したフィールドは、新しいレコードが作られるたびに、自動的に異なった数字を割り当ててくれるようになる

Yes/No

YesまたはNoを入力するタイプのフィールドの場合に指定する

 

「説明」の列は、そのフィールドの具体的な説明を書くための部分で、自由な文章を書くことができます。フィールド名だけでは意味がわかりにくい場合、ここに詳しい説明を書くとよいでしょう。なお、この部分は空白にしてもかまいません。

フィールド名とデータ型の設定後は、必要に応じて画面右下部分で各フィールドの詳細設定を行います。この部分に表示される内容は、データ型の種類によって異なります。例えばテキスト型の場合、「フィールドサイズ」の項目に数字を入力することで、そのフィールドに入力できる文字数の最大値を指定することが可能です。その他の項目については、必要に応じて解説します。説明しなかった項目に関しては興味のある方はヘルプなどを使って各自調べてみて下さい。また、画面右下部分には、現在操作中の項目に関するヘルプが表示されるのでそれも参考にして下さい。

それでは具体的な作業として、右上の部分に次の図の内容を設定して下さい。

 

Ø  主キーフィールドの設定と保存

次に、主キーフィールドを設定します。主キーフィールドとは、フィールドの中で最も重要なフィールドで、テーブル内に格納されたデータを主キーフィールドによって区別することができるという性質を持ちます。具体的には、そのフィールドのデータに同じ内容が複数存在しないフィールドを主キーフィールドに設定します。生徒表の場合、「学生証番号」のように同じものが1つしか存在しないフィールドを主キーフィールドに設定します。他の「年齢」や「性別」などのフィールドは同じ内容のデータが複数存在する可能性があるので主キーフィールドとして設定することはできません。主キーフィールドを設定するには、主キーフィールドにしたいフィールドの部分をクリックし、「ツール」リボンの「主キー」ボタンをクリックして下さい。設定が行われると主キーフィールドのフィールド名の左に鍵の形をしたマークが表示されます。学生証番号の左の部分をクリックして学生証番号のフィールドを主キーフィールドに設定して下さい。

 

「成績表」の「学生証番号」のように、同じデータが複数存在することがないフィールドが存在する場合は、そのフィールドを主キーフィールドに設定すればOKですが、テーブルによってはそのようなフィールドが存在しない場合もあります。そのような場合は、一般的に「ID」というフィールドを作成し、データ型を「オートナンバー型」に設定して主キーフィールドとします(Accessではテーブルを作成すると自動的に作成されます)。
「成績表」の例では「ID」のフィールドはもう必要ないので、右上のIDの部分をクリックして「ツール」リボンの「行の削除」ボタンをクリックして削除して下さい。

最後に、設定したフィールドの情報を保存する必要があるので「Officeボタン」→「上書き保存」を選択してください。これでテーブルの設定は終了です。

Ø  データの入力

ここまでの作業でようやく表の枠組みが完成したので、次はデータの入力を行います。Accessではデータを入力するにはテーブルを作成した直後に表示されたデータシートビューと呼ばれるウィンドウを使います。データシートビューを再び表示するには、「表示」リボンの「データシートビュー」を選択します。

データの入力は、入力したいセルをクリックし、キーボードから入力します。なお、一番左に「*」が表示されている行は、その行のセルにデータを入力すると新しい行が挿入されるという意味を持ちます。下の図のようなデータを入力して下さい。

 

Ø  レコードの削除

レコードを削除するには、削除したいレコードの一番左の列(「*」などが表示される列)をクリックし、「ホーム」タブの「レコード」リボンの「削除」をクリックします。なお、一度レコードを削除するとその内容を復活することはできないので注意して下さい。

Ø  項目の変更

テーブルの中の項目を変更するには、変更したい部分をクリックして、キーボードから新しいデータを入力すればOKです。

Ø  データの保存

入力したデータを保存する方法は先ほどと同様に、「上書き保存」を実行して下さい。

5.      データの検索

Ø  データの検索 その1 (検索メニュー)

データを検索するにはまず、データシートビューで検索したいフィールド名をクリックしてその列を選択状態にして下さい。次に、「ホームタブ」の「検索」リボンの「検索」ボタンをクリックして下さい。検索条件を設定するためのパネルが表示されるので、値を設定し、「次を検索ボタン」をクリックすると、条件を満たすレコードが選択状態になります。

パネルの中の「置換」タブをクリックすることで、データの置換を行うことも可能です。この場合、置換後の文字列を設定し、検索を行いながら置換ボタンをクリックすることで、検索したデータを置換後の文字列のデータに置換することが可能です。

それでは、検索機能を使って以下の操作を行って下さい。

·           年齢が19才の生徒を検索する

·           性別が男の生徒を検索する

·           学年が1の生徒の学年を3に置換する

·           学年が3の生徒の学年を1に置換する(元に戻す)

なお、Accessには他にも様々な検索機能が用意されていますが、それらについては次回以降の授業で解説します。

6.      課題

http://baseball.yahoo.co.jp/npb/stats/batter?series=1のページをみて今年度のセ・リーグの打率上位10名のデータベースを作成せよ。ただし、テーブルを保存するファイル名はbaseballとし、テーブルのフィールドとして「選手名」、「チーム」、「打率」、「打数」、「安打」、「本塁打」、「打点」の7項目を設定すること。また、主キーフィールドを「選手名」、テーブル名を「打撃成績」とすること。
注:ただし、打率のみ設定時にデザインビューの右下の「フィールドサイズ」の項目を「単精度浮動少数点型」にする必要がある。
次に、作成したデータベースを保存し、添付ファイルでTAさんに提出すること。また、作成したデータベースに対して「チーム」のフィールドが「広島」の検索を行い、検索された選手の名前を課題のメールの本文に記述すること。
 
 
 

 

 

課題のメールは masaki.yamashita.67@gs-art.hosei.ac.jp までお願いします。

質問のメールなどは、sigesada@.hosei.ac.jpまでお願いします。

授業の資料の最新版はhttp://www.edu.i.hosei.ac.jp/~sigesada/にあります。