데이터베이스 모델의 3대 요소는 관계, 엔티티, 속성이다.
이에 버금가는 요소가 식별자(Identifier)로, 식별자의 선정과 분석은 데이터 모델의 초석을 마련하는 기반이 된다. 이는 더 나아가 데이터 이행에도 많은 영향을 끼친다.
이 글에서는 데이터 모델의 주요 요소 중 하나인 식별자에 대해 살펴본다. 데이터 모델에는 여러 요소가 있지만 식별자는 해당 테이블의 속성을 좌우하는 것 중에서도 매우 중요한 요소다.
식별자는 엔티티의 성격을 좌우하는 속성이다. 하나의 속성으로 해당 엔티티의 식별자를 선정할 수 있다. 여러 개의 속성으로 해당 엔티티의 식별자를 선정하는 것도 가능하다.
엔티티의 식별자는 물리 모델링을 할 때 인덱스로 구현되며 그 중 유니크 식별자(Unique Identifier)는 프라이머리 키(Primary Key)로 구현된다. 이처럼 식별자는 해당 엔티티의 키 값이 되며, 해당 테이블의 속성을 좌우한다.
이러한 성격에 따라 식별자는 두 가지로 나뉜다.
해당 엔티티의 성격을 좌우하는 식별자다. 예컨대 회원 정보를 저장하는 회원 정보 엔티티의 주민번호 속성이 바로 유니크 식별자다.
유니크 식별자는 아니지만 유일한 값을 가지는 식별자다. 회원 정보 엔티티에서 주민번호 속성을 보조 식별자로 지정하고 가공해 생성한 회원번호 속성을 유니크 식별자로 지정할 수 있다.
상속받은 위치에 따라 식별자를 크게 두 가지로 나눌 수 있다.
다른 엔티티로부터 식별자를 상속받는 것이 아니라 자신의 엔티티에서 식별자를 생성해 사용하는 식별자다.
사원 정보를 저장하는 사원 엔티티의 사원번호 속성은 누구한테 상속받은 번호가 아닌 자체 엔티티에서 만들어낸 것이므로 내부 식별자에 해당한다.
다른 엔티티로부터 식별자를 상속받은 경우를 말한다.
많은 경우가 외부 식별자를 사용하는데, 교육센터의 수강 엔티티는 강의 엔티티의 강의번호 속성과 학생 엔티티의 학생번호 속성을 각각 상속받아 유니크 식별자로 사용된다.
정리하면 식별자의 종류는 성격에 따라 유니크 식별자와 보조 식별자로 나뉘며, 상속받는 위치에 따라 내부 식별자와 외부 식별자로 나뉜다.
하나의 엔티티에 유니크한 값을 가지는 속성이 여러 개 있을 경우 자주 사용하는 속성을 유니크 속성으로 선정한다.
예컨대 직원 엔티티에는 유니크한 값을 저장하는 속성이 주민번호와 사원번호가 있다고 가정하자. 그렇다면 업무에 자주 사용하는 속성을 유니크 식별자로 선정해야 한다.
직원 엔티티는 사원번호 속성이므로 조회 등의 업무를 자주 수행한다면 사원번호 속성을 유니크 식별자로, 업무에 적게 사용되는 주민등록 속성은 보조 식별자로 선정하는 것이 바람직할 것이다.
물론 두 속성은 각각의 유니크 인덱스를 생성한다.
주민번호 등의 개인정보는 보안에 주의해야 하므로 유니크 식별자로 선정하지 않아도 된다. 주민번호 속성을 유니크 식별자로 선정하는 순간 자식 엔티티들은 주민번호 속성을 상속받을 가능성이 많아진다. 이로 인해 보안에 중요한 속성이 여러 엔티티에 있게 되고, 이것이 보안 취약점이 될 수 있다.
- 강좌 URL : http://www.gurubee.net/lecture/2868
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.