川村渇真の「知性の泉」

データの信頼性向上を助けるフィールド定義


 データベースの構築で、ソフトを用いる最初の作業がフィールドの定義だ。データベースに入れる項目の数だけ、フィールドを用意する。ここで定義したフィールドの内容は、レイアウト作成やデータ入力に大きく影響するため、よく考えて設定することが求められる。フィールド定義では、次の2点を考慮して細かな設定を決める。1つは、入力するデータの信頼性を向上させることだ。定義での細かな設定を適切に選ぶことで、間違ったデータの入力が防げる。2つめは、計算フィールドのように、他のフィールドの値を参照するときの注意点だ。以上の2点に関係する工夫はいくつかあるが、ここでは比較的役立ちそうなものを集めた。どれも、データベースに登録するデータの信頼性を高めるために必要なものばかりである。


●キー項目には、重複不可と必須入力と変更禁止を設定

【内容】取引先データベースの取引先コードや、会員データベースの会員番号などは、レコードを特定するための重要な項目である。これらのフィールド定義では、次の3つのオプションを設定する。重複した値を持たせない「重複不可」や「ユニーク」、値を必ず入力させる「空欄不可」や「必須入力」、後からの変更を許さない「変更禁止」や「修正不可」だ。また、重複や空欄を避けるためには、手で入力するのはかなり大変。値を自動生成する「自動採番」がもっとも適しており、一般的にはこれも一緒に指定する。
【理由】キー項目のデータは、多くの処理に関係する重要な値である。そのため、正しい値が確保されないと、データベース全体にさまざまな悪影響を及ぼす。3つのオプションは、値を正しく保つために必要なものだ。参照や変更の処理で対象レコードを特定するためには、重複した値が存在すると困る。また、キー項目に値が入っていないと、レコードを参照することができない。さらには、途中で値が変わると、それを参照しているデータとの整合性が保てないので、変更を禁止しなければならない。これらはすべて、キー項目には、絶対に必要なオプションである。
【作成上の注意点】「自動採番」も含む4つのオプションは、ほとんどのデータベース・ソフトが持っている機能だ。ソフトごとに名称が異なるので、該当するものを選んで設定する。

●数値や日付の範囲を制限して、入力ミスを発見

【内容】数値や日付の項目では、適切な値の範囲を項目ごとに設定する。それに該当しない入力値を排除することで、入力ミスを発見できる。
【理由】できるだけ多くの入力ミスを見付けるためには、項目ごとに値の範囲を設定する方法が非常に有効だ。テキストの項目では難しいが、数値や日付の項目では簡単に使える。
【作成上の注意点】十分に検討すると、多くの項目で値の範囲を設定できる。現実に存在する値は、ある範囲内に収まることが多いからだ。もちろん、正常なデータが入力できなくて困らないように、ある程度の余裕を持って設定することも重要。各項目での世界一や最高の値を調べるには、ギネスブックや各種統計資料が役立つ。
【例:数値のチェック内容】数値の項目では、現実の値が限られた範囲の中に収まることが多いので、それを求めて範囲を設定する。個数や回数なら、ゼロ以上の値しかありえない。最大値側も、内容によってある程度は決まる。身長なら、どんなに背が高い人でも300cmを越えることはないし、最低の値でも30cm以上はある。この例ように最小値と最大値が10倍だと、入力した数値が1桁多いか1桁少ないかの形で間違ったとき、エラーとして検出できる。数値の範囲設定では、最大値と最小値のどちらか片方だけでも設定できないか、現実の値を十分に検討したい。
【例:日付のチェック内容】日付では、ほとんどの項目が値の範囲を設定できる。たとえば誕生日なら、明日以降はありえないので、最大値を今日(登録日)に指定する。最小値は、今日の日付から最長年齢を減算した値が考えられる。最長年齢を多めの130歳とすれば、1996年から130年を引いた1866年となり、その前の年の年末である1865年の12月31日に設定する。別の例では、納入予定日の項目なら、最小値が明日の日付で、最大値としては半年後が考えられる。最大の予定日を何日後まで許すかは、項目の内容に依存するが、十分な余裕を持たせる。以上のように、多くの日付項目で範囲を指定できる。
【ソフトへの要望】ほとんどのソフトでは、フィールド定義の範囲指定で、少し凝った値を設定するのが難しい。とくに日付では、「今日」や「明日」、「今日」から「1カ月後」や「半年前」といった値を、簡単に選べる機能がほしい。それがあれば、範囲指定をもっと手軽に使えるだろう。関数を用いるような古い発想の設定方法は、本当に凝った条件でなら仕方がないが、一般的な条件ではできるだけ避けるべきだ。

●数値の項目では、適切なタイプを選んで入力ミスを発見

