문제

예,다른 NULL vs 빈 문자열은 질문입니다.

나는 생각에 동의하는 NULL 을 의미한 설정하지 않으면 빈 문자열"을 의미하는 값이 비어 있".여기에 내 문제가:는 경우 열에 기본값은 NULL,도록 허용하려면 어떻게 해야 합니까 사용자를 입력하는 것은 NULL 입니다.

자의 말하는 새로운 사용자에서 만들어집 시스템입니다.이 첫 번째와 마지막 이름 필드;마지막 이름이 필요하는 동안 첫 번째 이름이 아닙니다.를 만들 때 사용자,사람이 보 2 텍스트 입력,한 첫 번째와 마지막입니다.사람이 선택하만 입력합니다.첫 번째 이름이 기술적으로 설정되지 않습니다.중 삽입 확인 길이 각각의 필드 설정에 있는 모든 필 빈 NULL 입니다.

를 찾을 때 데이터베이스에서,나는 첫 번째 이름이 설정되어 있지 않습니다.질문에 즉시 마음에 오는 것은 어쩌면 그들을 본 적이 없다는 첫 번째 이름 필드(즉,오류가 있기 때문에).하지만 이것은 경우;그들은 왼쪽으면 비어 있습니다.

그래서 제 질문은,당신은 어떻게 결정될 때 분야 NULL 로 설정되거나 빈 문자열을 받을 때 사용자 입력?어떻게 알 수 있는 사용자가 원하는 분야 할지를 설정하는 것을 검출하지 못하고 초점을 하는 경우 또는 삭제된 값 또는다?

관련 질문: 를 사용해야 하 NULL 이나 빈 문자열을 나타내는 데이터 없음에는 테이블 란?

도움이 되었습니까?

해결책

나는 거의 사용하지 않을 때 NULL 참조하여 실제 데이터입니다.사용할 경우 외국인을 위한 키,나는 말할 것 NULL 은 유효하지만,그것은 거지에 대해 유효한 사용자가 입력한 데이터이다.하나의 예외는 아마 올 매우 정기적으로 날짜를 위해 존재하지 않는,이러한 직원으로 데이터베이스와 함께"termination_date"다.는 경우에,현재의 모든 직원이 있어야에는 NULL 값에는 분야이다.으로 얻기 위해 그들을 실제로는 null 값을 입력한 값이 완료된 경우에는 null 값을 추가할 것입니 옆의 확인란에 입력 필드에는 사용자를 확인할 수 있습니다 그것은에게 해당 값은 null(또는 사용자 친화적 인 방식으로,아무도).활성화하는 경우 체크 박스를 설정할 필드 null,해당 텍스트 상자를 사용할 수 없어야 하며,경우에는 null 값은 이미 관련된 그 밖으로 시작해야 사용으로만 사용하면 사용자의 선택을 취소하 null 확인란을 선택합니다.

다른 팁

나는 패턴을 깨고 다음과 같은 이유로 항상 제로 길이의 스트링에 null을 사용할 것이라고 말할 것입니다.

  1. 공백의 영향을 미세 조명을 시작하면 다른 모든 개발자가 같은 방식으로 읽고 쓸 수 있도록 보장해야합니다.

  2. 당신은 그것을 어떻게 알파벳이합니까?

  3. 사용자가 의도적으로 비워 두는 것과 비교하여 사용자가 값을 입력했는지 명확하게 결정할 수 있습니까?

  4. 차이에 대해 어떻게 분명하게 쿼리 하시겠습니까? 쿼리 화면 사용자가 표준 입력 양식 구문을 사용하여 NULL 대 빈을 표시 할 수 있습니까?

  5. 실제로, 나는이 규칙을 사용하여 기본값, 놀랍지 않은 행동을 사용하여 데이터를 읽고 쓰는 것을 금지 한 적이 없습니다. 차이를 알아야한다면 부울 필드를 사용했습니다 (명백한 UI 장치에 쉽게 매핑하기가 더 쉽습니다). 어떤 경우에는 트리거를 사용하여 true => null 값을 시행했지만 BR 층이 조건을 효과적으로 필터링하여 호출되는 것을 보지 못했습니다.

