CodeZine(コードジン)

特集ページ一覧

SQL ServerでNull値に対処する

Null値を適切に処理するための一貫した方法とは

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/09/21 14:00

 多くの開発者は、「Null」という用語をよく理解しているにもかかわらず、データベースでNull値をうまく扱えずにいます。データの有効性を保全するうえで、Null値に適切に対処することは重要です。Null値を適切に処理するための鍵は、一貫した方法で対処することにあります。ここでは、そのために役立ついくつかの手法を紹介します。

目次

はじめに

 多くの開発者は、「Null」という用語をよく理解しているにもかかわらず、データベースでNull値をうまく扱えずにいます。データの有効性を保全するうえで、Null値に適切に対処することは重要です。少なくとも、Null値の処理を誤ると、データの誤りが生じます。この不良なデータを見逃すと、筋の通らないビジネス上の判断を下すことになりかねません。

 Nullの概念は、よく誤って解釈されています。専門家によっては、Nullを無または空の値と表現することがあります。言い換えると、そのエンティティに何も値が入力されていないということです。また、Null値を不明な値と表現する専門家もいます。値が存在するかしないかは、今のところ不明だということです。ANSI規格に照らして言うと、Nullはデータ値ではなく、データがないことを示すインジケータです。

 それでは、Nullの概念を実際のデータに当てはめてみましょう。例えば、新規顧客のレコードを確認中に、電話番号が表示されているにもかかわらず、ファックス番号や携帯電話番号が表示されていなかったとします。その時点では、新規顧客が実際にファックスや携帯電話を所有していないのか、単にデータを入力し忘れただけなのかは分かりません。適切に処理していれば、このNullに重要な意味を持たせることができたはずですが、単に不明というだけにとどまっています。

Nullを処理する

 Nullを処理する方法に、どれが正しくてどれが誤っているという決まり事はありません。重要なのは意識と一貫性です。最初はテーブルレベルから始めます。例えば、適切に正規化されたテーブルでは、通常、電話番号型のNullは除外されます。そもそもユーザーが情報を入力するまでは、ファックス番号や携帯電話番号のレコードは作成されないからです。

 しかし、すべてのNull許容型(nullable)を正規化で除外できるとは限りません。そのような場合は、値を必須とすることによって、列レベルでNull値を除外します。さらに、デフォルト値を設定するか、長さがゼロの文字列を許可するかを決める必要があります。しかしそれでも、いくつかはNull許容型の列にぶつかることになるでしょう。ビジネスルール上この問題を避けられない場合もあれば、レガシーアプリケーションでそのような列が使われている場合もあります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:japan.internet.com翻訳記事

もっと読む

著者プロフィール

  • japan.internet.com(ジャパンインターネットコム)

    japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.com や EarthWeb.c...

  • Susan Sales Harkins(Susan Sales Harkins)

     独立コンサルタントとして活動するかたわら、データベーステクノロジに関する記事や書籍を執筆。最近の著書は『Mastering Microsoft SQL Server 2005 Express』(Mike Gunderloyと共著、Sybex刊)。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5