development

MySQL의 부울 값에 대한 부울 대 tinyint (1)

big-blog 2020. 7. 27. 07:15
반응형

MySQL의 부울 값에 대한 부울 대 tinyint (1)


부울 값에 대해 MySQL 데이터베이스에서 가장 적합한 열 유형은 무엇입니까? 나는 사용 boolean하지만 내 동료는를 사용합니다 tinyint(1).


이러한 데이터 유형은 동의어입니다.


여기서 다른 접근 방식을 취하고 동료 개발자가 컴파일러 / 데이터베이스와 마찬가지로 코드를 이해하는 것이 중요하다고 제안합니다. 부울을 사용하면 tinyint를 사용하는 것과 동일한 작업을 수행 할 수 있지만 의도적으로 의미를 전달할 수 있다는 이점이 있습니다.

tinyint를 사용하는 경우 볼 수있는 유일한 값은 0과 1이라는 것이 확실하지 않습니다. 부울은 항상 참 또는 거짓입니다.


booleanMySQL에서 고유 한 데이터 유형이 아닙니다. 의 동의어 일뿐입니다 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

반응형