더북(TheBook)

좋은 소식은 요즘에는 많은 데이터베이스 시스템이 필드를 관리하는 방법을 제공하므로 서버에서 수행되는 코드가 이런 계산을 대신한다는 것이다. 계산 컬럼을 현행화하는 가장 원시적인 방법은 계산에 사용되는 원천 컬럼이 있는 테이블에 트리거를 추가하는 것이다. 트리거는 대상 테이블에 데이터가 입력·갱신·삭제될 때 수행하는 코드다. 코드 1-5의 예제에 적용한다면, OraderTotal 컬럼 값을 재계산할 때는 Order_Details 테이블에 트리거가 필요하다. 하지만 트리거는 정확하게 작성하기가 어렵고 비용도 비싸다(‘BETTER WAY 13. 트리거를 남발하지 말자’를 참고한다).

잠재적으로 트리거보다 나은 선택으로 몇몇 데이터베이스 시스템에서는 테이블을 생성할 때 계산 컬럼을 정의하는 방법을 제공한다. 트리거보다 낫다고 한 이유는 테이블 정의의 일부로 계산 컬럼을 정의하면 트리거를 작성할 때 종종 필요한 복잡한 코드를 작성하지 않아도 되기 때문이다. 몇몇 RDBMS, 특히 최신 버전에서는 이미 계산 컬럼을 정의해 사용하는 기능을 지원한다. 예를 들어 SQL Server에서는 AS 키워드 다음에 수행할 계산을 정의하는 표현식을 붙일 수 있다. 동일한 테이블에 있는 컬럼만으로 계산하려면, 단순히 계산 컬럼을 정의할 때 다른 계산 대상 컬럼을 표현식에 추가한다. 관련된 다른 테이블에 있는 값으로 계산하고 이 계산을 수행하는 함수를 만들 수 있는 시스템이라면, 대상 테이블을 생성하거나 변경할 때 AS 절에서 함수를 호출해 해당 컬럼을 정의한다. 코드 1-6에서는 SQL Server의 예제 함수와 테이블 정의 내용을 보여 준다. 주의할 점은 해당 함수가 다른 테이블에 있는 데이터에 의존하고 비결정적 함수이므로 계산 컬럼에 인덱스를 만들 수 없다는 것이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.