본문 바로가기
Tech/Database

인조식별자에 대한 고찰

by Augustine™ 2021. 7. 28.
반응형

인조식별자는 무조건 쓰면 안되나요?

직장 동료와 모델링 리뷰를 하면서 나온 주제다. 인조식별자는 무조건 나쁜 것일까?

결론부터 이야기 하자면, 필요시 적절히 인조식별자를 사용해서, 키를 상속받는 엔티티의 복잡도를 해소해야 한다.

어떤 경우에 인조식별자를 사용해야 할까?

먼저 엔티티의 종류부터 알아보자.

보통 엔티티의 종류는 크게 키 엔티티(Key entity), 메인 엔티티(Main Entity), 액션 엔티티(Action Entity) 로 분류된다. 이 중, 키 엔티티는 태생적으로 부모 엔티티 없이 존재하는 집합이다. 

가령 부서, 가맹점, 경우에 따라서는 고객, 학생 집합이 키 엔티티로 분류될 수 있다. 엔티티 도출 시, 가장 먼저 나와야 하는 엔티티들이다. 메인 엔티티, 액션 엔티티는 이들 엔티티의 식별자를 상속 받아서 복합 식별자로 구성되는 경우가 많다. 심지어 경우에 따라서는 메인, 액션 엔티티의 식별자가 복잡해질 경우 인조식별자를 사용할 수도 있다. 

물론 무턱되고 인조식별자를 쓰자는건 아니다. 복합키가 여러 개로 구성된 엔티티가 하위 엔티티에 키를 상속해야 할 경우, 복잡도를 줄이기 위해 전략적으로 인조식별자를 사용하는 경우다.

모델이 아주 단순하고, 엔티티의 인스턴스의 아이덴티티를 분명히 식별해줄 본질 식별자가 있는 경우, 본질 식별자를 사용해야 한다. 하지만, 복잡한 시스템 또는 솔루션을 만드는 경우의 키 엔티티는 가급적이면 식별자를 단순화 시킬 필요가 있다.

아래는 김기창의 관계형 데이터 모델링 노트 에서 발췌한 부분이다.

주 식별자를 단순하게 설계해야 하는 이유1

 

주 식별자를 단순하게 설계해야 하는 이유2

 

 

반응형

댓글