지난 시간에 일대다 관계가 일반적이라는 말을 했습니다. 그런데 업무 요구 분석을 하다가 보면 일대일 또는 다대다 관계가 성립될 때가 있습니다.
이럴 땐 어떻게 해야할까요?
실제로 일대일 또는 다대다 관계라 할지라도 효율적인 데이터베이스 프로세싱을 위해서는 일대다 관계로 변형하는 것이 좋습니다.
먼저 일대일(1:1) 관계가 성립될 경우입니다.
그림으로는 아래와 같이 나타냅니다.

택시 기사는 반드시 면허증을 가져야 합니다. 그리고 그 면허증은 반드시 한 사람에게만 적용됩니다. 택시 기사 한 사람이 여러 개의 면허증을 가지거나 하나의 면허증으로 여러 택시 기사가 나누어 가질 수는 없다는 뜻입니다.
이럴 경우 의미적으로는 일대일 관계가 맞다고 하더라도 효율적인 데이터베이스 처리를 위하여 두 개의 entity를 합쳐 하나로 통합하는 것이 좋습니다.
다음 그림과 같이 말이죠.

이제 TAXI DRIVER entity는 기존의 LICENSE entity의 attribute까지 모두 포함한 하나의 entity가 되었습니다.
다대다(M:N)의 관계를 살펴봅시다.

위 그림에서 여러 개의 강좌와 여러 학생들이 다대다 관계로 성립되어 있습니다. 학생은 여러 개의 강좌를 동시에 수강해도 되니까 말입니다.
이렇게 의미적으로 다대다 관계가 성립된다고 하더라도 그대로 둘 경우 상당히 관리하기가 복잡해집니다.
이럴 때는 따로 관리할 수 있는 정보를 별도로 떼어내어 하나의 entity를 구성한 다음 이 entity를 중심으로 1:다 관계를 새로 정립하는 것이 좋습니다.
아래 그림을 보죠.

이러한 작업이 위의 예처럼 그리 쉽게 해결되지 않을 때가 많습니다. 그래도 여러 방법을 구사하여 가급적 일대다 관계로 풀어내어야 데이터베이스의 처리가 한결 수월해집니다.
이상 일요일 새벽 동주아빠 손병목이었습니다.
