더북(TheBook)

단순히 Customers 테이블에 EmployeeID 외래키를 생성해 해당 고객을 직원과 연결하는 것도 가능하지만, 이 방법은 실제로 더 많은 문제를 일으킨다. 예를 들어 해당 고객이 다른 판매 지역으로 이사한다면 어떻게 될까? 데이터를 입력하는 직원이 고객의 주소를 올바르게 갱신할 수 있지만, 이 고객과 연결된 직원을 갱신해야 한다는 사실을 알아채거나 기억하지 못해 새로운 오류가 발생될 것이다.

차라리 EmployeeID 외래키를 가진 SalesTerritory라는 테이블을 만들어 직원에게 할당된 ZIP 코드(TerrZip)를 로우로 식별하는 것이 나을 것이다. 동일한 ZIP 코드를 직원 두 명 이상에게 할당하는 것은 원하지 않을 테니 각 ZIP 코드는 SalesTerritory 테이블 내에서는 유일할 것이다. 다음으로 TerrZIP 코드와 Customers 테이블 간에 관계를 생성하면 직원은 자신의 지역에 어떤 고객이 있는지 알아낼 수 있을 것이다.

반대로 판매 지역이 아닌 다른 기준에 따라 고객을 직원에게 할당할 때는 Customers 테이블에 EmployeeID 외래키를 생성하는 방법이 고객과 직원 간 연결에 실질적인 유동성을 반영하는 데 더 좋다. 기본적으로 판매 지역을 기준으로 연결하더라도 이렇게 처리하면 다른 직원과 연결해 달라는 고객의 요청도 반영할 수 있다. 이전 예와 마찬가지로 이런 접근법을 따를 때는 데이터 입력 오류를 최소화할 수 있는 적절한 프로그래밍이 필요하다.

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