1

私は SQL Server データベースを使用しており、不動産 Web サイトで作業しています。

という列を持つプロパティをリストした表がありますSIZE

ユーザーはオプションSIZEでプロパティの値を入力できます (整数と正の数のみ)。

現時点ではこれを使用しています

int   Size   NULL

私が知りたいのですが:

  • この場合のNULL値が理にかなっている場合(NULLの使用を思いとどまらせる記事を読んだので、そうであればいいのですが)
  • size の値は 0 から 100000 である必要があります。データ型Intが適切かどうかを知りたいです。

この質問が不適切だと思われる場合は、コメントしてください。サイトから削除します。

ありがとう

4

3 に答える 3

2

NULLNULLは「正しい」アプローチですが、。以外の述語とは一致しないため、クエリの記述が面倒になる可能性がありIS NULLます。たとえば、xとyの間のサイズのすべての行を検索するクエリが必要であるが、サイズのない行も表示するとします。クエリは次のようになります。

select * from some_table
where size between x and y or size is null;

これにより、不必要な複雑さが生じる可能性があり、ヌルサイズをレンダリングする方法にも対処する必要があります。

より良いオプションIMHOは、列を作成しNOT NULL、ユーザーにサイズの入力を強制することです。これにより、アプリケーションとクエリコードの両方が簡素化されます。

顧客が不動産を所有していて、その大きさを知らないと私に言わないでください。

于 2012-06-20T06:30:36.750 に答える
2

この場合のNULL値が理にかなっている場合(NULLの使用を思いとどまらせる記事を読んだので、そうであればいいのですが)

NULL非値を表すものが必要な場合は問題ありません。異なるデータ型ごとに異なる表現 (数値の -1 や空の文字列など) を作成するよりも優れています。あなたが読んだ記事を見て、それがどのような議論を展開していたのか (そしてどのような文脈で) を知らなければ、これ以上コメントすることはできません。

size の値は 0 から 100000 である必要があります。DataTypeintが適切かどうかを知りたいです。

これは最も適切なサイズの整数型tinyintであり、smallint最大値は 100000 よりも低くなります。徹底したい場合はCHECK、テーブルにも制約を追加します。

CREATE TABLE Properties (
    -- Various Columns
    Size int null,
    constraint CK_Properties_Sizes CHECK (Size between 0 and 100000)
    -- More columns, constraints, etc
)
于 2012-06-20T06:25:12.597 に答える
2

NULL値が入力されなかったことを具体的に意味するため、これは正しいです。これは、あなたが表現しようとしているものです。他の値には、実際には何らかの意味があります。たとえば0、このコンテキストでは意味をなさない場合でも、有効な値です。特に に設定するNULLということは、値が入力されていないことを明示的に示していることを意味します。

max int の質問については、ドキュメントから:

整数

-2^31 (-2,147,483,648) から 2^31 - 1 (2,147,483,647) までの整数 (整数) データ。

于 2012-06-20T06:21:55.810 に答える