以前、知り合いからデータベースのINT型の項目には出来ればNULLを許可しない(NOT NULL)方がいいと聞いたことがあるのですが、本当でしょうか?
現在不動産の物件データを登録するためのシステムを作成しており、
データベースの設計を行なっている最中なのですが、
例えば金額や面積など数字しか入力されない項目はINT型にしたいと考えています。
※データベースはMySQLになります。
ただし、
物件データ登録時に数字項目に何も入力されなければ「NULL」、
0以上の数値を入力されている場合にはそのままその数値をデータベースに登録したいと考えています。
※0を入力されている場合には「0」をそのまま入れたいです。
INT型の項目にはNULLを入れるのを避けた方がいい場合には、0を入れるような仕様に変更しようと考えているのですが、その辺のことについて教えて頂けると助かります。
ざっくりとした質問で申し訳ございませんが、宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
物件データ登録時に数字項目に何も入力されなければ「NULL」、0を入力されている場合には「0」
本来の意図としては正しいはずです。
Nullは本来、どの値を入れればいいのかわからない値ということなので、
数字がわからない=何も入力していない ということで、Nullを指定するのは正しいはずです。
しかし、
実際に使うときには、Nullは実に不自由なので、
Nullは使うなという話がでてきます。
## 私なら、入力区分 0=未入力、1=入力 と 数値(未入力は0)と別々に持つかもしれません。
というのは例えば、
金額 100万以上の物件は何件?
というSQLに対して、100件と答えがでて、
金額 100万未満の物件は何件?
というSQLに対して、50件と答えがでたとします。
じゃあ、全物件は?・・・172件だったりします。
何故?⇒Nullが22件だったためです。
(Nullは0とは違い、どちらの検索条件にも含まれません。)
・・・この不自由さを回避するために数値項目に、Not Null制約をつけることが多いです。
まさによく似た現象が発生して、一度お客さんから連絡を受けたことがありました。
お客さんが数値項目に敢えて「0」を入れられる可能性もあるのでNULLを入れるかどうか迷っていたのですが、
確かに、
>> 入力区分 0=未入力、1=入力
という項目を持たせると数値項目未入力の場合でも、データベースにはNULLではなく0を入れられますね。
非常に参考になりました。
ありがとうございます。
No.4
- 回答日時:
int型項目に限らず、極力nullは避けた方が無難です。
nullを含んだテーブルの検索は、しばしば直感に反した動作をします。
詳しくは下記のページを見て下さい。
http://codezine.jp/article/detail/532?p=1
http://www.geocities.jp/mickindex/database/db_ge …
参考URLのページを見てみると、やはりNULLは極力避けた方が良さそうですね。
確かにプログラムを組んでいる時に、NULLが悪さをして困ったこともありました。
ありがとうございます。
No.2
- 回答日時:
NULLはその項目のデータが存在しない意味ですので、SQLの結果が思わぬ誤動作やプログラム上のミス(たとえば空白とNULLを表示上どう区別するのか)の原因になる場合があります、どうしてもNULLが必要な場合を除きどの型においてもNOT NULLを宣言し、使わない事をお勧めします。
尚、INTには最大値と最小値があるので、INTを使用する場合は値が範囲に確実に入るかを確認する必要があります。確かにユーザー側にデータを表示させる時に、空白とNULLをどのように区別すればいいのか、悩むことが起こりそうですね。
ありがとうございます。
No.1
- 回答日時:
データ効率化のためにはNOT NULLにした方がいいですね。
たとえば件数カウントや平均をとったりする際は
NULLを許可した方がすっきりしたSQLがかける場合もあります。
個人的には特殊なケースを除きテーブル作成時はNOT NULLにしています。
確かにNULLが入っていることを意識してSQLを書くと複雑になる場合もあるので、NOT NULLの方がいいですね。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
つい集めてしまうものはなんですか?
人間誰もは1つ「やたらこればかり集めてしまう」というものがあるもの。 あなたにとって、つい集めてしまうものはなんですか?
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
あなたの習慣について教えてください!!
あなたが習慣だと思って実践しているものを共有してくださいませんか? 筋肉トレーニングでも朝シャワーでも、あなたが習慣だなと思えば何でも構いません
-
int型フィールドにnullを登録できない・・・
MySQL
-
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
-
4
アクセスで数値型のフィールドにNullをいれたい
その他(データベース)
-
5
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
6
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
7
Null値が入れられない
MySQL
-
8
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
9
postgreSQLのint型は桁数指定ができない??
PostgreSQL
-
10
CSVファイルの中で、「 , 」カンマを使いたい
その他(コンピューター・テクノロジー)
-
11
SQLで特定の項目の重複のみを排除した全項目を取得する方法
その他(プログラミング・Web制作)
-
12
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
13
select insertで複数テーブルから値を取得したい
Oracle
-
14
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
15
型 varchar から型 numeric への変換エラー。
その他(データベース)
-
16
DBの定義のサイズを大きくし過ぎると問題ある?
その他(データベース)
-
17
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
18
JSPでリンクを利用してパラメータを次画面に渡す方法について。
Java
-
19
拡張子はなぜ、大文字と小文字のものがある?
Windows Vista・XP
-
20
SQLServerでNULLを挿入したいです
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
Excelで入力したデータを自動的...
-
フォームで入力しても反映されない
-
アクセスで数値型のフィールド...
-
ACCESS 時間の入力方法
-
入力規則違反-任意のエラーメ...
-
アクセスのテキストボックスの...
-
Accessで小数の入力について
-
Access2007 textboxに入力でき...
-
Accessで所要時間の足し算
-
日付のテキストボックスに(例...
-
psqlの日本語入力
-
OUTLOOK予定表の表示項目追加は...
-
コンボボックスの自動更新について
-
YahooのIDがロックされてしまい...
-
クエリで出来た表にチェックボ...
-
ACCESSのタブオーダー
-
レコードを保存するコード ア...
-
Word縦書きで左から右への行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データベースのINT型項目にNULL...
-
passwordが入れられません・・・・
-
アクセスで数値型のフィールド...
-
フォームで入力しても反映されない
-
Excelで入力したデータを自動的...
-
アクセスのテキストボックスの...
-
このオブジェクトに値を代入す...
-
Access(office)のマクロの「値...
-
Access2007 textboxに入力でき...
-
MA ACCESSデータベースに詳しい...
-
Accessで小数の入力について
-
日付のテキストボックスに(例...
-
ACCESS 時間の入力方法
-
入力規則違反-任意のエラーメ...
-
ユーザーフォームで数字にカン...
-
Accessで所要時間の足し算
-
アクセス2003 入力規則
-
Microsoft Accessのフォームで...
-
フォームテキスト内文字の縦位...
-
EXCELのユーザーフォームで入力...
おすすめ情報