Ga0's
SQLD_식별자 본문
식별자(Identifiers)
1. 정의
▪ 엔터티를 구분짓는 논리적인 이름
▪ 엔터티를 대표할 수 있는 속성
▪ 엔터티에는 반드시 하나의 유일한 식별자가 존재함
→ 식별자는 업무적으로 구분되는 정보로써 논리 데이터 모델링 단계에서 사용하고, 키는 데이터베이스 테이블에 접근을 위한 매개체로서 물리 모델링 단계에서 사용한다.
2. 특징
▪ 유일성 : 주식별자에 의해 엔터티내에 모든 인스턴스들이 유일하게 구분되어야 함
▪ 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
▪ 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자 값은 변하지 않아야 함
▪ 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재해야함 (Null값 X)
3. 식별자 분류
분류 | 식별자 | 내용 |
대표성 여부 | 주식별자 | ▪ 엔터티를 대표하는 식별자로 다른 엔터티와의 참조관계를 연결(PK) |
보조식별자 | ▪ 대표성을 가지지 못해 참조관계를 연결X (후보키) | |
스스로 생성여부 | 내부식별자 | ▪ 엔터티 내부에서 스스로 만들어지는 식별자 |
외부식별자 | ▪ 타 엔터티와의 관계를 통해 생성되는 식별자 | |
속성의 수 | 단일식별자 | ▪ 하나의 속성으로 만들어지는 식별자 |
복합식별자 | ▪ 두개 이상의 속성으로 구성된 식별자 | |
대체 여부 | 본질식별자 | ▪ 업무로 인해 만들어지는 식별자 |
인조식별자 | ▪ 인위적으로 만들어지는 식별자 |
4. 주식별자 도출 기준
▪ 해당 업무에서 자주 이용되는 속성을 주식별자로 지정
▪ 명칭, 내역 등과 같이 이름으로 기술되는 것들은 피해야 함
→ 구분자가 존재하지 않을 경우 새로운 식별자를 생성함(일련번호, 코드 등)
▪ 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 해야한다.
→ 주식별자 개수가 많을 경우 새로운 인조 식별자를 생성함
식별자와 비식별자의 관계
1. 식별자 관계
▪ 실선으로 표시하며, 강한 연결(종속)관계라고한다.
▪ 부모의 주식별자가 자식의 주식별자가 되는 경우를 식별자 관계라고 한다.
▪ 예를 들어, 영화를 보기 위해서는 영화표가 있어야한다. 즉, 영화관람은 영화표가 있어야 생기는 엔터티이다. 이러한 경우를 부모관계라고 하는데, 자세히 말하면 영화표 엔터티의 주식별자(PK)는 영화표 코드 번호 이고, 영화관람 엔터티는 이 영화표 코드 번호를 외래키로 받아 다른 엔터티(영화표)의 기본키를 참조한다. => 식별자 관계!!
2. 비식별자 관계
▪ 부모의 주식별자가 자식의 주식별자가 되지 않고 부모로부터 아무 속성이나 받아 일반 속성으로 사용하는 것을 비식별자 관계라하며, 약한 종속 관계라고도 한다.
▪ 주로 사용하는 경우
▫ 부모 없는 자식 생성이 가능한 경우
▫ 엔터티별로 데이터 생명주기를 다 다르게 관리하는 경우
▫ 여러 개의 엔터티가 하나로 통합 표현되었는데 각각 별도의 관계를 가질 경우
▫ 자식 엔터티에서 별도의 주식별자 생성이 더 유리한 경우
식별자와 비식별자의 문제점
1) 식별자 관계로만 설정할 경우의 문제점
▪ 부모에서 자식으로 식별자 관계로 연결되므로 인해 주식별자의 속성의 수가 많아진다. → 복잡성과 오류가능성 유발
2) 비식별자 관계로만 설정할 경우의 문제점
▪ 속성이 자식에게 상속되지 않아 부모엔터티까지 조인되는 현상이 많아진다. 이로 인해 불필요한 조인이 발생하여 SQL구문이 길어져 성능이 저하된다.
정리
'Study IT > SQLD' 카테고리의 다른 글
SQLD_정규화 (0) | 2023.04.28 |
---|---|
SQLD_성능 데이터 모델링의 개요 (0) | 2023.04.27 |
SQLD_관계(Relationship) (0) | 2023.04.26 |
SQLD_엔터티(Entity) (0) | 2023.04.26 |
SQLD_데이터 모델링 (0) | 2023.04.25 |