• データベースとは?

データベースとは、コンピュータ上にて情報を格納して手早く適切に情報を検索、編集する
仕組みを持つシステム装置をいう。

データベースというもの自体は昔から存在していて別段、驚くものではない。
例えば、図書館における図書と蔵書検索などは、コンピュータが存在しない時代では、紙の
カードによって管理されている。
貸し出しされた書籍の管理も、紙媒体のカードで行っていた。

具体的には、書籍検索の場合、蔵書目録はすべてカード化されていて、索引のインデクスは
適切にソートされ、昇順に並んでいる。
利用者は、カードが保存されたデッキからカードを探すため、題名や著者名から読みたい本を
検索する。
カードには棚のナンバーが記載されていて、利用者は検索後、読みたい本のカード内容から、
一意なユニークなIDナンバーを読み取り、ID札が置かれた本棚を検索して棚から目的の本を見つける。
棚には一意のIDが割り当てられていて、蔵書だけでなく棚ID番号で本の置かれた棚の位置が分かる。
あとは本の題名とインデクス番号からほんを見つけるだけだ。

貸出時は、事務員が利用者のカードを受け取って保存し、さらに書籍に一意に備えられている
書籍カードを取り出し、貸し出した本に含まれるカードと、利用者を結びつけ事務員が一つの
貸出中情報として二つのカードを一緒に保存する。

これら一連の作業によって、図書の貸出管理が可能となる。
実際、これらの管理方法はコンピュータ化される以前には一般的に行われていた方法だ。

紙とカードを使って、コンピュータを利用しない基本的な管理方法は、今でもデータベース等の
基礎的な概念として、とても重要だ。
なぜなら、数値計算をする場合に数学の概念が必要な様に、業務の本質的な作業内容を知らないと、
何をデータベース化するのか明確に判らないからだ。
これはトランプで遊んだ事がなければ、PCやゲーム機上でカードゲームを作ることは出来ないのと
全く同じで、トランプゲームの面白さがわからないとソフトウエアを作れない。

古い時代の管理方法は、現在でも重要だ。なぜならそれは電子化されていても、いなくとも
それは業務の本質であり、業務の本質を知らないと、何を電子化すると効率的なのか、何を
電子化してはならないのか、どの作業が電子化可能で、何を電子化するべきなのか、が
分からないからだ。
本質を知らないなら、幾らUMLのコラボレーション図を書いても意味が無い。コンピュータの
知識だけでも意味が無い。
今現在、全ての業務は既に電子化されてしまっているので、業務の本質的な内容が見えづらく
なっている。見えづらくなっている分、業務の本質的な内容の理解がより重要となっている。




データベースにはいくつか種類があって、そのうちの一つはカード型データベースと
呼ばれるものがある。これは仮想的なカードを単位としてデータを管理する手法で、現実の
カードを取り扱う事と概念的に等しい。図書管理に利用した方法がまさにこれだ。

もう一つは単純なインデックスと内容の対になった表、テーブルと呼ばれる表形式のマスに
データを保存し、それらを行単位で管理する方法だ。
良く知られているExcelなどが該当するが、この単純な表形式のデータベースをDBMS等と呼ぶ。

そして、この単純な表形式のデータを複数関連付け、幾つもの表の間のデータを結びつけ
データを管理する機能を持つデータベースを、Relationの文字を加えてRDBMSと呼ぶ。
一般的にデータベースという場合RDBMSを指すが、データベースの区別は大体この三つに分類される。

現在では、多くのデータベースはRDBMSを利用している事が殆どだが、実際には用途によっては
複数のデータ表を結びつけ、リレーションを多様するような大げさなテーブルよりも、単純な
値のみの表形式のテーブルで済んでしまう事も多い。
大人の事情で、わざわざ大規模なデータベースが導入されている事例もある。

データベースと言う場合、SQLを思い浮かべるが、SQLだけがデータベースの全てではない。
例えば、ExcelやAccess等は直接SQLを使う訳ではないがデータベースであるし、Machintosh
等で有名となったFileMaker等は、元はカード型データベースである。SQLでないデータベースも
この世には存在し、ソフトウエアも非常にバリエーションと幅がある。

同じ事がデータベース言語レベルにも言え、SQL等のデータドメイン言語を介してデータを扱う
以外にも、BerkleyDBなどのようにDLLの外部のAPIライブラリを介して、配列を操作
するような感覚でテーブルを操作可能なデータベースも存在する。
他にはAPIを言語仕様に含むデータベース言語として発達したxBaseのようなデータベースもあるし、
VBマクロが使えるOffice製品のAccessのような種類のデータベースもある。

Web検索エンジン等では、SQLを使わずインデクスと値の二要素に基づく大規模な高速テーブル
を用いている。これはSQLがデータベースの全てではない事を示す好例であり、検索にとって
SQLでは必要以上の機能を持ち、かつ、サーバーの追加というスケールメリットが生かせず、
SQLのクエリー自体、処理速度が遅い為である(SQL言語自体,インタプリタである)。