2009-07-29 4 views
2

첫 번째 데이터베이스 프로젝트를 진행하고 있습니다. 당신은 내가 VPuml의 튜토리얼을 지켜데이터베이스에서 빈 제목을 어떻게 확인해야합니까?

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 
) 

다음 쿼리

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

상황에서 NOT NULL을 사용해야하는 이유

나는 을 알고 싶습니다. 논리적 다이어그램에있는 모든 값은 null 가능하고 나머지는 모두 NOT NULL입니다. 이것은 nullable이 논리적 다이어그램과 함께 사용되어야 함을 의미합니다.

데이터베이스에 null이 아닌 다른 용도가 있습니까?

예를 들어, 데이터베이스 수준이 아니라 사용자가 JS에 의해 가치를 부여했는지 확인할 수 있다고 생각합니다.

답변

4

null 값을 사용할 수없는 경우 사용자 입력 이 데이터베이스에 NULL이 아닌지 확인해야합니다. 데이터베이스에 NULL이 없으면 프론트 엔드 코드의 실수에 관계없이 데이터베이스에 불량 데이터가 입력되지 않았 음을 절대적으로 확신 할 수 있습니다.

그러나 데이터베이스 오류는 일반적으로 사용자에게 표시하기에 좋지 않으므로 null 값이 데이터베이스 검사를 받기 전에 제출되지 않았는지 확인해야합니다.

+0

null 값이 사용자가 데이터베이스에 제출하지 않았 음을 어떻게 확인할 수 있습니까? --- 나는 모든 사용자가 그것을 허용하지 않기 때문에 JS에만 의지 할 수 없다. –

+1

사용중인 서버 측 언어를 사용하십시오. 데이터베이스에 삽입 할 코드를 실행하기 전에 데이터베이스 매개 변수가 올바른지 확인하십시오. –

1

NOT NULL은 외래 키 (예 : 다른 테이블에 대한 링크)에 자주 사용됩니다. 행이 다른 테이블에 링크되도록합니다.

거의 항상 기본 키에서 사용되며 테이블의 고유 식별자를 의미합니다.

필수 입력란에도 큰 제약이 있습니다. 이렇게하면 사용자가 제목이나 질문을 입력하지 않으면 트랜잭션이 실패합니다. 데이터베이스는 이와 같이 매우 신속하게 제약 조건을 적용하는 데 효과적이므로 데이터베이스에 입력되는 많은 유형의 비즈니스 로직을 볼 수 있습니다. 그러나 응용 프로그램 쪽에서 데이터베이스 오류를 확인하고 적절하게 처리하려고 할 것입니다.

어쨌든, NOT NULL이의 경우는 실제로 꽤 있습니다. 정말 당신이 항상이에 값을하고자하는 열의, 그러나 희망이 당신에게 우리가 그것을 사용하는 이유의 일부 외관을 제공합니다.

+0

* 거의 항상 기본 키에 사용되므로 테이블의 고유 식별자를 의미합니다. * - W3Schools에서 기본 키가 항상 'NOT NULL'임을 읽습니다.나는 그들의 SQL 튜토리얼을 이해하여 NOT NULL 선언을 기본 키 컬럼에 넣을 수 없다. 그렇지 않으면'NOT NULL'을 두 번 선언 할 것입니다. --- 그러나 당신의 대답은 내가이 튜토리얼을 잘못 이해했음을 암시합니다. ** 기본 키 - 선언에 암시 적으로 NOT NULL 선언이 포함되어 있습니까? ** –

+1

예. 테이블에 기본 키가있는 경우 행에 기본 키가 정의되어 있어야합니다. –

1

NULL은 값이 열에 있어야 함을 의미합니다. 값없이 데이터가 존재하지 않는다면 사용됩니다.

예를 들어 "SO"데이터베이스에서 user_id 열을 알지 못하면 질문이 존재하지 않습니다. 질문은 항상 사용자가 작성해야합니다.

1

때때로 쿼리는 특정 필드에 값이 있는지 여부에 따라 달라집니다. 필드가 NOT NULL이면 단일 빈 값 (이 경우 '' (빈 문자열)) 만 점검하면됩니다. NULL 값을 허용한다는 것은 쿼리를 복잡하게 할 수있는 값을 확인해야 할 수도 있음을 의미합니다.

관련 문제