새소식

Study/Classes

[SQLD] 1-3. 식별자 Identifiers

  • -
728x90

패스트캠퍼스 강의와 이기적 기본서를 기반으로 공부합니다. 

1. 식별자의 개념

  • 엔터티를 대표할 수 있는 유일성을 만족하는 속성
  • 엔터티 안의 각 인스턴스를 구분할 수 있는 이름
  • e.g 고객번호, 상품번호, 주민등록번호, 계좌번호

데이터베이스 키의 종류

후보키 condidate key 유일성과 최소성을 만족하는 키
기본키 primary key 엔터티를 대표할 수 있는 키
슈퍼키 super key 유일성은 만족하지만 최소성을 만족하지 않는 키
대체키 alternate key 여러 개의 후보키 중에서 기본키를 선정하고 남은 키
외래키 foreign key 한 개 이상의 다른 테이블의 기본 키 필드를 가리키는 것
참조 무결성(referential integrity)를 확인하기 위해 사용
허용된 데이터 값만 데이터베이스에 저장하기 위해서 사용

식별자의 특징

  • 유일성 - 주식별자에 의해 엔터티 내의 모든 인스턴스가 유일하게 구분되어야 함
  • 최소성 - 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수여야 함
  • 불변성 - 주식별자가 특정 엔터티에 지정되면 값이 변하지 않아야 함
  • 존재성 - 주식별자가 지정되면 데이터값이 존재해야 함 (null 불가)

2. 식별자의 분류

대표성 여부 주식별자: 엔터티를 대표할 수 있어야함
보조식별자: 각 행을 구분할 수 있지만, 대표성 X, 참조관계연결 못함
스스로 생성 여부 내부식별자: 엔터티 내부에서 만들어지는 식별자
외부식별자: 타 엔터티와의 관계를 통해 받아오는 식별자 (foreign key)
속성의 수 단일식별자: 하나의 속성으로 구성
복합식별자: 둘 이상의 속성으로 구성
대체 여부 본질식별자:  업무(비즈니스 프로세스)에 의해 만들어지는 식별자
인조식별자: 인위적으로 만들어지는 식별자

식별자 도출 기준

  1. 업무에서 자주 이용되는 속성을 주식별자로 지정
  2. 이름으로 기술되는 것들은 가능하면 주식별자로 지정하지 않음 (명칭, 내역 등)
  3. 복합으로 주식별자를 구성할 경우 너무 많은 속성이 포함되지 않도록 함

3. 식별자관계 & 비식별자 관계의 결정

외부식별자: 다른 엔터티와의 관계를 통해 자식 쪽 엔터티에 생성된 속성, DB 생성 시 FK 역할

식별자관계

  • 자식엔터티에서 부모엔터티로부터 받은 외부식별자를 주식별자로 이용되는 경우
  • Null 값이 올 수 없으므로 부모엔터티가 생성되어야 자신의 엔터티가 생성되는 경우

비식별자관계

  • 자식엔터티와 부모엔터티가 연결되는 속성으로서만 이용 
  • 부모 없이 자식엔터티가 생성될 수 있음
  • 비식별자관계가 필요한 경우
    • 관계가 약할 때
    • 자식테이블의 독립 PK가 필요할 때 
    • SQL 복잡성이 증가, 개발 생산성이 하락할 때 
728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.