[sql] 식별자

sesame·2021년 8월 17일
0

sql

목록 보기
22/24

식별자

하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성

특징

주식별자 – 유일성, 최소성, 불변성, 존재성
외부 식별자 – 참조 무결성 제약조건

분류

1) 대표성

주식별자
보조 식별자

2) 스스로 생성 여부

내부 식별자
외부 식별자

3) 속성의 수

단일 식별자
복합 식별자

4) 대체 여부

본질 식별자 – 업무에 의해 만들어지는 식별자
인조 식별자 – 원조 식별자가 복잡한 구성을 가지고 있기
때문에 인위적으로 만든 식별자
//속성의 수가 많아지지 않도록 한다


📋식별자 관계

자식 엔터티의 주식별자로 부모의 주식별자가 상속되는 경우를 말한다.

  • Null값 X
  • 1:1관계: 부모로부터 받은 속성을 자식 엔티티가 모두 사용하고 그것만으로 주식별자로 사용할 경우
  • 1:M 관계: 부모로부터 받은 속성, 다른 부모 엔티티에서 받은 속성, 스스로 가진 속성으로 주식별자가 구성된 경우

📋비식별자 관계

부모 엔티티로부터 속성을 받았지만 자식 엔티티의 주식별자로 사용하지 않고 일반적인 속성으로 사용하는 경우

비식별자 관계 사용 예

  • 자식 엔티티에서 받은 속성이 반드시 필수가 아니기에 부모 없는 자식이 생성될 수 있는 경우
  • 엔티티 별로 데이터의 생명주기(Life Cycle)를 다르게 관리할 경우
  • 여러 개의 엔티티가 하나의 엔티티로 통합되어 표현되었는데 각각의 엔티티가 별도의 관계를 가질 때
  • 자식 엔티티에서 별도의 주식별 자를 생성하는 것이 더 유리할 경우

🚨식별자 관계로만 설정할 경우의 문제점

  • 식별자 관계로 만 연결된 모델의 경우 주식별자 속성이 지속적으로 증가한다.
  • 주식별자 증가로 복잡성과 오류 가능성을 유발할 수 있다.

🚨비식별자 관계로만 설정할 경우의 문제점

  • 비식별자 관계로 설정할 경우 속성이 자식 엔티티로 상속되지 않는다.
  • 속성이 자식 엔티티로 상속되지 않아 부모 엔티티까지 조인되는 현상이 발생
  • 불필요한 조인이 발생되고 SQL 구문도 길어져 성능 저하 현상이 발생

식별자 관계와 비식별자관계 모델링
1) 비식별자관계 선택 프로세스

2) 식별자와 비식별자관계 비교

항목식별자 관계비식별자관계
목적강한 연결 관계 표현약한 연결 관계 표현
자식주식별자 영향자식 주식별자의 구성에 포함됨자식 일반 속성에 포함됨
표기법실선 표현점선 표현
연결 고려 사항- 반드시 부모 엔티티 종속
- 자식 주식별자 구성에 부모 주식별 자포함 필요
- 상속받은 주식별자 속성을 타 엔티티에 이전 필요
-약한 종속관계
- 자식 주식별자 구성을 독립적으로 구성
- 자식 주식별자 구성에 부모 주식별자 부분 필요
- 상속받은 주식별자 속성을 타 엔티티에 차단 필요
- 부모 쪽의 관계 참여가 선택 관계

3) 식별자와 비식별자를 적용한 데이터 모델

0개의 댓글