2

私は最初のデータベース プロジェクトを行っています。

次のクエリで使用する必要がある理由を知りたいNOT NULL

...
TITLE nvarchar(60) NOT NULL
..

環境

CREATE TABLE Questions 
(
         USER_ID integer FOREIGN KEY 
                         REFERENCES User_info(USER_ID) 
                         PRIMARY KEY 
                         CHECK (USER_ID>0), 
         QUESTION_ID integer FOREIGN KEY REFERENCES Tags(QUESTION_ID) 
                             NOT NULL 
                             CHECK (USER_ID>0), 
         QUESTION_BODY nvarchar(4000) NOT NULL,
         TITLE nvarchar(60) NOT NULL,                               /////// HERE                             
         MODERATOR_REMOVAL boolean NOT NULL,
         SENT_TIME varchar(15) NOT NULL
)

VPuml のチュートリアルを見ました。彼らはすべての値を論理ダイアグラムのnullableに入れ、残りはすべてNOT NULL. これは、論理図で nullable を使用する必要があることを示唆しています。

データベースで null 以外を使用する方法はありますか?

データベースレベルではなく、たとえばJSでユーザーが価値を与えているかどうかを確認できると思います。

4

4 に答える 4

4

null 値が許可されていない場合は、ユーザー エントリ確認し、データベースに NOT NULL を含める必要があります。データベースに NOT NULL があると、フロントエンド コードの間違いに関係なく、データベースに不正なデータが入力されないようにすることができます。

ただし、データベース エラーは通常、ユーザーに表示するのは好ましくないため、データベース チェックに到達する前に null 値が送信されていないことを確認する必要があります。

于 2009-07-29T01:14:04.783 に答える
1

場合によっては、クエリは特定のフィールドに値があるかどうかに依存します。フィールドがbeであるということは、単一の空の値(この場合は空の文字列)NOT NULLに対してチェックするだけでよいことを意味します。''値を許可NULLすると、それもチェックする必要があり、クエリが複雑になる可能性があります。

于 2009-07-29T01:58:06.663 に答える
1

NOT NULL多くの場合、外部キー (つまり、他のテーブルへのリンク) に使用されます。行が他のテーブルにリンクしていることを確認します。

ほとんどの場合、テーブル内の一意の識別子を意味する主キーで使用されます。

また、必須フィールドに対する大きな制約でもあります。これにより、ユーザーがタイトルまたは質問を入力しない場合、トランザクションが失敗することが保証されます。データベースは、このような制約を非常に迅速に適用するのに優れているため、そのようなタイプのビジネス ロジックがデータベースに組み込まれていることがよくあります。ただし、アプリケーション側でデータベース エラーをチェックし、それに応じて処理する必要があることに注意してください。

とにかく、実際には常にNOT NULL値が必要な列のためのものです。そのようなケースは実際にはかなりの数ですが、うまくいけば、これを使用する理由が少し似ていると思います.

于 2009-07-29T01:13:15.473 に答える
1

NOT NULL は、列に値を配置する必要があることを意味します。データが値なしで存在することが意味をなさない場合に使用されます。

たとえば、「SO」データベースでは、user_id 列が不明なまま質問が存在しても意味がありません。質問は常にユーザーによって作成されたものでなければなりません。

于 2009-07-29T01:14:13.380 に答える