DATOR


Function Based Index 활용

모델링을 하다보면 아래와 같은 경우가 발생하여 고민하는 경우가 있을것이다.

그런 경우에 FBI 을 활용하면 해결할수 있는 방안이 있다.

 

1.아래 고객주소 엔터티에 하나의 고객은 고객주소구분코드(자택주소,직장주소,기타주소)별로 주소를 가진다.
그런데 고객은 자택주소,직장주소는 하나만 가질수 있고 기타주소는 여러개를 가질수 있다.

APP개발자는 APP에서 UNIQUE을 체크하는것 보다 DB상에서 UNIQUE을 체크 하기를 강력하게 원한다.

즉 고객이 자택주소,직장주소인 경우에는 UNIQUE을 해야 하고 기타주소인 경우에는 UNIQUE가 필요 없다.

 

01.gif

 


아래와 같이 인덱스를 생성하면 APP에서 원하는 것을 명확하게 체크할수 있다.

 

CREATE UNIQUE INDEX 고객주소_체크1 ON 고객주소

              (

               CASE WHEN 주소구분코드 IN ('자택주소','직장주소') THEN 고객번호 END,
               CASE WHEN 주소구분코드 IN ('자택주소','직장주소') THEN 주소구분코드 END

             );

              


설명)

CASE에 만족하는 값만 되기때문에 자택주소,직장주소인 경우에는 UNIQUE하다.
해당 데이터를 두번 넣으면 당연히 에러가 발생한다.

 

도움이 되시기를 바랍니다.

Tag

Leave Comments