답변:
check constraint
값을 제한하는 해당 열에 대한 추가를 이미 살펴 보셨습니까 ? 다음과 같은 것 :
CREATE TABLE SomeTable
(
Id int NOT NULL,
Frequency varchar(200),
CONSTRAINT chk_Frequency CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
)
Frequency varchar(200)
검사 제약을 원합니다 .
CHECK 제약 조건은 다른 열의 데이터를 기반으로하지 않는 논리식에서 유효한 값을 결정합니다. 예를 들어 급여 열의 값 범위는 $ 15,000에서 $ 100,000 사이의 데이터 만 허용하는 CHECK 제약 조건을 만들어 제한 할 수 있습니다. 이것은 급여가 정규 급여 범위를 넘어서 입력되는 것을 방지합니다.
다음과 같은 것을 원합니다.
ALTER TABLE dbo.Table ADD CONSTRAINT CK_Table_Frequency
CHECK (Frequency IN ('Daily', 'Weekly', 'Monthly', 'Yearly'))
위의 링크에 설명 된대로 스칼라 함수를 사용하여 검사 제약 조건을 구현할 수도 있습니다.
개인적으로 나는 그것을 tinyint로 코딩하고 :
원인:
텍스트를 저장하는 데 평균 8 바이트, tinyint의 경우 1 바이트가 걸립니다. 수백만 행 이상이 차이를 만들 것입니다.
데이터 정렬은 어떻습니까? "Daily"는 "DAILY"와 동일합니까? 이러한 종류의 비교를 수행하려면 리소스가 필요합니다.
마지막으로 "격주"또는 "매시간"을 추가하려면 어떻게해야합니까? 조회 테이블에 새 행을 추가 할 수있을 때 스키마 변경이 필요합니다.