표준 상황은 조회 테이블을 통해 처리됩니다. 일반적으로 이들은 간단한 구조 (종종 두 개의 열)가 있습니다.
CREATE TABLE LookupTable
(
code SMALLINT NOT NULL PRIMARY KEY,
name VARCHAR(32) NOT NULL
);
이름 열을 고유하게 만들거나 만들지 않을 수도 있습니다. 그런 다음 해당 유형의 값을 포함하는 테이블을 위해, 당신은 사용 : 여기
CREATE TABLE ReferencingTable
(
...
lookup SMALLINT NOT NULL REFERENCES LookupTable,
...
);
, 내가 이름을 가진 매우 영리하지했습니다; 'LookupTable'대신 'CustomerStatus'를 사용하고 ReferencingTable에서 CustStatus 열 이름을 사용할 수 있습니다. '코드'열에는 여러 개의 값을 사용할 수있는 값에 따라 1 바이트의 작은 정수, 작은 CHAR 필드 또는 INTEGER 유형을 선택할 수 있습니다. 때로 조회 테이블은 더욱 복잡해지고 엔티티를 설명하는 추가 속성을 얻습니다. 일반적으로 조회가 귀하의 DB에 중요한 요소를 모델링한다는 의미이며 더 이상 '조회 테이블'이 아닙니다.
이 룩업 테이블은 꽤 많지만 'OTT (One True Lookup Table)'관용구로 일반화하는 유혹에 빠져들지는 않을 것입니다. 다른 SO 질문과 웹의 다른 곳에서 설명 된 것처럼 데이터 무결성 문제가 발생합니다.
몇 시간 전 그 질문에 답을 얻었을뿐입니다 (답변) : http://stackoverflow.com/questions/1390697/sql-table-and-c-enumeration Marc –