[database] ERD 표기 법 IE vs Barker
- sql
- 2022. 2. 13. 23:12
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 |
[Learning SQL] 트랜잭션 (0) | 2021.05.22 |
[Learning SQL] 내부 조인 vs 외부 조인 (0) | 2021.05.12 |
[Learning SQL] 서브쿼리 (0) | 2021.05.03 |