식별자
- 하나의 엔티티에 구성된 여러 속성 중 엔티티를 대표할 수 있는 속성
- 하나의 유일한 식별자가 존재해야 함
- 식별자 ≫ 논리 모델링에서 사용 / 키(key) ≫ 물리 모델링에서 사용
- 예) 학생 엔티티의 주식별자 : 학생번호 속성 (논리 모델링) ≫ 학생 테이블의 기본키 : 학생번호 컬럼 (물리 모델링)
주식별자 특징
- 유일성 : 주식별자에 의해 모든 인스턴스를 유일하게 구분함
- 예) 학생 엔티티에서 이름 속성 사용 시 동명이인으로 완벽하게 구분할 수 없음 ≫ 학생 번호 속성을 주식별자로
- 최소성 : 유일성을 만족하는 최소한의 속성으로 구성
- 예) 학생 번호만으로 충분한데, 학생 번호 + 이름으로 구성할 필요 없음
- 불변성 : 주식별자가 한번 특정 엔티티에 지정되면 그 식별자의 값은 변하지 않아야 함
- 예) 학생 엔티티의 주식별자 학생 번호가 때에 따라 변경되어서는 안 됨
- 존재성 : 주식별자는 반드시 값이 존재해야 하며 NULL은 허용되지 않음
식별자 분류
1. 대표성 여부에 따라
주식별자 | 보조식별자 |
유일성과 최소성을 만족하면서 엔티티를 대표하는 식별자 ≫ 각 인스턴스를 유일하게 구분할 수 있음 ≫ 타 엔티티와 참조관계를 연결할 수 있음 |
엔티티 내에서 각 인스턴스를 구분할 수 있는 구분자지만, 대표성을 가지지 못해 참조 관계 연결을 할 수 없는 식별자 ≫ 유일성과 최소성은 만족하지만 대표성을 만족하지 못함 |
2. 생성 여부에 따라
내부식별자 | 외부식별자 |
다른 엔티티 참조 없이 엔티티 내부에서 스스로 생성되는 식별자 | 다른 엔티티와 관계로 인하여 만들어지는 식별자 (외래키) |
3. 속성 수에 따라
단일식별자 | 복합식별자 |
하나의 속성으로 구성 | 2개 이상의 속성으로 구성 |
4. 대체 여부에 따라
본질식별자 (원조식별자) | 인조식별자 |
비즈니스 프로세스에서 만들어지는 식별자 | 인위적으로 만들어지는 식별자 ≫ 필요한 속성이 아닌 식별을 위해 만들어짐 ≫ 자동 증가하는 일련번호 같은 형태 |
식별자 표기법
IE 표기법 ≫ 칸으로 구별
Barker 표기법 ≫ #으로 구별
주식별자 도출 기준
- 해당 업무에서 자주 이용되는 속성으로 지정
- 예) 학생번호와 주민번호 중에 학생번호를 주식별자로, 주민번호는 보조식별자로
- 명칭이나 내역 등과 같은 이름 자체를 주식별자로 사용하는 행위는 피함
- 예) 부서명 보다는 부서 코드를 부여하여 주식별자로
- 속성의 수를 최대한 적게 구성
- 너무 많은 속성으로 구성 시, 조인으로 인한 성능 저하 발생 우려
- 일반적으로 7~8개 이상의 주식별자 구성은 새로운 인조식별자를 생성하여 단순화시키는 것이 좋음
- 예) 주문 엔티티에서 (주문일자 + 주문상품코드 + 고객번호 + ...) 대신 주문번호 속성 추가
관계간 엔티티 구분
- 강한 개체 : 독립적으로 존재할 수 있는 엔티티
- 예) 고객과 계좌 ≫ 고객은 독립적으로 존재 가능
- 약한 개체 : 독립적으로 존재할 수 없는 엔티티
- 예) 고객과 계좌 ≫ 계좌는 고객이 있어야 존재, 고객으로부터 파생되는 엔티티
식별관계와 비식별관계
- 식별관계 (Identification Relationship)
- 하나의 엔티티의 기본키를 다른 엔티티가 기본키의 일부로 공유하는 관계
- 식별관계는 ERD에서 실선으로 표시
- 예) 사원과 교육이력 엔티티에서 양쪽 모두 기본키 중 일부가 사원번호
- 비식별관계 (Non-identification Relationship)
- 강한 개체의 기본키를 다른 엔티티가 기본키가 아닌 일반 속성으로 가지는 것
- 비식별관계는 ERD에서 점선으로 표시
- 예) 부서와 사원의 관계에서 부서의 부서번호(기본키)를 사원 엔티티에서는 일반키로 가짐
(사원에서는 사원번호가 기본키, 기본키에 부서번호가 포함되지 않음)
≫ 논리 모델링에서의 식별자가 물리 모델링에서는 Key가 됨
Key의 종류
- 기본키 (Primary Key)
- 엔티티를 대표할 수 있는 키
- 후보키 (Candidate Key)
- 유일성과 최소성을 만족하는 키
- 후보키들 중 하나가 기본키가 되고, 나머지는 대체키가 됨
- 슈퍼키 (Super Key)
- 유일성은 만족하지만 최소성은 만족하지 않는 키
- 예) 학생 테이블에서 학번으로만 PK를 구성할 수 있는데, (학번+이름)으로 구성한다면 이는 슈퍼키
- 대체키 (Alternate Key)
- 여러 후보키 중 기본키가 아닌 키
- 외래키 (Foreign Key)
- 다른 테이블의 기본키를 참조하는 키 (다른 테이블의 기본키에 존재하는 값만 입력될 수 있음)
- 참조 테이블은 하나 또는 여러 개 가능
'sqld' 카테고리의 다른 글
1-7) 관계와 조인의 이해 (0) | 2024.08.19 |
---|---|
1-6) 정규화 (0) | 2024.08.18 |
1-4) 관계(Relationship) (0) | 2024.07.29 |
1-3) 속성(Attribute) (0) | 2024.07.28 |
1-2) 엔티티(Entity) (0) | 2024.07.24 |