MySQL의 부울 값에 대한 부울 대 tinyint (1)
부울 값에 대해 MySQL 데이터베이스에서 가장 적합한 열 유형은 무엇입니까? 나는 사용 boolean
하지만 내 동료는를 사용합니다 tinyint(1)
.
이러한 데이터 유형은 동의어입니다.
여기서 다른 접근 방식을 취하고 동료 개발자가 컴파일러 / 데이터베이스와 마찬가지로 코드를 이해하는 것이 중요하다고 제안합니다. 부울을 사용하면 tinyint를 사용하는 것과 동일한 작업을 수행 할 수 있지만 의도적으로 의미를 전달할 수 있다는 이점이 있습니다.
tinyint를 사용하는 경우 볼 수있는 유일한 값은 0과 1이라는 것이 확실하지 않습니다. 부울은 항상 참 또는 거짓입니다.
boolean
MySQL에서 고유 한 데이터 유형이 아닙니다. 의 동의어 일뿐입니다 tinyint
. MySQL 매뉴얼에서이 페이지를 참조하십시오 .
부울은 이름에서 생각하는 것을하지 않기 때문에 잠재적으로 잘못된 코드를 만들 수 있기 때문에 개인적으로 tinyint를 환경 설정으로 사용하는 것이 좋습니다. 그러나 실제적인 수준에서는 실제로 중요하지 않습니다. 둘 다 동일한 작업을 수행하므로 둘 중 하나를 사용하여 아무것도 얻거나 잃지 않습니다.
쉽고 빠른 열거 형을 사용 하십시오.
bit (1)은 부울 값을 저장하기 위해 1 비트 만 필요하고 tinyint (1)은 8 비트를 필요로하기 때문에 enum 또는 tinyint (1)을 권장하지 않습니다.
심판
MySQL의 부울 값에 대한 TINYINT vs ENUM (0, 1)
그것은 그 사실이지만 bool
하고 tinyint(1)
있습니다 기능적으로 동일합니다, bool
당신이 뭘 하려는지의 의미 론적 의미를 전달하기 때문에 선호하는 옵션이 될 것이다. 또한 많은 ORM이 bool
프로그래밍 언어의 기본 부울 유형으로 변환 됩니다.
Dapper 를 사용하여 MySQL 에 연결할 때의 나의 경험 은 그것이 중요 하다는 것 입니다. 다음 스크립트를 사용하여 nullable이 아닌 bit (1)을 nullable tinyint (1)로 변경했습니다.
ALTER TABLE TableName MODIFY Setting BOOLEAN null;
그런 다음 Dapper는 예외를 던지기 시작했습니다. 스크립트 전후의 차이를 보려고했습니다. 그리고 bit (1)이 tinyint (1)로 변경되었음을 알 수 있습니다.
나는 다음을 달렸다.
ALTER TABLE TableName CHANGE COLUMN Setting Setting BIT(1) NULL DEFAULT NULL;
문제가 해결되었습니다.
참고 URL : https://stackoverflow.com/questions/3751853/boolean-vs-tinyint1-for-boolean-values-in-mysql
'development' 카테고리의 다른 글
Python- 'ascii'코덱이 바이트를 디코딩 할 수 없습니다 (0) | 2020.07.27 |
---|---|
클래스 이름 및 메소드 이름 드롭 다운 목록이 누락되었습니다 (시각적 스튜디오 설정). (0) | 2020.07.27 |
로직 프로그래밍과 관련하여 Prolog와 miniKanren의 주요 기술적 차이점은 무엇입니까? (0) | 2020.07.27 |
ASP.NET MVC의 RSS 피드 (0) | 2020.07.27 |
C ++ 개인 상속을 언제 사용해야합니까? (0) | 2020.07.27 |