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

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



답변

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


답변

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

tinyint를 사용하는 경우 표시되어야하는 유일한 값이 0과 1이라는 것이 분명하지 않습니다. 부울은 항상 true 또는 false입니다.


답변

booleanMySQL에서 고유 한 데이터 유형이 아닙니다. 그것은 단지 tinyint. MySQL 매뉴얼의이 페이지를 참조하십시오 .

개인적으로 저는 tinyint를 기본 설정으로 사용하는 것이 좋습니다. 부울은 이름에서 생각하는 작업을 수행하지 않으므로 잠재적으로 잘못된 코드를 만들 수 있기 때문입니다. 그러나 실질적인 수준에서는 실제로 중요하지 않습니다. 둘 다 동일한 작업을 수행하므로 둘 중 하나를 사용하여 어떤 것도 얻거나 잃지 않습니다.


답변

사용 열거 의 쉽고 빠른

bit (1)은 부울 값을 저장하는 데 1 비트 만 필요하고 tinyint (1)에는 8 비트가 필요하므로 enum 또는 tinyint (1)을 권장하지 않습니다.

심판

MySQL의 부울 값에 대한 TINYINT 대 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;

문제가 해결되었습니다.


답변