오답노트
[SQLD] 식별자/비식별자 관계 그리고 정규화 본문
식별자와 비식별자
식별자
엔터티를 각각 구분할 수 있는 논리적인 이름을 식별자라고 한다.
언터티가 가지는 속성중 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드시 하나의 유일한 식별자가 존재 해야한다.
주식별자 특징
- 유일성
- 최소성
- 불변성
- 존재성
식별자 관계와 비식별자 관계에 따른 식별자
식별자 관계
- 부모 엔터티로부터 속성을 받아 자식엔터티의 주식별자로 사용하는 경우
- 반드시 부모 엔터티가 생성되어야 자기 자신 엔터티 생성
- 부모로부터 받은 속성을 자식 엔터티가 모두 사용하고 그것만을 주식별자로 사용하면 1:1 관계
- 부모로부터 받은 속성 이외에 다른 부모로부터 받은 속성이나 스스로 가지고 있는 속성으로 주식별자를 구성하면 1:M 관계
- 식별자 관계로만 관계를 구성하면 조인조건이 많아져 개발자 복잡성과 오류 가능성 유발
- 실선으로 관계 표현
비식별자 관계
- 부모 엔터티로부터 속성을 받았지만 자식엔터티의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우
- 약한 종속관계
- 자식 주식별자 구성을 독립적으로 구성
- 상속받은 주식별자 속성을 타엔터티에 차단 필요
- 부모의 관계참여가 선택 관계
- 비식별자 관계를 구성하면 많은 조인이 이루어져 복잡성 증가 및 성능 저하
- 점선으로 표현
정규화
제1 정규형
- 한 컬럼에 한 개의 Value
- 같은 종류의 Value
- 각 컬럼명 중복없음
- 컬럼 순서 상관없음
제2 정규형
- 제1 정규형 만족
- 부분적 종속이 없어야함 (기본키가 2개 이상인 경우 부분적 종속 발생) -> 엔터티 분리
sqld에서 정규화는 이쯤 알면된다 ㅋㅋ