테이블 간에 참조 무결성을 유지하려면 변경된 기본키 값을 이와 관련 있는 테이블과 모든 자식 레코드에 전파해야 한다. 이렇게 갱신이 전파되면 관련 테이블에 잠금(Lock)이 설정되어 높은 동시성을 지원하는 다중 사용자 데이터베이스에서 심각한 문제를 일으킬 수 있다. 그림 1-2는 액세스 2003에서 샘플로 제공하는 Northwind 데이터베이스의 Customers 테이블에서 추출한 예제이다. 한번 살펴보자.
▲ 그림 1-2 Customers 테이블 샘플 데이터
이 예제에서 텍스트 기반 기본키인 CustomerID는 회사 이름(CompanyName)과 연관된다는 것이 비즈니스 규칙이라고 가정한다. 어느 한 회사 이름을 변경하려면 키 값을 결정하는 비즈니스 규칙을 반영해 CustomerID도 갱신해야 한다. 기본키 값이 변경되므로 관련된 테이블에도 변경이 전파되어야 한다. 의미 없는 값을 키로 사용한다면 CustomerID 값을 변경하거나 갱신할 필요가 없지만, 비즈니스 규칙을 준수하는 값을 표시하려면 텍스트 기반 컬럼을 유지해야 한다.