Database Lecture 5/13
Database Lecture 5/13
前回の復習
- データベースは、もとのデータが重要
- データベースの三つの仮定 ( 独立性 整合性 完全性 )
- データベースの利点と欠点
- レコード (フィールド名 フィールドの値 フィールドの型)
参考文献
- C.J. DATE, An Introduction to Database Systems, Addison Wesley
ニュースグループ
- ura.ie.classes.database に講義の資料や、問題の
答を出しているので参考にすること。
カード型データベース
一つのレコードを一枚のカードとみなすデータベース。
- 直感的にわかりやすい表示を提供する
- レポート生成などをWysiWig風に実現できる
- データの入力にも適している
したがって、どんなデータベースにもフロントエンドとして、
カード型のブラウザを用意していることが多い。
スプレッドシート
スプレッドシートは表の形にデータを表すことができるデータベースと
考えても良い。
- 直感的にわかりやすい表示を提供する
- データ全体を見るのに適している
- データの修正に適している
- マクロ言語が付属しているのが普通である
- フィールドという概念は無い
アンケートをカード型データベースにして見る
アンケートは紙に書いてあるものをコンピュータに入力してもらった。
入力データの例
From: j94050@bw.ie.u-ryukyu.ac.jp (Fukasawa_Hiroyasu)
X-Mailer: mnews [version 1.19] 1995-07/21(Fri)
1 當銘 弘樹
2 945735G
3 とうめ ひろき
4 A
5 Macintosh
6 Macintosh
7 Macintosh
8 Mac OS
9 Mac OS
10 Mac OS
11 Yes
12 Yes
13 クラリスワークス
14 YES
15 Emacs
- カード型データベースに直接は入力しない
- 理由1 多人数で同時に入力できない
- 理由2 Macをたくさん用意するのはめんどくさい
- 理由3 データベースの構造があいまいな時には向かない
- そのかわり Unix 上でテキストの形にしてもらう
- 理由1 メールで送れるから
- 理由2 Unixマシンはたくさんある
- それを Tab Separated Value (TSV) ファイルに変換する
- 変換はPerl言語でおこなう
- TSVファイル をカード型データベースのあるMacに転送する
- TSVファイルを一旦、スプレッドシートに読み込む
- 必要な修正をおこなう
- 理由1 もとのデータそのものに問題がある
- 理由2 データの入力時の間違いがある
- 理由3 データ全体を見直してからフィールドを決めた方が良い
- スプレッドシートから書き出す
- カード型データベースのフィールドの定義をおこなう
- スプレッドシートのデータを読み込む
変換の詳細
- TSVファイルの例
高良 義伸^I945725K^Iたから よしのぶ^IA^IMac^IMac^IMac^IMacOS^IMacOS^IMacOS^IYes^INo^I^IYes^I^I^I^I^I^I
^I がタブを表す。
- 変換するPerlプログラムの例
$/ = "\n\n";
while(< > ) {
@a = split(/\n/);
%r = ();
foreach ( @a ) {
if(/^\s*(\d+)\s+(.*)$/) {
$r{$1} = $2;
}
}
next if (length %r < 2);
for($i=1;$i < 20;$i++) {
if(defined($r{$i})) {
print $r{$i};
}
print "\t";
}
print "\r\n";
}
バッチ型のデータベース入出力
- データベースのバックアップ
- とりあえず読める形にする
- データ交換
- データ入力アプリケーションがまだない場合
しかし、これが可能なうちは実はデータベースにする必要は
ない...
バッチ型で良く使われるデータ型
- TSV タブでフィールドを区切る、改行でレコードを区切る
テキスト形式ともいう。
- CSV カンマでフィールドを区切る、改行でレコードを区切る
Basic言語等でよく用いられた。
- SYLK スプレッドシートで良く用いられる形式。
Symbolic Link Format
- DIF, BIFF,DBF ... Data Interchange Fromat, Binary Interchange
File Format... 1-2-3 や Excel などのスプレッド
シート固有のデータフォーマット
SYLKファイルの例
P;P0.00
P;Phh\:mm\:ss\ AM/PM
P;FGeneva;M200;SBI
B;Y2;X3
O;L
F;DG2G10
F;W1 256 10
F;M340;R1
F;M340;R2
F;FF2G;SM5;Y1;X1
C;K"河野"
F;FF2G;SM5;X2
C;K"田中"
F;FF2G;SM5;X3
C;K"高良"
F;FF2G;SM5;Y2;X1
C;K100
F;FF2G;SM5;X2
C;K200
F;FF2G;SM5;X3
C;K300
E
しかし、結局、役に立つのはTSVだったりする。
カード型データベースで何ができる?
- 質問を考えて見よう
- その質問を実現できるか?
- 何故、できないのか?
- 印刷ができる
- どんな印刷ができるのか?
カード型の特徴は、見えているものがデータベースそのものであり、
それが検索され、印刷されるところにある。
カード型データベースでできないこと
- 見えているものだけで十分か?
- 全部読み込み、全部書き出す
- どんな検索でもできるのか?
- 一人だけ使う?
- 似たようなデータを何回も集める場合
Pros and cons of スプレッドシート
- カード型データベース同様、すべてが見えている
- 値と式の二重性
- 計算は止まるのか?
統合型アプリケーション
- データベースからスプレッドシートをアクセスする
- スプレッドシート からデータベースをアクセスする
こういうアドホックな方法で良いのか?
RDBへの道
- 複数のデータベースが協調して全体を構成する
- 十分一般的な範囲の検索ができ、それが必ず停止する
- レコードは値のみを持つ
- データの変更によってデータベースが壊されないようにできる
- 多数の人が同時にアクセスしても良い
Prev
Next
Kono's home page