식별자의 개념
엔터티는 인스턴스들의 집합이라고 하였다. 여러 개의 집합체를 담고 있는 하나의 통에서 각각을 구분할 수 있는 논리적인 이름이 있어야 하는데 이 구분자를 식별자라고 한다.
엔터티 내의 각 인스턴스를 개별적으로 식별하기 위해 사용된다.
식별자의 특징
주식별자에 의해 엔터티 내에 모든 인스턴스들이 유일하게 구분되어야 한다.
주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다.
지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다.
주식별자가 지정이 되면 반드시 값이 들어와야 한다.
식별자 분류
대표성여부
주식별자: 엔터티 내에서 각 행을 구분할 수 있는 구분자
보조식별자: 각 행을 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함
스스로 생성여부
내부식별자: 엔터티 내부에서 스스로 만들어지는 식별자
타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자
속성의 수
단일 식별자: 하나의 속성으로 구성된 식별자
복합 식별자: 둘 이상의 속성으로 구성된 식별자
대체여부
본질 식별자: 업무에 의해 만들어지는 식별자
인조 식별자: 인위적으로 만든 식별자
식별자 도출 기준
해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
명칭, 내역 등과 같이 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않는다.
복합으로 주식별자로 구성할 경우 너무 많은 속성이 포함되지 않도록 한다.
식별자관계와 비식별자 관계의 결정
외부식별자는 자기 자신의 엔터티에서 필요한 속성이 아니라 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성되는 속성을 외부식별자라 하며 데이터베이스 생성 시에 Foreign Key 역할을 한다.
자식엔터티에서 부모엔터티로부터 받은 외부식별자를 자신의 주식별자로 이용할 것인지 또는 부모와 연결이 되는 속성으로서만 이용할 것인지를 결정해야한다.
식별자 관계
비식별자 관계
식별자 관계와 비식별자 관계
관계분석 --- 관계의 강/약분석 --- 자식테이블 독립 PK필요 ---SQL복잡성증가
비식별자 관계 고려