法政大学国際文化学部
情報システム概論
担当 重定 如彦
2003年12月15日
第10回 データベース(その1)
1. データベースとは?
データベース(Database)とは関連する大量の情報を利用者が活用(データの格納や検索など)することができるようにしたシステムのことです。データベースは、大量の情報を扱う現代の情報社会においてなくてはならないソフトウェアの一つで、企業の顧客情報、従業員の情報、スポーツの選手の成績情報など、様々な用途で使われています。
データベースを使ったシステムの身近な例をいくつか挙げてみます。みなさんがコンピュータにログインする時に、ユーザIDとパスワードを入力しますが、それらの情報はサーバ室にあるコンピュータのデータベースの中に登録されています。ユーザIDとパスワードを入力すると、入力したデータが正しいかどうかが、サーバ室のデータベースに問い合わされ、正しければログインが完了するという手順でログインの作業が行われます。他の身近な例では、学生窓口に各種証明書(在学証明書、成績証明書、履修証明書、健康診断書など)の自動発行機があります。自動発行機は学生の様々なデータが格納されたデータベースに繋がっており、証明書の発行ボタンを押すとデータベースにその学生のデータを問い合わせ、その問い合わせ結果を使って証明書を作成しています。他にも、ウェブのサーチエンジンなどがデータベースシステムの一種ということができます。
2. データベースの機能
データベースの機能は、「データの格納」と「データの検索」の2つに分類することができます。データの格納に関する機能としては以下のようなものがあります。
Ø
大量のデータを格納する
データの種類にもよりますが、ものによっては数万〜数億といった膨大な量のデータを格納する必要があるため、効率よくデータを格納する必要があります。
Ø
データを標準化して格納する
大量のデータを何の整理もせずに、ただ単にコンピュータに格納しただけでは、後でそれらのデータを有効に利用することができません。そこで、データベースでは、格納するデータの形式をまず標準化し、その形式に従って格納を行います。
例えば生徒のデータを格納するデータベースの場合、生徒の情報を「名前」、「年齢」、「性別」、「学生証番号」、「学年」、「クラス」、「住所」、「成績」などのように分類することで標準化を行い、その分類に従ってデータを格納するということを行います。このように標準化を行った上でデータを格納しておけば、データを検索する際に、「○○」という「名前」の生徒の「学生証番号」を調べるといった検索を行うことが可能になります。
Ø
一貫性の実現
データベースは一般に多くの人間が利用し、時には同時に複数の人間が利用する可能性があります。そのような場合でも、データベースの中のデータに矛盾がないように、一貫性を保つ必要があります。例えば、新幹線の窓口で指定席の切符を買う際には、窓口の係員が操作する機械は、新幹線のそれぞれの列車の座席の予約状況を格納したデータベースに繋がっています。この時にオペレータは以下のような操作を行います。
·
電車の番号を入力しその時点での空席の一覧をデータベースに問い合わせる
·
データベースから「空席の数」、「空席の特徴(禁煙席、車両番号、窓際かどうなど)」などの、空席に関する様々な情報が返ってきて画面に表示される。オペレータはその情報を客に知らせ注文を受ける
·
客の注文に答えて座席を予約し、切符を発行する
この時、全国にある無数の窓口でも同じような事が行われていますが、例えばある窓口と別の窓口で同じ座席を予約するといったことが行われるとダブルブッキングという問題が発生し、データベースの中のデータの一貫性が保てなくなってしまいます。データベースではこの例のように、同じ座席を複数の人が同時に予約するといった矛盾がおきないように、どのような操作を行っても中身のデータの一貫性を必ず保つ必要があります。例えば上記の例の場合、同時に複数の窓口に同じ空き座席の情報を表示しないなどの工夫が考えられます(注:実際の新幹線の座席予約システムはもっと高度な工夫を行っています)
Ø
機密性の実現
データベースに格納されたデータの多くは例えば顧客情報など特定の決められた人間以外には公開してはいけない機密情報が格納されています。そのようなデータを扱う場合は、決められた以外の人間に機密情報が漏れないような機能が必要となります。
一方データの検索に関する機能としては以下のようなものがあります。
Ø
一般のユーザの為のわかりやすく、使いやすいデータのアクセス機能
データベースを使ったシステムの中には、コンピュータの知識があまりない人も使うことができる必要があります。例えば銀行のATMの機械は、銀行の中にある預金者のデータ(預金者の名前、預金額、カードの番号、カードの暗証番号)などを格納したデータベースに繋がっており、ATMを操作することでお金をおろしたり、振り込んだりすることができますが、ATMはコンピュータの詳しい知識がなくても誰もが使えるように、対話形式で操作を行うことが出来るように設計されています。
Ø
プログラムによるデータのアクセス(検索)
対話形式によるデータベースのアクセスは操作が直感的でわかりやすいという利点がありますが、大量のデータのアクセスには向いていません。例えば、100万人の顧客の預金の利子を計算し、預金額を増やすというデータベースへのアクセスを対話形式で行うと大変な時間がかかってしまします。そのような場合に対処するため、データベースはデータベースにアクセスするためのプログラム言語が用意されており、それを使って効率よく、高速にデータベースにアクセスすることができるようになっています。例えば、先ほどの例の場合、アセンブラの時に学んだ「繰り返し」を使ってプログラムを記述すれば簡単に100万人の利子を計算し、データベースに反映することが可能になります。
Ø
共有利用の実現
一貫性の実現の所で説明しましたが、データベースは多くのユーザが同時に利用するという、共有利用の機能が非常に重要です。パソコンのOSのファイル管理機能は、一種のデータベースといっても差し支えないのですが、共有して利用するという目的の為には(もともとそのように使うことを目的に設計されていないので)向いていないという問題があります。データベースというシステムが開発されたきっかけの一つはこの共有利用を実現するためであると言われています。
3. 関係データベース(relational database)
データベースは、格納するデータをどのような形式(モデル)で保存するかによって様々な種類に分類することができます(詳しくは教科書の127P参照)。この授業では、その中でも現在最も一般的に使われている関係データモデルという形式を使った関係データベース(リレーショナルデータベースとも呼ぶ)について解説します。
関係データベースの最大の特徴は、データを表の形で格納することです。例えば生徒のデータを格納する場合、生徒の様々な性質を「属性」という形で分類しそれぞれの生徒のデータを以下のような表の形式で格納します。この表を関係表(relational
table)と呼びます。
名前 |
年齢 |
性別 |
学生証番号 |
学年 |
組 |
・・・ |
法政 太郎 |
19 |
男 |
F0123456 |
1 |
C |
|
市ヶ谷 次郎 |
20 |
男 |
F1234567 |
2 |
K |
|
小金井 花子 |
19 |
女 |
F2345678 |
1 |
F |
|
・・・ |
|
|
|
|
|
|
表の一番上の行の灰色の部分が生徒の性質を分類した生徒の「属性」を表しており、 表のそれぞれの行に、各生徒のそれぞれの属性に関する情報が格納されます。
関係データベースに関する主な操作には以下のものがあります。
Ø
データベースの属性を設定する
まず、最初にデータベースに格納するデータの「属性」の一覧を設定します。
Ø
データを格納する
それぞれの属性のデータを指定して新しい項目をデータベースに格納します。先ほどの例の場合、「名前:国際 学」、「年齢:21」、「性別:男」…のように、すべての属性に対して具体的なデータを指定することで新しい項目をデータベースに追加します。
Ø
データを検索する
データを検索する際には、「属性名」と「値」の2つを使って行います。例えば先ほどのデータベースで、「性別」(属性名)が「女」(値)のデータを検索する、という操作を行うことにより、「小金井 花子」に関するデータを得ることができます。
この時、「性別」が「男」を検索した場合のように、該当するデータが複数存在する場合は、見つかった全てのデータが結果として表示されます。また、検索時に複数の条件を設定することで、検索の条件を絞ったり広げたりすることも可能です。例えば、「性別」が「男」で、同時に「年齢」が「20」のデータを検索する、という操作を行った場合、「市ヶ谷 次郎」のデータを得ることができます。
Ø
データを削除する
表の中からいらなくなったデータを削除することができます。削除の場合も、検索と同様に「属性名」と「値」の2つを使って行います。例えば「学年」が「2」のデータを削除するという操作を行うと、表の中から「市ヶ谷 次郎」のデータが削除されます。
Ø
データの一部を更新する
表の中の一部分だけを更新することができます。データの更新は、表のデータのどのデータを更新するかを指定する為の「属性名」と「値」、変更する属性と変更後の値を指定するための「属性名」と「値」という4つのデータを使って行います。例えば「学生証番号」が「F0123456」のデータの「クラス」を「H」にするという操作を行うと、「法政 太郎」の「クラス」のデータがCからHに変更されます。
ここで挙げた操作は関係データベースの基本機能です。実際のデータベースでは、上記の4つのそれぞれの操作が対話形式で行えたり、もっときめ細かな操作を行うことが可能なものや、上記以外の拡張機能を持つものもあります。
4. Access
Ø
Accessと用語
それでは、実際にデータベースソフトを使って、データベースがどのようなものであるかの演習を行います。WindowsにはAccessというデータベースソフトがあるので、授業ではそれを使って演習を行います。Accessの使い方を説明する前に、いくつかAccessで使う用語について説明します。
·
テーブル
Accessでは関係表のことをテーブルと呼びます。
·
フィールド、フィールド名
属性のことをフィールド、属性の名前のことをフィールド名と呼びます。
·
レコード
テーブルに格納された一つのデータのことをレコードと呼びます。具体的にはテーブルの一つの行のデータがレコードです。
·
フォーム
テーブルのデータを入力したり、レコードの内容を表示するためのウィンドウです。Accessではフォームのレイアウトを自由に設計することが可能です。
Ø
Accessの起動方法
Accessを起動するには、「スタートメニュー」→「すべてのプログラム」→「Microsoft
Access」を選択して下さい。以下のようなウィンドウが表示されます。
Ø
新しいデータベースの作成
新しいデータベースを作成するには、メニューの「ファイル」→「新規作成」を実行します。以下のような画面が表示されるので、画面右の部分から「空のデータベース」を選択して下さい。すると、ファイルを保存するためのパネルが表示されるので、まずファイルを保存する場所をGドライブに変更して下さい。次に、ファイル名の部分にデータベースを格納する為のファイル名(ここではstudentという名前をつけて下さい)を指定し、「作成」ボタンをクリックして下さい。
Ø
データベースウィンドウ
データベースを作成すると、以下のようなデータベースウィンドウが表示されます。データベースウィンドウでは、左のオブジェクトの下にあるボタンで、データベースの様々な機能を呼び出すことができます。ウィンドウの右の部分では、左で選択したボタンの種類に応じて、その機能に関する細かな操作を行う為のボタンが表示されます。
Ø
テーブルの作成
それでは、テーブルを作成してみましょう。まずフィールド(属性)を設定する必要があります。今回は、テーブルに学生のデータを入力することにします。そして、学生の属性として「名前」、「年齢」、「性別」、「学生証番号」、「学年」、「クラス」のフィールドを設定することにします。Accessではテーブルのフィールドを設定するにはいくつかの方法がありますが、ここではデザインビューを使ってフィールドを設定する方法を説明します。
データベースウィンドウで、左のテーブルボタンをクリックし、右に表示される一覧の中から「デザインビューでテーブルを作成する」をクリックして下さい。以下のようなフィールドを設定するためのウィンドウが表示されます。
このウィンドウの「フィールド名」の下に文字を記述することで、フィールド名を設定することができます。この時、それぞれの属性には「データ型」を設定する必要があります。「データ型」とは、その属性に格納するデータの種類のことで、次のページの表のような種類があります。「データ型」を設定するには以下の手順を行って下さい。
Ø
設定したいデータ型のセルをクリックする。
Ø
セルの右に▼ボタンが表示されるのでクリックする。
Ø
データ型の一覧のメニューが表示されるので、適切なデータ型を選択する
データ型の設定は、その属性にどのような種類のデータを格納するかを考えて適切な値を設定する必要があります。
データ型 |
意味 |
テキスト型 |
文字を入力するタイプのフィールドの場合に指定する |
メモ型 |
テキスト型と同じだが入力する文字の長さが多い(約250文字 以上)の場合に指定する |
数値型 |
数字を入力するタイプのフィールドの場合に指定する |
日付/時刻型 |
日付や時刻を入力するタイプのフィールドの場合に指定する |
通貨型 |
金額を入力するタイプのフィールドの場合に指定する |
オートナンバー型 |
これを指定したフィールドは、新しいレコードが作られるたびに、自動的に数字を割り当ててくれる |
Yes/No型 |
YesまたはNoを入力するタイプのフィールドの場合に指定する |
「説明」の列は、そのフィールドの具体的な説明を書くための部分で、自由な文章を書くことができます。フィールド名だけでは意味がわかりにくい場合、ここに詳しい説明を書くとよいでしょう。なお、この部分は空白にしてもかまいません。
フィールド名とデータ型を設定すると、画面左下部分に設定した属性のさらに細かい詳細設定が表示されます。この部分に表示される内容は、データ型の種類によって異なります。例えばテキスト型の場合、「フィールドサイズ」の項目に数字を入力することで、そのフィールドに入力できる文字数の最大値を指定することが可能です。その他の項目については、必要に応じて解説します。説明しなかった項目に関しては興味のある方はヘルプなどを使って各自調べてみて下さい。また、画面右下部分には、現在操作中の項目に関するヘルプが表示されるのでそれも参考にして下さい。
それでは具体的な作業として、先ほどの図の内容を入力して下さい。
Ø
主キーフィールドの設定と保存
次に、主キーフィールドを設定します。主キーフィールドとは、フィールドの中で最も主要となるフィールドのことです。主キーフィールドを設定するには、主キーフィールドにしたいフィールドの部分をクリックし、ツールバーの鍵の形をした「主キー」ボタンをクリックして下さい。設定が行われると主キーフィールドのフィールド名の左に鍵の形をしたマークが表示されます。次に、設定したフィールドの情報を保存する必要があります。保存を行うには、メニューの「ファイル」→「上書き保存」を選択するか、ツールバーの「上書き保存」ボタンをクリックします。すると、作成したテーブルの名前を設定するパネルが表示されるので、名前をつけて「OK」ボタンをクリックして下さい。ここでは「生徒表」という名前をつけて保存して下さい。
Ø
データの入力
ここまでの作業でようやく表の枠組みが完成したので、次はデータの入力を行います。Accessではデータを入力するにはデータシートビューと呼ばれるウィンドウを使います。データシートビューを表示するには、メニューの「表示」→「データシートビュー」を選択するか、ツールバーの左にある「ビュー」ボタンをクリックして表示されるメニューの中から「データシートビュー」を選んでください。なお、同じメニューの「デザインビュー」を選択することで、フィールドを編集する画面に戻ることが可能です。
データシートビューは、一番上の行にフィールド名の一覧が表示され、その下にデータベースに格納されたデータが表の形で表示されます。テーブルを作成した直後はまだ一つもデータが格納されていないので、下図のようにフィールド名の行と、新しいデータを入力するための中身が空のレコードが表示されます。
データを入力するには、このテーブルの空のレコードの中に直接データを入力すればOKです。次の図のようにデータを入力して下さい。
なお、一番左の列のマークは、三角印が現在選択中のレコード、鉛筆マークが現在編集中のレコード、*印がテーブルにデータを追加するためのレコードを表しています。
Ø
レコードの削除
レコードを削除するには、削除したいレコードの一番左の列(三角印などが表示される列)をクリックし、メニューの「編集」→「削除」を実行します。なお、一度レコードを削除するとその内容を後から復活することはできないので注意して下さい。
Ø
項目の変更
テーブルの中の項目を変更するには、変更したい部分をクリックして、キーボードから新しいデータを入力すればOKです。
Ø
データの保存
入力したデータを保存する方法は先ほどと同様に、「上書き保存」を実行して下さい。
5. データの検索、置換、並び替え
Ø
データの検索 その1 (検索メニュー)
データを検索するにはまず、検索したいフィールド名をクリックしてその列を選択状態にして下さい。次に、メニューの「編集」→「検索」または、ツールバーの「検索」ボタンをクリックして下さい。検索条件を設定するためのパネルが表示されるので、値を設定し、「次を検索ボタン」をクリックすると、条件を満たすレコードが選択状態になります。
パネルの中の「置換」タブをクリックすることで、データの置換を行うことも可能です。この場合、置換後の文字列を設定し、検索を行いながら置換ボタンをクリックすることで、検索したデータを置換後の文字列のデータに置換することが可能です。
それでは、検索機能を使って以下の操作を行って下さい。
·
年齢が19才の生徒を検索する
·
性別が男の生徒を検索する
·
学年が1の生徒の学年を3に置換する
·
学年が3の生徒の学年を1に置換する(元に戻す)
Ø
データの検索 その2(選択フィルタ)
先ほどの方法では検索結果は、一番左の列の三角印で表示されましたが、選択フィルタを使って、検索条件に一致するレコードのみを表示することが可能です。選択フィルタを使うには、検索したいデータが格納されているセルをクリックし、メニューの「レコード」→「フィルタ」→「選択フィルタ」または、ツールバーの「選択フィルタ」ボタンをクリックして下さい。この操作を行うと、カーソルのある列のフィールドの中で、カーソルの存在するセルのデータと同じデータが格納されたレコードのみがテーブルに表示されるようになります。例えば、法政 太郎の性別のセル(中身は「男」)をクリックし、「選択フィルタ」ボタンをクリックすると、性別が「男」のレコードのみが表示されるようになります。なお、選択フィルタを実行して表示されなくなったレコードは、画面に表示されなくなっただけで、データがテーブルからなくなったわけではありません。メニューの「フィルタ」→「フィルタ/並べ替えの解除」、又はツールバーの「フィルタの解除」ボタンをクリックすることで、選択フィルタを解除し、元の表示に戻すことができます。
Ø
データの検索 その3(部分一致)
選択フィルタを実行する際に、セルの中の文字の一部分を選択することで、そのフィールドで、選択された文字が存在するレコードだけを表示することができます。このように、入力された文字の一部分だけを使って検索することを、部分一致検索、それに対し先ほど説明した文字全体を使って検索することを完全一致検索と呼びます。
例えば、法政 太郎の「郎」の文字を選択して「選択フィルタ」ボタンをクリックして下さい。名前の中に「郎」の文字を持つ、法政 太郎と市ヶ谷 次郎の2人のレコードだけが検索され、画面に表示されるようになるはずです。
Ø
データの検索 その4(絞込み)
選択フィルタを使って表示されたテーブルで、更に選択フィルタを使うことができます。先ほどのテーブルに、それぞれのフィールドが、「国際 学」「21」「男」「F3456789」「3」「K」という新しいレコードを追加し、選択フィルタを使って性別が「男」であるレコードだけを表示して下さい。「法政 太郎」と「市ヶ谷 次郎」と「国際 学」の3つのレコードが表示されるようになるはずです。この状態で、クラスが「K」の生徒を選択フィルタを使って表示して下さい。すると「性別」が「男」で、なおかつ「クラス」が「K」である「市ヶ谷 次郎」と「国際 学」の2つのレコードだけが表示されるようになります。
このように、選択フィルタを複数回適用することで、複数の条件を満たすレコードだけを絞り込んで表示することが可能になります。
Ø
データの検索 その5(フォームフィルタ)
フォームフィルタを使って検索を行うことができます。フォームフィルタを使うには、メニューの「レコード」→「フィルタ」→「フォームフィルタ」を実行するか、ツールバーの「フォームフィルタボタン」をクリックします。フォームフィルタを実行すると、テーブルからレコードの表示が消え、フォームフィルタの検索条件を設定するための、以下のような画面が表示されます。
表のセルをクリックし、表示される▼ボタンをクリックすると、そのフィールドに関する検索条件を設定するためのメニューが表示されるので、メニューから選択し、検索条件を設定して下さい。すべての検索条件の設定を完了後に、メニューの「フィルタ」→「フィルタ/並べ替えの実行」または、ツールバーの「フィルタの実行」ボタンをクリックすると、設定した全ての検索条件を満たすレコードのみが表示されるようになります。なお、検索条件をクリアするには、ツールバーの「グリッドのクリア」ボタンをクリックして下さい。また、フォームフィルタによる検索を解除するには、選択フィルタと同様に「フィルタの解除」ボタンをクリックして下さい。
フォームフィルタでは以下のような特殊な検索を行うことも可能です。
· 検索条件の部分に >= 20 のような不等式をキーボードから記述することで、フィールドの中身が20以上のレコードを検索するといった検索を行うことができる。
· 検索条件の部分に *郎 のように、半角の*記号と検索したい文字を並べて入力することで、部分一致検索を行うことが出来る。なお、入力後に自動的にセルの内容が
Like “*郎“ のように変化するが、それについては気にしなくても良い。
それではフォームフィルタを使って以下の検索を行って下さい。
· 年齢のフィールドが19のレコードを表示する
· 性別が「男」で年齢が20以上のレコードを表示する
· 名前に「郎」の文字がはいっていて、クラスがKのレコードを表示する。
Ø
データの並び替え
フィールド名をクリックし、ツールバーの「昇順で並び替え」または「降順で並べ替え」ボタンをクリックすることで、指定したフィールドのデータを使って、レコードを並び替えることができます。
各自、年齢順、学年順などで並べ替えを行って下さい。
出席のメールはta03i004@edu.i.hosei.ac.jpにお願いします。
質問のメールなどは、sigesada@edu.i.hosei.ac.jpまでお願いします。
授業の資料の最新版はhttp://www.edu.i.hosei.ac.jp/~sigesada/にあります。