第9回 データベース 「2.2つのモード」

9−2 2つのモード

プログラム側からデータベースにアクセスする場合、その使い方によって2種類のデータベースモードがあります。
1つは、ノンキーモード(Nonkey mode)と呼ばれるもので、もう1つがキーモード(Key mode)と言うものです。
(正確に言えば、2種類のアクセス方法があるだけで、実際に2種類のデータベースがあるわけではありません。)
先ほど、Palmのデータベースは、短冊のようなもの、と説明しましたが、これをイメージしながら、2つのモードの違いを説明しましょう。

ノンキーモードは、キーがないモード、つまり「カギ(手がかり)」となる情報を持たせない形でデータを格納する形式です。
プログラム側からわかるのは、短冊がいくつあるか、と言うこと、つまりレコード数くらいしか分かりません。
このモードで、データを書き込むためには、何番目に?ということを指定しなければなりません。
一方、データを参照する場合も同様で、何番目を?ということレコード番号を指定して参照します。

    

こんな感じです。
このモードの変わった点は、実在するレコード数より大きなレコード番号を指定すると、その時点で、そこまでの間に空のレコードが並べられてしまいまう点です。
例えば、3レコードしかなかったところに10番目のレコードを参照しようとすると、4〜10番目のレコードが自動的に作成されてしまいます。
その上、ノンキーモードでは、データを削除することができないので、常に増え続けることになります(厄介ですね)

    

このように、ちょっと変わった特徴を持ったノンキーモードですが、データの格納方法は至ってシンプルですね。

一方、キーモードは、各レコードに名前をつけて利用するモードです。
そのため、あるキーがデータベース内に存在するか否かを検索する機能を持っています。
データの参照や追加は、このキーを用いて行います。
また、ノンキーモードでは常に上書きになっていた書き込みですが、こちらのモードでは書き込みと修正と削除ができます。
そして、追加されたデータは、キーによって自動的に昇順に並び替えられます。
おお、こっちの方が便利そうですね?
確かに便利そうなモードですので、こちらを使うように推奨されているのがわかるような気がします。

    

キーモードで使うキーは、同じデータベース内に重複したキーが存在できませんので注意して下さい。 これは、キーを用いてレコードを特定しますので、当たり前と言えば当たり前ですね。
また、ノンキーモードでは直接保存できるデータは1レコードについて1つだったのですが、キーモードでは、複数のデータを入れることができます。
例えば、各レコードが「名前」と「住所」と「電話番号」と、と言うように全て同じ様式で使えばそれほど問題は出ないのですが、このレコードは、横座標と縦座標、このレコードには、現在の得点、このレコードには、ハイスコア、といったように、バラバラの項目数でも保存できます。
この点は便利と言えば便利ですが、どこに何が入っているか、何らかの形で残しておかないとわからなくなってしまいますので、注意しましょう。

これらのどちらのモードでも、基本的なデータベースファイルは共通ですので、保存されているデータは、モードの如何に関係なくアクセスすることが可能なようで、キーモードで保存したデータを、ノンキーモードで参照することができるようです。
しかし、取り出されるデータは、多少形式が異なる場合がありますし、コマンド類の違いで、その機能を十分に活かしきれませんので、基本的には、どちらかに統一して使った方が良いでしょう。


前へ     目次へ     次へ

第9回 データベース 「2.2つのモード」