복붙노트

[SQL] 데이터베이스에 섹스 (성별) 저장

SQL

데이터베이스에 섹스 (성별) 저장

나는 가능한 한 작은 (크기 / 성능) 비용으로 데이터베이스에 사용자의 성별을 저장할.

지금까지 3 개 시나리오 마음에 와서

내가 물어 이유는 문자가 논리 값보다 작은 것을 언급이 답변이다.

나는 비트 데이터 유형을 가지고 사실합니까 MS SQL 2008을 사용하고 있음을 명확히해야한다.

해결법

  1. ==============================

    1.나는 "성"열을 호출 할 것입니다.

    나는 "성"열을 호출 할 것입니다.

    Data Type   Bytes Taken          Number/Range of Values
    ------------------------------------------------
    TinyINT     1                    255 (zero to 255)
    INT         4            -       2,147,483,648 to 2,147,483,647
    BIT         1 (2 if 9+ columns)  2 (0 and 1)
    CHAR(1)     1                    26 if case insensitive, 52 otherwise
    

    그것은 단지 불충분 두 가지 성별을 지원하기 때문에 BIT 데이터 유형은 배제 될 수있다. INT 지원하는 두 개 이상의 옵션이 있지만, 그것은 4 바이트 소요 - 성능이 작은 / 더 좁은 데이터 형식에 더 좋을 것이다.

    CHAR (1) TINYINT 이상의 에지를 갖는다 -을 모두 동일한 수의 바이트를 가지고 있지만 CHAR 값보다 좁은를 제공한다. CHAR (1)를 사용하여 "m", "F", 등을 사용하여 만들 것이다 천연 키 대리 / 인공 키라고도 수치 데이터의 사용을 대. CHAR (1)도 데이터베이스에서 지원되는 포트에 대한 필요가 있어야한다.

    CHAR (1) : 나는 옵션 2를 사용합니다.

    낮은 카디널리티 열에 인덱스에 값이 없기 때문에 성별 컬럼에 인덱스 가능성이 도움이되지 것입니다. 의미, 어떤 가치를 제공 할 수있는 인덱스의 값에 충분한 여러 가지가 아니다.

  2. ==============================

    2.이에 대한 ISO 표준은 이미 있습니다; 필요가 자신의 계획을 발명합니다 :

    이에 대한 ISO 표준은 이미 있습니다; 필요가 자신의 계획을 발명합니다 :

    http://en.wikipedia.org/wiki/ISO_5218

    표준 당, 열은 "섹스"를 호출해야하고 '가장 가까운'데이터 형식은 적절한으로 CHECK 제약 조건 또는 조회 테이블 TINYINT 될 것이다.

  3. ==============================

    3.남성, 여성, 불확정, 알려지지 않은 : 의학에서 네 남녀가있다. 당신은 네 가지가 필요하지 않을 수 있습니다하지만 당신은 확실히 1이 필요하고, 4.이 데이터 타입에 대한 기본 값을 갖도록 적절한 아니에요. 비록 적은 '이다'와 함께 부울로 치료하는 상태 '아니다'.

    남성, 여성, 불확정, 알려지지 않은 : 의학에서 네 남녀가있다. 당신은 네 가지가 필요하지 않을 수 있습니다하지만 당신은 확실히 1이 필요하고, 4.이 데이터 타입에 대한 기본 값을 갖도록 적절한 아니에요. 비록 적은 '이다'와 함께 부울로 치료하는 상태 '아니다'.

  4. ==============================

    4.열거 필드에 정렬하는 int (또는 TINYINT는) 내 방법이 될 것입니다.

    열거 필드에 정렬하는 int (또는 TINYINT는) 내 방법이 될 것입니다.

    당신은 데이터베이스의 단일 비트 필드가있는 경우 먼저, 행은 여전히 ​​여러 비트 필드가있는 경우에만 갚는다, 공간 절약으로 지금까지, 전체 바이트를 사용합니다.

    둘째, 문자열 / 문자에 관계없이 디자인 타임에 보일 수있는 방법 명백한의, 그들에게 "마법 값"느낌이있다. 하지 언급, 그것은 사람들이 단지 그들이 반드시 분명 아무것도에 매핑하지 않을 값에 대해 저장할 수 있습니다.

    셋째, 수치 참조 무결성을 강화하기 위하여, 룩업 테이블을 작성하는 것이 훨씬 쉽다 (나은 연습)이고, 1 대 1 열거와 연관시킬 수 있으므로 메모리 값 내에 저장 패리티가 응용 프로그램이나 데이터베이스있다.

  5. ==============================

    5.나는 이름, 음성 및 대화에서 성별을 추측하기 때문에 문자 'F', 'm'과 'U'를 사용하고, 때로는 성별을 알 수 없습니다. 최종 결정은 자신의 의견이다.

    나는 이름, 음성 및 대화에서 성별을 추측하기 때문에 문자 'F', 'm'과 'U'를 사용하고, 때로는 성별을 알 수 없습니다. 최종 결정은 자신의 의견이다.

    정말 당신이 그 사람을 알고 당신의 기준 여부를 물리적 형태 또는 개인의 정체성 얼마나 잘 따라 달라집니다. 여성에 대한 상호, 남성에 대한 상호, 여성 트랜스 남성에 트랜스, 자웅 동체 및 미정 - 심리학자는 추가 옵션이 필요할 수 있습니다. 명확하지 단일 문자로 정의 9 옵션으로, 나는 작은 정수의 휴고의 조언과 함께 갈 수 있습니다.

  6. ==============================

    6.옵션 3은 당신의 최선의 방법이지만, 모든 DB 엔진은 "비트"유형이있다. 당신이 조금이없는 경우, TINYINT는 당신의 최선의 방법 일 것이다.

    옵션 3은 당신의 최선의 방법이지만, 모든 DB 엔진은 "비트"유형이있다. 당신이 조금이없는 경우, TINYINT는 당신의 최선의 방법 일 것이다.

  7. ==============================

    7.내가 옵션 3 대신 하나의 여러 NON NULLABLE 비트 열이 갈 것입니다. IsMale (1 = 예 / 0 = 없음) IsFemale (1 = 예 / 0 = 없음)

    내가 옵션 3 대신 하나의 여러 NON NULLABLE 비트 열이 갈 것입니다. IsMale (1 = 예 / 0 = 없음) IsFemale (1 = 예 / 0 = 없음)

    필요한 경우 : 인가 알 수없는 성별 (1 = / 0 = 아니오) 등등...

    정의를 쉽게 읽기 쉬운 확장 성, 쉬운 programability위한이 차종은 도메인 외부 값을 사용의 가능성 및 FK 또는 CHECK 제약 + 두 번째 룩업 테이블의 요구 사항은 값을 잠글 수 없습니다.

  8. ==============================

    8.

    CREATE TABLE Admission (
        Rno INT PRIMARY KEY AUTO_INCREMENT,
        Name VARCHAR(25) NOT NULL,
        Gender ENUM('M','F'),
        Boolean_Valu boolean,
        Dob Date,
        Fees numeric(7,2) NOT NULL
    );
    
    
    
    
    insert into Admission (Name,Gender,Boolean_Valu,Dob,Fees)values('Raj','M',true,'1990-07-12',50000);
    insert into Admission (Name,Gender,Boolean_Valu,Dob,Fees)values('Rani','F',false,'1994-05-10',15000);
    select * from admission;
    

    여기 링크 설명을 입력

  9. from https://stackoverflow.com/questions/4175878/storing-sex-gender-in-database by cc-by-sa and MIT license