오답노트

[SQLD] 식별자/비식별자 관계 그리고 정규화 본문

SQL

[SQLD] 식별자/비식별자 관계 그리고 정규화

권멋져 2023. 8. 21. 22:12

식별자와 비식별자

식별자

엔터티를 각각 구분할 수 있는 논리적인 이름을 식별자라고 한다.

언터티가 가지는 속성중 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재 해야한다.

 

 

주식별자 특징

  • 유일성
  • 최소성
  • 불변성
  • 존재성

식별자 관계와 비식별자 관계에 따른 식별자

식별자 관계

  • 부모 엔터티로부터 속성을 받아 자식엔터티의 주식별자로 사용하는 경우
  • 반드시 부모 엔터티가 생성되어야 자기 자신 엔터티 생성
  • 부모로부터 받은 속성을 자식 엔터티가 모두 사용하고 그것만을 주식별자로 사용하면 1:1 관계
  • 부모로부터 받은 속성 이외에 다른 부모로부터 받은 속성이나 스스로 가지고 있는 속성으로 주식별자를 구성하면 1:M 관계
  • 식별자 관계로만 관계를 구성하면 조인조건이 많아져 개발자 복잡성과 오류 가능성 유발
  • 실선으로 관계 표현

비식별자 관계

  • 부모 엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우
  • 약한 종속관계
  • 자식 주식별자 구성을 독립적으로 구성
  • 상속받은 주식별자 속성을 타엔터티에 차단 필요
  • 부모의 관계참여가 선택 관계
  • 비식별자 관계를 구성하면 많은 조인이 이루어져 복잡성 증가 및 성능 저하
  • 점선으로 표현

정규화

제1 정규형

  • 한 컬럼에 한 개의 Value 
  • 같은 종류의 Value
  • 각 컬럼명 중복없음
  • 컬럼 순서 상관없음

제2 정규형

  • 제1 정규형 만족
  • 부분적 종속이 없어야함 (기본키가 2개 이상인 경우 부분적 종속 발생) -> 엔터티 분리

sqld에서 정규화는 이쯤 알면된다 ㅋㅋ