見出し画像

画面とフィールドを結びつける

データベースというのは、今でもそうなのですが、基本的にフィールドと呼ばれる領域が組み合わさってレコードという単位で一組のデータをディスクなどに格納し、これをいろいろな方法で呼び出して使う仕組みです。

フィールドというのは、例えば何らかの番号であるとか名前であるとか数字など、入れられるものに制限があるのが普通で、文字列の場合は最大の長さを決める必要があります。そして、このフィールドをまとめてレコードという単位でディスクと読み書きするのですが、必ずしも先頭から読み書きするのではなく、途中からでも構わないようにするために、ディスク上の領域を管理するセクタのサイズに合わせたレコードにするのが一般的でした。

ランダムファイルでデータベース

ひとつのレコードがセクタよりも充分に小さい時は、一つのセクタに複数のレコードを格納してディスクの利用効率を上げるなんていう仕組みもありましたが、いずれのせよ、データを格納するサイズを決め打ちにする必要があったのです。

格納するデータがあれば、当然のようにこれを読み書きするソフトが必要になるのですが、一般的にはフィールドの種類を解釈して、これを画面に表示して編集する作業になります。今のWEBフォームともソックリなんですが、決め打ちにしたデータの形式通りの入力領域を画面に出して、必要に応じてこれを変更し、これをコンピュータが処理するデータ形式に変換して再びディスクなどに格納するのです。

この時代はリレーショナルなんていう素敵な機能はなくて、こういうランダムファイルを自分でソフトを書いて一生懸命検索したり集計したりしてデータベースというソフトウエアを作り上げていました。検索性を上げるために自力でインデックスファイルを作るようにすることもありましたが、インデックス自身ランダムファイルに過ぎません。トランザクションなんていう仕組みもないので、操作途中で異常終了した時に困らないように、更新するときには新しいレコードを作成してから、インデックスを更新し、その後に古いレコードを削除、もしくは削除済みのマークを付けるなんて言う手順を一生懸命書いていたわけです。

こういうプログラムを書く必要がとても多かったために、大抵の処理系にはデータベースとして使うランダムファイルを扱うためのライブラリであったり、拡張機能が実装されていました。画面上に表示されるデータとファイルの中身が直結しているので、わかりやすく使いやすくはあったのですが、今のWEBフレームワークで用意されているような機能以上に、過剰なまでのチェック機能が作れるようになっていて、使いこなすのもなかなか大変でした。

大体は画面単位でひとつのレコードを表示して、そこにはフィールド名が表示され値が編集できるようになっていました。画面上でフィールド定義をすれば、自動的にランダムファイルの管理ができるという仕組みです。カードのようなイメージですね。データとファイルの内容が直結しているので、扱いやすくはあったのですが、複数のフィールドを組み合わせて使うような小細工には向きませんでした。

文字列を入力するフィールドには、その長さだけではなく、空白の扱いなども含めた文字種チェックであるとか(半角カタカナ禁止とか)、長さが足りない時に左に寄せるとか余分な領域を空白で埋めるとかがありました。改行の扱いも鬼門で、改行をデータとして扱うためにフィールド間の移動には専用のキー(次データとか次ページ)が必要で、端末にはこれらのキーが用意されていました。今もこの目的にはTABが使われますよね。

数字に関しても、整数なのか小数であれば小数点以下何桁なのか、負の数はOKなのか、また最大値と最小値が設定できたり、数字と言っても数値ではなくて、コードとして扱って、コード表に存在するものしか有効にしないとか、こんなことを逐一コードで表現していたのです。今でもデータベースと言えば似たようなチェックをしていることが多いですよね。まあ遥か昔からこういうことをしていたんです。

こうして直接、データを編集して、このファイルを使って、検索なり集計するソフトも書いていくのです。問い合わせ言語なんて便利なものも無かったので、自力でレコードを開いてフィールドを確認していくのです。そして、検索結果を使って新しいレコードを生成してなんていう使い方が多かった気がします。

オフコンのBASICとかには、この手の拡張が入っていて、レコードを定義すれば編集するための画面を作ってくれて、ディスクを読み書きするだけで決まった変数に格納してくれて処理が書けるようになっていた覚えがあります。このあたりはパソコンには無くてちょっと羨ましかったですね。まあ自分でコードを書けばいいだけなんですけどね。

この手の処理って、今でもWEBアプリでよくあるのですが、SQLが使えてファイル側の扱いはとても高度な処理が簡単に書けるのですが、画面の方は直接データベースのフィールドとは一致していなくて、バリデーションをいちいち書いていくところはあまり進歩していないなぁとは痛感します。もう少し何とかならないものですかねぇ。

#データベース #ランダムファイル #レコード #フィールド #画面 #検査

この記事が気に入ったらサポートをしてみませんか?