사용자가 빈 문자열을 제공하는 경우 항상 데이터베이스 관점에서 NULL로 취급합니다. 또한 일반적으로 문자열 입력을 잘라서 선행/후행 공간을 제거한 다음 비어 있는지 확인합니다. Varchar () 유형이있는 데이터베이스에서 작은 승리이며 확인하기 만하면 검색 사례도 줄어 듭니다. name is null 대신에 name is null or name = '' 널을 ''로 변환하면서 다른 방향으로 갈 수도 있습니다. 어느 쪽이든, 방법을 선택하고 일관성을 유지하십시오.

당신이해야 할 일은 무엇을 알아내는 것입니다 행동 당신은 원합니다. 이름 문자열이 어떻게 해석되는지에 대한 고정 대수는 없습니다.

여기에 State Machine에 대해 생각해보십시오. 여러 상태가있는 필드가 있습니다. "단위화 된"상태에 대해 생각하고있는 것처럼, "의도적으로 비어있는"다른 하나, 세 번째는 설정 값을 가진 세 번째입니다. 당신이하는 모든 일은 그 과제를 만들고 나머지 프로그램과 일치합니다. 쉬운 매핑처럼 들립니다

null → 초기화되지 않은
""→ 의도적으로 미지급
이름 → 초기화.

나는 물건을 단순하게 유지하려고 노력합니다. 이 경우 첫 번째 열을 불가능하게 만들고 공백을 허용합니다. 그렇지 않으면이 필드를 참조하는 모든 곳을 다루는 세 가지 사례가 있습니다.

  1. 빈 이름
  2. 널 이름
  3. 비 맹장 이름

'blank is null'또는 'null is blank'와 함께 가면 두 가지 사례로 줄어 듭니다. 두 가지 사례가 3보다 낫습니다.

귀하의 질문에 더 답변하려면 : 데이터를 입력하는 사용자는 아마도 "null"이 무엇인지, 그리고 그것이 "빈"과 어떻게 비교되는지에 대해 아무것도 알지 못할 것입니다. 이 문제는 UI가 아닌 시스템에서 깨끗하고 일관되게 해결되어야합니다.

당신의 예는 주로 현을위한 것이지만, 나는 수치 및 부울 필드에 null을 사용한다고 말하고 싶습니다. 0의 계정 밸런스는 나에게 무의미한 것과 매우 다릅니다. 부울에게도 마찬가지로, 사람들이 진실과 거짓 답변으로 객관식 테스트를 수행하는 경우 누군가가 참인지 거짓에 대답했는지 또는 전혀 대답하지 않았는지 아는 것이 매우 중요합니다. 이 경우 NULL을 사용하지 않으려면 누군가가 질문에 대답했는지 여부를 확인하기 위해 추가 테이블이나 다른 설정이 필요합니다. 예를 들어 -1은 false에 대해 0으로 채워지지 않고 1에 대해 1에 사용할 수 있지만, 1은 1에 대해 1을 사용할 수 있지만, 본질적으로 부울 인 것에 대해 숫자 필드를 사용하고 있습니다.

I've never, ever had a use for a NULL value in production code. An empty string is a fine sentinel value for a blank name field, phone number, or annual income for any application. That said, I'm sure you could find some use for it, but I just think it's overused. If I were to use a NULL value, however, I imagine I'd use it anywhere I want to represent an empty value.

I have always used NULL for uninitialized values, empty for purposely empty values and 0 for off indicators.

By doing this all the time, it is there even if I am not using it, but I don't have to do anything different if I need that distinction.

I am usually testing for empty(), but sometimes I check for isset() which evaluates false on NULL. This is useful for reminders to answer certain questions. If it is empty, false or 0 then the question is answered.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top