2012-06-13 7 views
0

새로 도입 된 체크 박스 값을 MySQL 데이터베이스에 저장하는 방법에 대해 약간의 논의가있었습니다. 확인란은 '켜짐'또는 '꺼짐'일 수 있지만 때로는 전혀 표시되지 않습니다. 제 아이디어는 단순히 BOOL NOT NULL 필드에 상태를 저장하는 것입니다. 그러면 우리는 0 또는 1 중 하나를 갖게됩니다. 제 동료는 NULL을 포함하기를 원했기 때문에 선택의 여지가 없음을 알 수 있습니다.mysql의 체크 박스 값

그러나 BOOL 필드에는 NULL을 포함해서는 안됩니다. 당신은 그것을 진실하거나 거짓으로, 알 수 없게하기를 원합니다. '알 수 없음'이라는 추가 상태를 저장하려면 필드를 선택한 = 0, 선택하지 않은 = 1 및 알 수 없음 = 2 인 TINYINT 필드로 만듭니다. 이것은 ENUM 필드 일 수도 있습니다.

NULL이 가능한 BOOL 필드에 대해 어떻게 생각하십니까?

+0

부울 값에 NULL을 사용하지 않습니다. 부울 값의 기본값은 null을 대체해야합니다. – Tushar

답변

0

boolean 필드는 2 개 이상의 값을 가질 수 없으며 부울 자체는 켜짐 또는 꺼짐, 참 또는 거짓과 같은 '둘 중 하나의 조건'을 의미합니다.

1

그것은 NULL이 가능합니다 BOOL 아니다, 그것은 단순히

0: not selected 
1: selected 
2: unknown/hidden 

열거 형 응용 프로그램의 동작이 포함 된 경우가 있기 때문에 뭘 하려는지 달성 할 수있는 좋은 방법입니다 상태 열거입니다 체크 박스 값에 '숨겨진/알 수 없음'상태가 나타나면 mysql이이를 반영해야합니다. 그렇지 않으면 앞으로 해킹을 시작할 것입니다.

+0

정확히 내 생각이지만, MySQL의 BOOL 필드 (TINYINT (0)에 대한 간단한 별명)가 NULL 값을 가질 수 있다는 것이 이상하다고 생각합니다. MySQL의 SERIAL 별명에는 NOT NULL 인수가 있습니다. –

+0

유즈 케이스에서 체크 박스 값에 'unknown'과'false' 사이에 차이가 있습니까? 에서와 마찬가지로 응용 프로그램에서 '알 수 없음'및 '거짓'에 대한 동작이 동일합니까? 동일하다면'unknown'을'false' (기본값)로 설정 한 참/거짓 부울이 의미가 있습니다. – Ryan

1

개인적으로 BOOL 필드에 NULL을 사용하는 것은 잘못된 것이 아닙니다. 내가 아는 한, 그것은 다른 유형과 마찬가지로 유형이며 알맞게 알 수없는 상태로 지정할 수 있습니다. 그러나 BOOL이 'on'또는 'off'중 어느 하나에 의한 것이므로 NULL이 될 수 없다면,이 논리가 Ints라고 확장 될 수 있다고 주장 할 것입니다. 그런 다음 Int는 숫자 여야하므로 NULL이 될 수 없습니다.

여기에 대한 다른 답변을 바탕으로 본인은 분명히 소수입니다. 나는 아마 내 입장을 다시 생각해야한다.