データベース - いろんな種類があるんだよ。
色んな種類(メーカー)があります。
細かいところや、目に見えないところは多少違いますが、データを保存して取り出すという点については同じです。
気にせず使いましょう。
とはいえ、「こんなんがあるよ」程度は知っててもいいかも。
MySQL - タダです。無料です。
ただ・・・機能的に不足していたりもします。
Ver5から、ストアドプロシージャ、ストアドファンクションが使えるようになったので随分使えるデータベースになっています。
私としては、VIEWが使えるようになったのが嬉しい。
管理機能が使い辛いためにMySQL Manager
を作りました。
※ PerlやPHPでよく使われます。ホスティングサーバーなどでデータベースを使う場合、ほとんどMySQLです。
私の独り言: Ver3は機能が不足しすぎで辛いです。
SQLサーバー - MicroSoft社の製品です。
管理機能などの使い勝手がいいです。
※ ○○管理システムなんて名前の小中大規模システムを作る場合に良く使われます。
私の独り言: 私の中ではNo1の使い勝手のよさです。
MSDE -
タダです。MicroSoft社の製品です。
基本的にSQLサーバーと同等です。
ただ、SQLサーバーにある管理機能がありません。(ACCESSがあれば、ACCESSで接続してテーブル作成などできます)
※ 配布も出来る為、○○管理システムなんて名前のパッケージソフトで使われます。有名どころでは、勘定奉行シリーズとか。
私の独り言: SQLサーバーと全然機能差がないんですが・・・。
オラクル - ORACLE社の製品です。
付属の管理機能が使い辛いため、SI社の製品(オラクル オブジェクトブラウザー)がよく使われます。
※ ○○管理システムなんて名前の大規模システムを作るのに使われます。
私の独り言:
oo4oを使った場合の使い勝手はいいが、昔のglueからの移行が大変過ぎた。。。
INFORMIX - 元INFORMIX社の製品です、今はIBMの製品になっているようです。
今現在のINFOMIXがどうなっているのか知らないためコメントできません。
昔は大規模なシステムに使われていました。
私の独り言: どうしても使い勝手がいいとは思えません。当時の実行環境は、UNIXに4GEファイルを置き、PC98(DOS)のTELNETで接続して実行させるというものでした。(4GE=実行ファイル)
AS400 - IBM社の製品です。
大規模なシステムに使われるそうです。
頑丈なセキュリティーが売りだそうです。
私の独り言: 頑丈なのはいいが、DB構築に融通を利かせてくれ、決まったレイアウトに決まったカラム数・・・。
PostgreSQL - 知りません。
私の独り言: 使ったことが無いので知りません。
と、色んな種類(メーカー)のデータベースがありますが、所詮はデータの詰まったファイルです。
しかし、データベースを使うとすごい利点があります。
なんと、必要なデータを簡単に取得できます。
・・・凄くないですか?
何万、何十万というレコード数のデータから、一つのデータを取り出すのに「あっ!」と言う間です。
しかも安全に、さらに複数台のパソコンから同時アクセスが可能。
・・・全然凄さがわかりませんか?
では、3万行のデータがあるテーブル(表1)があります。
(テーブル=エクセルの表のようなものです)
SEQ |
商品コード |
単価 |
数量 |
金額 |
20060316001 |
A000101 |
10000 |
10 |
100000 |
20060316002 |
A000101 |
10000 |
5 |
50000 |
20060616003 |
B000102 |
100 |
100 |
10000 |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
(表1 テーブル名:買い物データ)
このデータの商品コードが"B000102"のものを全て取り出して下さい。
と言われた場合はどうでしょうか。
ただのテキストファイルなら、ファイルをオープンして、くるくる回しながら1行1行データのチェックでしょうか。
しかしデータベースの場合は違います。
「SELECT * FROM 買い物データ WHERE
商品コード='B000102'」というSQL文をデータベースへ投げてあげると、商品コードが"B000102"のものだけを返してくれます。
(SQL文=データベースが理解できる命令)
SEQ |
商品コード |
単価 |
数量 |
金額 |
20050504002 |
B000102 |
100 |
120 |
12000 |
20060401005 |
B000102 |
100 |
5 |
500 |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
(表2 データベースから返ってくるデータ)
・・・まだ凄さが伝わりませんか?
では、「商品名も一緒に表示するので、商品名も必要です」と言われたらどうしますか?
商品データは5万レコード(表2)あります。
商品コード |
商品名 |
単価 |
色 |
サイズ |
更新日 |
A000001 |
キーボード |
1200 |
青 |
A |
20051005 |
A000002 |
スピーカー |
10000 |
緑 |
A |
20060404 |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
(表3 テーブル名: 商品マスタ)
商品名を得るのに、商品データのあるファイルをくるくる回して商品コードが"B000102"と一致するものを探しますか?
しかしデータベースの場合は違います。
「SELECT
買い物データ.* , 商品マスタ.商品名
FROM 買い物データ LEFT JOIN
商品マスタ ON 買い物データ.商品コード = 商品マスタ.商品コード
WHERE 買い物データ.商品コード =
'B000102'」
というSQL文をデータベースへ投げてあげると、商品コードが"B000102"のものだけを返してくれます。しかも、商品名まで付けて。
SEQ |
商品コード |
単価 |
数量 |
金額 |
商品名 |
20050504002 |
B000102 |
100 |
120 |
12000 |
マウスパッド |
20060401005 |
B000102 |
100 |
5 |
500 |
マウスパッド |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
(表4 データベースから返ってくるデータ)
・・・まだ駄目ですか?
では、返ってきたデータを全て、金額の小さい順に並べてください。
商品マスタを5万回ループさせて(途中でデータがある場合、5万回もループはしませんが)商品コードが"B000102"のものを探し、商品名を取得しておいて、買い物データを3万回ループさせて商品コードが"B000102"の物を探し、更に金額順に並び替えを行って・・・大変でしょう?
データベースの場合、先ほどのSQL文のお尻に「ORDER BY
買い物データ.金額」を追加するだけです。
SEQ |
商品コード |
単価 |
数量 |
金額 |
商品名 |
20060401005 |
B000102 |
100 |
5 |
500 |
マウスパッド |
20050504002 |
B000102 |
100 |
120 |
12000 |
マウスパッド |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
・・・ |
(表5 データベースから返ってくるデータ)
・・・そろそろ凄さが伝わってきましたか?
ではさらに、買い物データの商品コード"B000102"の単価が間違っていたので、全て直して下さい、105円に。
もちろん単価がわかるので金額も変更します。
あと、商品コードが"B000101"のデータは要らないので削除してください。
データベースでは、「UPDATE 買い物データ SET 単価=105,
金額=数量*105 WHERE 商品コード='B000102'」のSQL文で、変更できます。
「DELETE FROM 買い物データ WHERE
商品コード='B000101'」のSQL文で、削除できます。
このようにデータベースを使うと、簡単に早く必要なデータを取り出したり、書き換えたり、消したりできます。 (追加も簡単)
(図1 データベースとのやりとり)
※ 「データベース サーバー」と書いてあるが、マシンはパソコンで十分です。
← TOP
(c)2006 はじめたばかりのデータベース rAreSoft All Rights Reserved.