【内容】数値フィールドのタイプが整数型と実数型に分かれているソフトの場合、項目の内容に合ったほうを選ぶ。個数や件数のように整数の値に限られる項目を整数型に、それ以外を実数型に設定する。
【理由】整数型に設定したフィールドでは、小数部を持つ数値を登録できない。実数の値しかありえない項目に設定することで、入力ミスの発見に役立つ。値の範囲を限定する方法と併用するれば、より多くのエラーを見付けられる。
【作成上の注意点】整数型の指定で注意すべき点は、扱える値の範囲だ。内部のビット数によって表現できる範囲が決まり、それを超えた値は入力できない。整数型を選ぶ前に、入力できる値の範囲を調べることが重要だ。

●値チェックのエラー表示では、理由と範囲を明示

【内容】入力値のチェックでエラーと判断した場合、エラーメッセージを表示する。このメッセージには、エラーの内容、発生した項目、適切な値、対処方法を含める。適切な値として、値の型と範囲を示し、必要なら例も入れる。文章で書くと長くなって見づらいので、箇条書きが適している。
【理由】入力した値のチェックを充実させたとしても、エラー発生時に適切なメッセージを出さなければ、ユーザーが適切に処理できず、混乱の大きな原因となる。初心者にも分かりやすいように、かなり親切なメッセージにすべきだ。必要な事項は決まっているので、それらを箇条書きにまとめる。その中では、「正しい値を入力し直す」といった“当たり前のこと”も含める。エラーメッセージは“徹底的に分かりやすく”をモットーに作るべきである。
【作成上の注意点】許される値の範囲は、エラー発生時にだけ表示するより、入力する前に分かったほうがよい。そのため、入力用レイアウト上に値の範囲を明示する。そのうえで、エラー発生時に出すメッセージでも、値の範囲を伝える。これだけやれば、使い慣れてない人が迷う可能性を低くできる。
【例:入力値が適切でないとき】必要な事項を箇条書きにまとめて、読みやすく作る。

エラーが発生しました。
 エラーの内容 :入力した値が適切でない
 発生した項目 :誕生日
 適切な値の型 :日付データ(例:95.3.26)
 適切な値の範囲:1849.12.31<値≦今日
 対処方法   :正しい値を入力し直す

●計算に用いる元データが、空の場合も考慮

【内容】計算して結果を求める項目では、計算に用いる項目の値が空の場合も考慮する。元データが空で正常に計算できないときは、結果フィールドに何も表示しないのが無難な方法だ。元データの状態を調べ、適切な値のときだけ計算し、そうでないときは何も表示しないように、計算式を作る。以上のようなことが面倒なら、他の項目で計算に使われる項目には、必須入力の属性を設定して、空の状態の発生を防止する。ただし、絶対に入力できる項目でしか設定できないので、使えないケースもある。計算式と必須入力の両方を、上手に使い分けるしかないだろう。
【理由】計算の元データが空の場合にエラーを表示するソフトでは、意味不明なアルファベット(実はエラーの種類を示している文字列)をフィールドに表示することが多い。初心者がこれを見たら、何かのトラブルが発生したと思うかも知れない。余分な混乱を避ける意味でも、変な表示をさせない工夫が必要だ。
【作成上の注意点】元の値が空の場合の処理は、データベース・ソフトごとに異なる。マニュアルに明記されていないことがほとんどのため、どんな結果になるかは、実際に試して調べるしかない。表示に問題のあるソフトでは、空やデータ型を調べる関数などを用いて、正常な値のときだけ計算するように、計算フィールドの計算式を作り直す。
【例:ファイルメーカーPro Ver. 2.1】本ソフトの場合は、元データが空で処理ができないケースでは、計算フィールドの結果表示も空白になる。これだと問題はないので、特別な処理を用意する必要はない。
【例:クラリスワークス Ver. 2.0】このソフトのデータベース機能では、参照する項目の値を調べる関数がある。空かどうかを調べるISBLANK関数、数値かどうかを調べるISNUMBER関数や、テキストかどうかを調べるISTEXT関数などだ。日付や時刻は内部で数値として扱われるので、ISNUMBER関数を用いる。これを条件分岐のIF関数と組合せ、計算フィールドの式を作成する。たとえば、身長から標準体重を求める式は、通常なら「'身長'*'身長'*0.0022」となる。これに「身長」フィールドの値が数値かどうか調べる機能を加えると、式は「IF(ISNUMBER('身長'),'身長'*'身長'*0.0022,"")」と変わる。この例は、計算できないときには何も表示しないが、最後の「""」部分を変えれば、特定の文字列を表示できる。
【ソフトへの要望】計算できないときの表示は、計算式で対処するような方法ではなく、レイアウト上のフィールドごとに別々の設定を選べることが望ましい。とりあえずは、次の3種類から選択できると良いだろう。専門家が見て分かるようなエラー表示(アルファベットや記号で)、何も表示しない、ユーザーが指定した文字列を表示、の3つだ。これらの使い分けだが、エラー記号は、専門家が使用するメンテナンス用のレイアウトだけに設定する。残りの2つは、ユーザーが使用するレイアウト全般で用いる。計算結果が正常に表示しないときは、メンテナンス用のレイアウトに切り替えて、エラー記号を調べればよい。

(1996年9月24日)


下の飾り