2009-06-16 4 views
2

어떤 상황이 더 좋습니까?문자열 또는 열거 형

열거 또는 숯/대 Varchar

I : 해당 열의 키이고 위쪽 본질적 키/값 쌍의 테이블이 될지 300 개 가능한 값 가정

누군가 가능한 많은 값을 가진 열거 형 열과 함정이 무엇인지를 처리했는지 궁금합니다.

는 편집 :

키는 미리 정의되어 있습니다.

항목 테이블 :

ID, 이름, ...

표 속성 : ITEM_ID 키

ID, 값

+0

enums이 시나리오에 대한 나쁜 아이디어, 즉각적인 코드 냄새, 유지 보수 악몽 – BlackTigerX

답변

3

당신은 수 (300)를 이야기하는 경우 가치, 나는 별도의 아이디/값 조회 테이블을 사용하는 것입니다.

은 특히 질문에서이 문장을 주어진 :

문제의 열이 왜 다만 실제로하지 키

이다 기본적으로 키/값 쌍의 테이블이 될 것입니다 무슨에

키/값 쌍의 테이블?

+0

방금 ​​내 질문을 편집했습니다. – Tom

+1

솔직히, 나는 내 대답을 바꾸지 않을 것이라고 생각합니다. 나는 여전히 당신의 속성 테이블에있는 "키"를 300 개의 가능한 "키"값을 가진 FK 세 번째 테이블로 유지합니다. –

2

아마 내가 질문을 잘못 이해하고 있지만 일반적으로 정규화하고 다른 테이블에 외래 키를 사용하여 입력해야하는 300+ 유형의 열이있는 경우

1

직교 값 만있는 경우 열거 형을 선택하는 것이 좋습니다. 예를 들어 명명 된 색은 큰 열거 형을 만드는 것을 정당화 할 수있는 예입니다. 질문은 300+ 값이 직각이면 더 작은 직교 집합으로 분해 할 수 있습니까? 예를 들어 큐브의 8 개 모서리는 8 개의 값을 갖는 열거 형으로 설명 될 수 있습니다.

FrontLeftBottom 
FrontRightBottom 
FrontRightTop 
FrontLeftTop 
RearLeftBottom 
[...] 

그러나 6 개의 값으로 분해하여 비트 플래그 열거 형을 사용하여 결합 할 수도 있습니다. 값 공간이 해결되지 않은 경우

Front 
Rear 
Left 
Right 
Top 
Bottom 

- 문자열 또는 새로운 deticated 타입이 갈 수있는 방법입니다 - 즉, 새로운 값이 추가됩니다 확실히 가능입니다.