[database] ERD 표기 법 IE vs Barker

반응형
반응형

ERD를 표기하는데 자주 사용하는 표기법으로 IE표기 법과 Barker표기법이 있다고 한다.

엔티티, 속성, 관계(카니널리티), 관계(옵셔널리티)

엔티티

db라는게 현실에 존재한 것을 데이터화 시키는걸 말하는 걸로 봐서
엔티티라는건 그 데이터들의 조합을 뜻하는 것 같다는 느낌이다.
이것으로 보고 이 엔티티는 어떤 속성을 속성을 가졌는지, 어떤 값을 가졌는지 알 수 있다.

IE는 식별자와 일반속성이 구분되있는걸로 봐서
Barker같은 경우는 식별자와 일반 속성이 구분이 전혀 되지 않는다.
다만, #,*,o같은 문자로 어떤 값인지 대략적으로 알 수 있다.
* : 필수 o : 선택이라고 생각하면 된다. 즉, * 붙은 것은 notnull이 붙어있다고 한다.

관계

관계에는 1:1이냐 1:N 이냐 라는 관계가 존재한다.
다른 주제이긴 하지만 JPA에서 코드를 잠시만 확인하는게 주종관계를 이해하는게 좋을 것 같다.

@Entity
public class Author {
  @Id
  private Long userIdx;
  
  @ManyToOne
  private Memo memo;  
}

요게 Author과 memo의 관계다. 이것을 그림으로 그려보면

요런 그림을 그릴 수 있다.
즉 author과 memo는 다대일 관계라는 것을 알 수 있다.
여기서 생각할것이 어디가 부모 테이블인가라는 것이 중요할 수 도 있다. 어디가 부모 테이블일까?
다시 본론으로 돌아와서
IE 와 Barker에서는 어떻게 표시 할까?

요런식으로 표시한다. 내가 알기로는 왼쪽이 부모 테이블이고 오른쪽이 자식 테이블로 알 고 있긴하다.
얼핏 보기에는 비슷해 보이지만, IE버전은 + 같은 모양으로 표현되어지고 있다.
그에 반면에 Barker은 깨끗하다.

어디가 1쪽인지 N쪽인지에 대해서는 설명하지는 않겠다.

근데 관계라는게 항상 필수적이지만은 되지 않는다. 선택적인 관계일 수 도 있다.
예시가 생각이 나지 않나서 그건 어려울 것 같은데 아무튼 필수적인 관계와 선택적인 관계를 표시할 수 잇다.
위에 표시된건 필 수 적인 관계다.
그럼 선택적 관계는 어떻게 표시 할까?

IE같은 경우는 O 표시로 선택적인 관계인지 확인하고 Barker은 점선으로 선택적 관계로 확인 할 수 있다.
마지막으로

자식 테이블에 부모 테이블의 기본키를 받아서 그것을 바로 기본키와 외래키로 사용하고 싶을 수 도 있다.
이것을 식별 관계라 한다.
그러면 식별, 비식별 관계는 어떻게 표현 할까?

식별

비 식별

나도 몰랐는데 IE는 식별 관계로 계속 표시했고
Barker은 비식별 관계로 계속 표시했다.

더 놀라운 사실은 자식도 부모를 선택이 가능하다는 점이다.
즉,

요렇게도 그릴 수 있다는 점이다.

책을 보는데 특이하게도 식별 관계일때는 부모 선택, 전체 선택이 안되는 것 같다.
이건 내 생각인데 식별이라는게 자식 테이블 쪽에는 부모의 기본키가 PK,FK로 들어가는데 이것으로 봐서 
부모쪽은 100%필수 여야 된다는 생각을 해보았다.

추가 사항

상호 배타 관계
상호 포함 관계
배타 서브 타입
포함 서브 타입

상호 배타부터 포함 서브는 설명하는게 어려워서 그림만 그렸다.
공부하는데로 올릴 예정이다.

반응형

'sql' 카테고리의 다른 글

2022.03.08 정리  (0) 2022.03.08
FULL OUTER JOIN  (0) 2022.02.28
[database] ERD 표기 법 IE vs Barker  (0) 2022.02.13
[Learning SQL] 트랜잭션  (0) 2021.05.22
[Learning SQL] 내부 조인 vs 외부 조인  (0) 2021.05.12
[Learning SQL] 서브쿼리  (0) 2021.05.03

댓글(0)

Designed by JB FACTORY