2013-11-24 2 views
0

제목, 성별 및 인사말과 같은 옵션을 정수로 저장해야합니까, 아니면 관련이 없으며이를 문자열로 저장할 수 있습니까?열거 형을 정수 대 문자열로 저장하는 것과 다른 점은 무엇입니까?

class User < ActiveRecord::Base 
    enumerize :gender, in: [:male, :female] 

    TITLE = { dr: 0, prof: 1, prof_dr: 2 } 
    def title 
    TITLE.key(read_attribute(:title)) 
    end 

    def title=(t) 
    write_attribute(:title, TITLE[t.to_sym]) 
    end 
end 

각각 2000 명의 사용자와 6 가지 옵션이 있다고 가정 해 보겠습니다.

+0

일반적으로 성능을 위해 정수가 더 좋지만 문자열은 사용하기가 더 쉽습니다. –

답변

0

과거에는 저장 공간이 많은 경우 문자열을 숫자로 저장할 이유가있었습니다. 임베디드 애플리케이션 (아마 레일을 실행하고 있지 않아야 함)을 제외하고 오늘날과 같은 시대에는 필요하지 않습니다. 특히 2,000 명의 사용자 예제 데이터베이스 크기가 필요합니다.

또한, 다음과 같은 단점이있을 것이다 숫자로 문자열을 저장하는 경우 :

  • 이 코드 (없이 "읽기"수 없습니다
  • 데이터베이스는 일부 데이터베이스를 수행 데 증가 된 코드의 복잡성 포트 및 백엔드 데이터 분석을위한 프런트 엔드로 서면 레일이 모두 중요 해지고 있습니다.)

성능에 대한 우려 사항은 데이터베이스 키가 올바르게 설정되어 있는지 확인하십시오.

0

정수는 데이터베이스 수준에서 더 잘 작동하지만 각 숫자의 의미를 기억하십시오.

인간이 단어보다 숫자를 기억하기 때문에 문자열이 훨씬 쉽게 작동합니다. 이유는 우리가 숫자 대신 IP 대신 URL을 사용하기 때문입니다.

0

다른 언급했듯이 정수는 성능상의 이점이 있습니다. 그것이 중요 할 지 여부가 또 하나의 질문입니다.

코드를 작성하고 API를 개발할 때 자연 스럽다고 느끼는 것이 좋습니다. 이렇게하면 코드가 자신에게 (그리고 해당되는 경우 다른 사람에게도) 직관적으로 보이게하고 개발시 생산성을 높일 수 있습니다.

관련 문제