Database Lecture 9/2

# Database Lecture 9/2

夏休み前の復習

データベースの設計

- 表、属性、値、レコード
関数依存性
- さまざまなデータベースのアクセス
- カード型データベース/QBE
SQL / MiniSQL
CやPerlのAPI
トランザクション

## QBE(Query By Example) と SQL

データベースへのアクセスはSQLで行うのが標準だが、ユーザが使うという
視点からは、フォームを埋めるような方法が望ましい。

このようなデータベースに対するフロントエンドがあると便利である。
このようなフォーム生成は、データベースシステムに付属している
場合もある。(Ex. SybaseのAPT, Microsoft Access) これらを4GL
(第4世代言語)と呼ぶこともあった。
しかし、これらのフォーム生成ツールを使うためには、やはり膨大な
マニュアルを見なければならないのが普通である。

でも、情報工学科を卒業するならば、これらの変換ぐらいは自分で
できるようになって欲しい。

問1
図のフォームに対するデータベースを設計し、図の例の入力に対応する
検索と変更のSQLを記述してみよ。変更にはupdateを使う事とする。

実際の処理では、SQLのエラーを避けるための工夫が必要となる。例えば、
存在しないレコードに対してupdate するとエラーになり、代わりにinsert を
使わなければならないなどである。

また、検索した結果を表示する操作を別に行わなければならない。
それは、表示するシステムに依存するが、それほど難しいわけでは
ない。

問1の変換を行うプログラムを、自分の得意なプログラミング言語
で記述してみよう。実際には、

フォームの入力をどのように受け取るか
SQLをどうやって生成するか
生成したSQLを実行するにはどうすれば良いか
検索した結果を表示するにどうすれば良いか

などの問題を一つ一つといていく必要がある。ここでは、WWWを例に
とって考えてみよう。

## WWWとデータベース

WWWブラウザは、Hyper Text と呼ばれるもので、
自動的なフォーム生成には特に適している。この例題は、
CGIによるWWWとデータベースの接続の実例になる。

例題のフォームは以下のようなHTMLにより簡単に実現できる。

< HTML > < HEAD >
< TITLE > 探索フォーム < /TITLE >
< /HEAD > < BODY>
< H1> WWWアドレスマネージャ< /H1>
< P> 1つ以上のフィールドに，探索したい値を記入してください．< /P>
< FORM METHOD=POST ACTION="/cgi-bin/address.cgi">
< HR> < PRE>
< B> 名前< /B> < INPUT TYPE="text" NAME="Name" SIZE=40>
< B> 住所< /B> < INPUT TYPE="text" NAME="Address" SIZE=40>
< B> 電話< /B> < INPUT TYPE="text" NAME="Hphone" SIZE=40>
< B> 会社< /B> < INPUT TYPE="text" NAME="Work" SIZE=40>
< B> 電話< /B> < INPUT TYPE="text" NAME="Wphone" SIZE=40>
< /PRE>
< INPUT TYPE="submit" VALUE="検索">
< HR>
< /FORM> < /BODY> < /HTML>

入力されたデータの処理は、/cgi-bin/address.cgi が行うことになる。
実際には、Perlと、CGI用のライブラリを併用することが多い。

問2
入力がrecordという配列に文字列として格納されているとして、SQLを生成
する プログラムを自分の得意なプログラム言語で書いてみよ。

もちろん、出力はHTMLで出力してやれば良い。そうすれば、WWW ブラウザを
通して(もちろんCGI経由で)表示されることになる。

問3
SQLでの検索結果の一つがrecordという配列に文字列として格納さ
れているとして、HTMLを生成する プログラムを自分の得意なプロ
グラム言語で書いてみよ。

できれば、Mini SQLを使ったCGIアプリケーションを自分で作成して
みよう。

## イントラネットとデータベース

このようにデータベースシステムやオフィスアプリケーションをを、
インターネット上のサービスを使って実現することをイントラネッ
トと世の中では呼んでいるようである。

従来は、これらのフォームやデータベースは、メインフレーム上で
動作するCOBOL言語により個別にプログラムされていた。従って、
コンピュータを導入するということは、その会社向けのプログラムを
同時に開発するということを意味し、最低でも1千万円が必要とされる
ことになる。

インターネットは20年に渡る実績があり、閉鎖的なCOBOL文化と違って
自由度の高いサービスが作られてきた。閉鎖的な文化は、オープンな
文化にとって変わられる運命にある。イントラネットの動きは、それを
証明している。イントラネットの利点はその
拡張性にある。WWWブラウザさえ持っていれば、どこからでも
データがアクセスでき、httpd 経由で、さまざまなシステムとの
連係が可能になっている。

しかし、イントラネットには利点だけがあるわけではない。以下のような
点に考慮しつつシステムを構築していかなければならない。

ネットワークのトラッフィクは十分か?
どこでセキュリティを確保するか
アクセスの集中をどのように解決するのか?
パソコンとの連係は大丈夫か?

例えば、以下のようなことをしてはいけない。

巨大なデータベースを繰り返しダンプする
一つのサーバになにもかも頼る
トラフィックを考慮せずにネットワークを作る(64Kは個人には十分な
容量だが、サーバ側ではまったく足りない)
パスワードセキュリティもないようなシステムを接続する
サーバ管理者がパスワードをつけてない

問4
イントラネットの利点と欠点に付いて、ここに書いてある以外のことを
探しだして書いてみよう。

Prev
Next
Kono's home page