728x90
식별자 (Identifiers)
여러개의 속성 중 엔터티를 대표 할 수 있는 속성
주식별자(기본 키) 특징
- 유일성: 주식별자는 모든 인스턴스를 유일하게 구분 가능하다
- 최소성: 주식별자를 구성하는 속성 수는 1개여야 한다 (e.g. 학번 속성으로 구분 가능한데 학번과 번호를 섞어서 구성 X)
- 불변성: 주식별자는 자주 변경되지 않아야 한다
- 존재성: 주식별자는 항상 데이터 값이 있어야 한다
- 대표성: 주식별자는 엔터티를 대표할 수 있어야 한다
키의 종류
종류 | 설명 |
기본키(PK, Primary Key) | 엔터티 대표 키 |
후보키(CK) | 유일성과 최소성 만족하지만 대표성 부족 |
슈퍼키(SK) | 유일성은 만족하지만 최소성 부족 |
대체키(AK) | 후보키 중 기본키를 선정하고 남은 키 |
외래키(FK, Foreign Key) | 다른 테이블 기본키 필드를 참조한 키 |
식별자 분류
분류 | 식별자 | 설명 |
대표성 여부 | 주 식별자 (Primary Identifier) | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결 할 수 있는 식별자 e.g. 부서번호, 사번, 주문번호 |
보조 식별자 (Alternate Identifier) | 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이나 대표성을 가지지 못해 참조관계 연결을 못함 e.g. 주민등록번호 (사원 엔터티에의 주식별자는 주민등록번호보다 사번이 더 알맞다) |
|
스스로 생성여부 | 내부 식별자 | 엔터티 내부에서 스스로 만들어지는 식별자 e.g. 부서번호, 사번, 주문번호 (각각은 부서, 사원, 구매신청 엔터티에서 스스로 만들어진다) |
외부 식별자 (Foreign Identifier) | 타 엔터티와의 관계를 통해 타 엔터티로부터 받아오는 식별자 e.g. 사원 엔터티의 부서번호 (사원 엔터티와 부서 엔터티는 부서번호로 관계되어 있다) |
|
속성의 수 | 단일 식별자 (Single Identifier) | 하나의 속성으로 구성된 식별자 e.g. 부서번호, 사번, 주문번호 |
복합 식별자 (Composit Identifier) | 둘 이상의 속성으로 구성된 식별자 e.g. 교육이력 엔터티에서 사번과 수강일자 두 속성을 이용해 식별자 역할을 한다 |
|
대체여부 | 본질 식별자 | 업무에 의해 만들어지는 식별자 e.g. 부서번호, 사번 |
인조 식별자 | 업무적으로 만들어지지는 않지만 원조식별자가 복잡한 구성을 가지고 있기 때문에 인위적으로 만든 식별자 e.g. 주문번호 (기존에는 사번+주문일자+순번으로 불러와서 처리해야 해서, 인위적으로 주문번호만 처리하게 함) |
인조 식별자 특징
- 최대한 범용적인 값을 사용해서 만든 식별자
- 유일한 값을 만들기 위해 사용
- 하나의 인조 식성으로 대체 불가능
- 편의성, 단순성 확보를 위해 사용
- 의미의 체계화를 위해 사용
- 내부적으로만 사용
식별자관계, 비식별자 관계
식별자관계
*실선으로 표시. 강한 연결(종속)관계
부모의 주식별자가 자식의 주식별자가 되는 경우
e.g.
카드결제는 카드가 있어야 생기는 엔터티이다. 이런 경우를 부모관계라 표현한다.
여기서 카드 엔터티의 카드번호(주식별자)를 결제 엔터티의 주식별자로 지정했다.
이런 경우를 식별자 관계라고 한다.
비식별자관계
*점선으로 표시. 약한 연결(종속)관계
부모의 주식별자가 자식의 주식별자가 되지 않고 그냥 속성으로만 사용하는 경우
e.g.
카드 AS는 카드가 있어야 생기는 엔터티이다. 하지만 식별관계처럼 카드번호를 기본키로 사용하지 않고 카드AS번호를 기본 키로 사용한다. 부모 엔터티 주식별자(카드번호)를 그냥 속성으로만 사용하였다.
이런 경우를 비식별자 관계라고 한다.
728x90
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 데이터 모델과 성능 - 대용량 데이터에 따른 성능, DB 구조와 성능, 분산DB 데이터에 따른 성능 (0) | 2023.08.30 |
---|---|
[SQLD] 데이터 모델과 성능 - 정규화와 성능, 반정규화와 성능 (0) | 2023.08.29 |
[SQLD] 데이터 모델링의 이해 - 엔터티(Entity), 속성(Attribute), 관계(Relationship) (0) | 2023.08.29 |
[SQLD] 데이터 모델링의 이해 - 데이터 모델의 이해 (1) | 2023.08.29 |
SQL 개발자(SQLD) 자격증 안내, 합격 기준, 응시 자격, 응시료 (0) | 2023.08.29 |