개인적으로 (다소 주관적인 질문이기 때문에) 나는 ENUM
으로 갈 것입니다. MySQL은 CHECK
제약 조건을 지원하지 않으므로, 은 값이 M
또는 F
(또는 m
또는 f
)인지 실제로 확인할 수있는 유일한 방법입니다. 제게 그것은 가장 중요한 포인트입니다. 이 CHAR(1)
또는 TINYINT
만큼 효율적인 스토리지 와이즈 그래서
또한 ENUM
만합니다 (docs)에 따라 저장 공간의 하나의 바이트를 필요로한다.
SELECT * FROM myTable WHERE gender = 1;
이 1
남성 또는 여성인가 :이 같은 쿼리와 끝까지 때문에
나는 전혀 TINYINT
접근 방식을 이해하지? 그리고 그것이 남성이라면, 여성 0
일까요? 아니면 2
입니까? 아니면 16
일까요? 응용 프로그램을 작성 (및 유지 관리)하기 위해 이미 많은 것을 기억해야합니다. 그 더미에 추가 할 필요가 없습니다.
부록 2017년 12월 1일 에드 깁스 : 나는 관련이없는 Google 검색에 걸쳐 발견 할 때 내 대답을 다시 방문 ...
ENUM
접근 방식은 정적와 함께 사용할 경우에 장점이있다 , 값의 단일 차원 도메인 (예 : Y/N, To/Cc/Bcc)은 성별에 맞지 않습니다. 제 대답은 "성 (column)을 M 또는 F로 어떻게 제한합니까?"와 같은 성격의 컨텍스트에서 였고 성 정의에 대한 더 넓은 맥락에서가 아니 었습니다.
D Mac의 솔루션은보다 견고하고 계몽 적이지만 성별이 다차원 인 반면 1 차원이기 때문에 여전히 불완전합니다.
인간을 주관적인 범주 (성별, 인종, 계급 신분, 종교, 정치적 취향, 고용 상태, 민족 정체성, 성적 취향, 우울함 등)로 분류 할 때, 자신을 식별 할 수있는 여러 가지 방법을 고려하십시오 . 항상 "단일 상자 확인"솔루션이있는 것은 아닙니다.
이것은 이념을 뛰어 넘습니다. 다차원 개체를 단일 차원으로 분류하려고 시도하는 것은 정확하지 않으며 부정확성은 비용이 듭니다.혹시 더 복잡한 성 문제를 처리해야 할 수도
엄선 된 태그 지정. –
좀 더 구체적으로 알려주세요. – t0m
많은 태그가 질문과 관련이 없음을 의미합니다. 정말로 뛰어 내리는 두 가지는'mysqli' 또는'mysqldump'입니다. 여러분의 질문은 그들과 관련이 없습니다. –