電脳リアルタイム通信 ONLINE
DENNOU REALTIME TSUUSHIN ONLINE.

■データベース設計編

Q. …フィールドのデータを必ず入れさせる方法

 テーブルのフィールドを定義するさい、「値要求」と「空文字列の許可」というプロパティがありますが、どう使い分けたらよいのか分かりません(図7-1)。

A.

 値要求(Required)プロパティは、フィールドに必ず値を入れなければならないかどうかを設定するものです。
 レコードに値が入力されないとき、フィールドの値はNull(英語では "ナル" と発音しますが、日本では通常 "ヌル" と言います)という特別の値になります。これは、「値が存在しない」ということを表す特別な値です。

図7-1

 これに対し、空文字列の許可(AllowZeroLength)プロパティは、入力された値として空白の値を許すかどうかを設定します。Nullが、値が無いことという意味なのに対して、空文字列は、「値はあるが文字列の長さはゼロである」ということです。VBAで表現すると、"" です。

 両者は似ているようですが、実際にはまったく違う意味です。Nullはいろいろな意味に使われます。「値がそもそも存在しない」「値はあるが未確定である」などです。それに対して、空文字列では「空白の値が定まってい」ます。
 また、空文字列が文字列型フィールドに適用されるものであるのに対して、ヌルは型を問いません(数値型で空文字列に対応するのは0です)。

●NULL値

 数値型で考えるとNullの意味がもっとはっきりするかもしれません。
 あるフィールドの値を統計することを考えます。全レコードのフィールド値の合計をレコード数で割ったものが平均値です。この場合、フィールド値が0のレコードもレコード数に数えます。しかし、Null値のフィールドはそもそも統計の対象とならないので、このレコードはレコード数からは除外して平均を計算します。

 このように、意味は違うのですが、実用的には区別しない場合もあります。ことに、通常の論理演算にNull値が混じると真偽の判定ができなくなるため、Is Nullという特別の判定条件を加えなければいけません。そのため判定条件が複雑になるという問題があります。
 ですから、特別にNullに意味をもたせるのでない限り、Null値を許可しない設定にした方が都合がよい場合が多いのです。

 通常、フィールドに何も値を入力せずに保存すると、フィールド値はNullになります。また、文字列型フィールドで半角スペースもしくはダブル・クォート2つ("")を入力すると、空文字列となります(全角スペースではいけません)。しかし、「値要求」= "はい" に設定したときには、規定値(DefaultValue)プロパティを "" などに設定しておいた方がいいでしょう。こうしておけば、未入力時に自動的に空文字列が保存されるようになります。
 なお、必ず何らかの入力をしなくてはいけないようにしたいときには、「値要求」を "はい" にし、「空文字列の許可」を "いいえ" にします。

図7-2

 「値要求」= "はい" のときに入力なしで保存しようとすると、図7-2のようなメッセージが、「空文字列の許可」= "いいえ" のときに空文字列を入力しようとしたときには、図7-3のメッセージが、それぞれ表示されます。

図7-3
前ページ 4/4 トップページ

本サイト掲載の記事・写真等の無断での転載・複写を禁じます。
本ページは、技術評論社様のご好意により掲載許可をいただいたものです。 
技術評論社

Copyright(c)GIJYUTSU-HYORON Co., Ltd. All rights reserved.