Study/Classes
[SQLD] 1-3. 식별자 Identifiers
RUMJIE 럼지
2023. 3. 4. 09:00
728x90
패스트캠퍼스 강의와 이기적 기본서를 기반으로 공부합니다.
1. 식별자의 개념
- 엔터티를 대표할 수 있는 유일성을 만족하는 속성
- 엔터티 안의 각 인스턴스를 구분할 수 있는 이름
- e.g 고객번호, 상품번호, 주민등록번호, 계좌번호
데이터베이스 키의 종류
후보키 condidate key | 유일성과 최소성을 만족하는 키 |
기본키 primary key | 엔터티를 대표할 수 있는 키 |
슈퍼키 super key | 유일성은 만족하지만 최소성을 만족하지 않는 키 |
대체키 alternate key | 여러 개의 후보키 중에서 기본키를 선정하고 남은 키 |
외래키 foreign key | 한 개 이상의 다른 테이블의 기본 키 필드를 가리키는 것 참조 무결성(referential integrity)를 확인하기 위해 사용 허용된 데이터 값만 데이터베이스에 저장하기 위해서 사용 |
식별자의 특징
- 유일성 - 주식별자에 의해 엔터티 내의 모든 인스턴스가 유일하게 구분되어야 함
- 최소성 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
- 불변성 - 주식별자가 특정 엔터티에 지정되면 값이 변하지 않아야 함
- 존재성 - 주식별자가 지정되면 데이터값이 존재해야 함 (null 불가)
2. 식별자의 분류
대표성 여부 | 주식별자: 엔터티를 대표할 수 있어야함 보조식별자: 각 행을 구분할 수 있지만, 대표성 X, 참조관계연결 못함 |
스스로 생성 여부 | 내부식별자: 엔터티 내부에서 만들어지는 식별자 외부식별자: 타 엔터티와의 관계를 통해 받아오는 식별자 (foreign key) |
속성의 수 | 단일식별자: 하나의 속성으로 구성 복합식별자: 둘 이상의 속성으로 구성 |
대체 여부 | 본질식별자: 업무(비즈니스 프로세스)에 의해 만들어지는 식별자 인조식별자: 인위적으로 만들어지는 식별자 |
식별자 도출 기준
- 업무에서 자주 이용되는 속성을 주식별자로 지정
- 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않음 (명칭, 내역 등)
- 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 함
3. 식별자관계 & 비식별자 관계의 결정
외부식별자: 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성된 속성, DB 생성 시 FK 역할
식별자관계
- 자식엔터티에서 부모엔터티로부터 받은 외부식별자를 주식별자로 이용되는 경우
- Null 값이 올 수 없으므로 부모엔터티가 생성되어야 자신의 엔터티가 생성되는 경우
비식별자관계
- 자식엔터티와 부모엔터티가 연결되는 속성으로서만 이용
- 부모 없이 자식엔터티가 생성될 수 있음
- 비식별자관계가 필요한 경우
- 관계가 약할 때
- 자식테이블의 독립 PK가 필요할 때
- SQL 복잡성이 증가, 개발 생산성이 하락할 때
728x90