[SQLD] 식별자(Identifiers) | PART 1
식별자는 각각의 인스턴스를 구별할 수 있게 해주는 역할이다. 학번, 군번, 사번 등이 이에 해당된다.
Sep 10, 2024
Contents
✅ 1. 주식별자☑️ 1) 주식별자 도출기준✅ 2. 분류☑️ 1) 대표성 여부☑️ 2) 스스로 생성되었는지 여부☑️ 3) 단일 속성의 여부☑️ 4) 대체 여부✅ 3. 강한 개체 vs 약한 개체☑️ 1) 강한 개체☑️ 2) 약한 개체✅ 4. 식별자 관계 vs 비식별자 관계☑️ 1) 식별자 관계(Identification Relationship)☑️ 2) 비식별자 관계(Non-Identification Relationship)✅ 5. Key의 종류☑️ 1) 기본키 (Primary Key)☑️ 2) 후보키 (Candidate Key)☑️ 3) 대체키 (Alternate Key)☑️ 4) 슈퍼키 (Super Key)☑️ 5) 외래키 (Foreign Key)식별자는 각각의 인스턴스를 구별할 수 있게 해주는 역할이다. 학번, 군번, 사번 등이 이에 해당된다.
✅ 1. 주식별자☑️ 1) 주식별자 도출기준✅ 2. 분류☑️ 1) 대표성 여부☑️ 2) 스스로 생성되었는지 여부☑️ 3) 단일 속성의 여부☑️ 4) 대체 여부✅ 3. 강한 개체 vs 약한 개체☑️ 1) 강한 개체☑️ 2) 약한 개체✅ 4. 식별자 관계 vs 비식별자 관계☑️ 1) 식별자 관계(Identification Relationship)☑️ 2) 비식별자 관계(Non-Identification Relationship)✅ 5. Key의 종류☑️ 1) 기본키 (Primary Key)☑️ 2) 후보키 (Candidate Key)☑️ 3) 대체키 (Alternate Key)☑️ 4) 슈퍼키 (Super Key)☑️ 5) 외래키 (Foreign Key)
✅ 1. 주식별자
주식별자는 기본키, PK에 해당하는 속성이다. 하나의 속성이 주식별자가 될 수도 있고 여러 개의 속성이 주식별자가 될 수도 있다.
유일성 | 각 인스턴스에 유니크함을 부여하여 식별이 가능하도록 한다. |
최소성 | 유일성을 보장하는 최소 개수의 속성이어야 한다. |
불변성 | 속성값이 되도록 변하지 않아야 한다. |
존재성 | 속성값이 NULL일 수 없다. |
☑️ 1) 주식별자 도출기준
- 해당 업무에서 자주 이용되는 속성을 주식별자로 지정한다.
- 같은 식별자 조건을 만족하더라도 업무적으로 더 많이 사용되는 속성을 주식별자로 지정한다.
- ex) 학생번호와 주민번호 중 학생번호가 주식별자이며, 주민번호는 보조식별자이다.
- 명칭이나 내역 등과 같은 이름은 피한다.
- 이름 자체를 주식별자로 사용하지 말자.
- ex) 부서명보다는 부서코드를 부여하여 부서코드를 주식별자로 사용한다.
- 속성의 수를 최대한 적게 구성한다.
- 주식별자를 너무 많은 속성으로 구성하면 조인으로 인한 성능저하가 발생한다.
✅ 2. 분류
식별자를 분류하는 방식은 여러 가지이다. 대표성 여부 / 스스로 생성되었는지 여부 / 단일 속성의 여부 / 대체 여부 등이 있다.
☑️ 1) 대표성 여부
주식별자
(Primary Identifier) | - 유일성, 최소성, 불변성, 존재성을 가진 대표 식별자
- 다른 엔터티와 참조 관계로 연결 |
보조식별자
(Alternate Identifier) | - 인스턴스를 식별할 수는 있지만 대표 식별자가 아님
- 다른 엔터티와 참조 관계로 연결되지 않음 |
☑️ 2) 스스로 생성되었는지 여부
내부식별자
(Internal Identifier) | - 엔터티 내부에서 스스로 생성된 식별자 |
외부식별자
(Foreign Identifier) | - 다른 엔터티에서 온 식별자
- 다른 엔터티와 연결고리 역할 |
☑️ 3) 단일 속성의 여부
단일식별자
(Single Identifier) | - 하나의 속성으로 구성된 식별자 |
복합식별자
(Composite Identifier) | - 두 개 이상의 속성으로 구성된 식별자 |
☑️ 4) 대체 여부
원조식별자
(Original Identifier) | - 업무 프로세스에 존재하는 식별자
- 가공되지 않은 원래의 식별자(본질식별자) |
대리식별자
(Surrogate Identifier) | - 주식별자의 속성이 두 개 이상인 경우 그 속성들을 하나로 묶어서 사용하는 식별자(인조식별자) |
✅ 3. 강한 개체 vs 약한 개체
☑️ 1) 강한 개체
독립적으로 존재할 수 있는 엔터티
ex) 고객과 계좌 엔터티 중, 고객은 독립적으로 존재할 수 있다.
☑️ 2) 약한 개체
독립적으로 존재할 수 없는 엔터티
ex) 고객과 계좌 엔터티 중, 계좌는 독립적으로 존재할 수 없다. (고객에 의해 파생되는 엔터티)
✅ 4. 식별자 관계 vs 비식별자 관계
☑️ 1) 식별자 관계(Identification Relationship)
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 되는 관계이다.
주식별자는 반드시 존재해야 하므로(존재성) 부모 엔터티가 있어야 생성이 가능하다. 따라서, 자식 엔터티는 부모 엔터티에 의존적이다.
이때, 단일식별자인지 복합식별자인지에 따라 1:1 또는 1:N 관계가 결정된다.
☑️ 2) 비식별자 관계(Non-Identification Relationship)
부모 엔터티의 식별자가 자식 엔터티의 주식별자가 아닌 일반 속성이 되는 관계이다.
일반 속성의 값은 NULL이 될 수 있으므로 부모 엔터티가 없는 자식 엔터티의 생성이 가능하다. 따라서, 자식 엔터티가 존재하는 상태에서 부모 엔터티만 삭제할 수도 있다.
✅ 5. Key의 종류
논리 모델링에서의 식별자가 물리 모델링에서는 Key가 되는데 이를 Key의 특징에 따라 다음과 같이 분류한다.
☑️ 1) 기본키 (Primary Key)
- 엔터티를 대표할 수 있는 키
☑️ 2) 후보키 (Candidate Key)
- 유일성과 최소성을 만족하는 키
- 후보키들 중 하나가 기본키가 되고, 나머지를 대체키라고 부른다.
☑️ 3) 대체키 (Alternate Key)
- 여러 후보키 중 기본키가 아닌 키
☑️ 4) 슈퍼키 (Super Key)
- 유일성은 만족하지만 최소성은 만족하지 않는 키
ex) 학생 테이블에서 학번으로만 PK를 구성해도 되지만, (학번 + 이름)으로 구성한다면 슈퍼키이다.
☑️ 5) 외래키 (Foreign Key)
- 다른 테이블의 기본키를 참조하는 키(다른 테이블의 기본키에 존재하는 값만 입력될 수 있음)
- 참조 테이블은 하나 또는 여러 개 가능
Share article