본문 바로가기

카테고리 없음

erd 기초 다지기

회사에서 erd를 그리는데 자꾸 막히던차에 erd 개념을 정리할만한 좋은 영상을 찾았다. 

https://youtu.be/QpdhBUYk7Kk?si=B3qvGnE-PqJvKHHv 

 

 

erd란?

Entity Relationship Diagrams

 

엔티티 - 엑셀에서 행에 해당

어트리뷰트(컬럼) - 엑셀에서 열에 해당

 

Cardinality

사전적 의미가 너무 어렵다...

erd 그릴 때 엔티티 사이의 관계를 표시하는 관계선(작대기+기호) 정도로 생각하련다.

 

관계를 생각할 때 고려할것 

특정한 엔티티 1개가 존재한다고 가정했을 때, 다른 엔티티에 가질 수 있는 최대 개수는? 최소 갯수는? 

ex) 고객과 주문의 경우 

특정 고객 1명이 가질 수 있는 최대 주문 개수는 무한대(여러개)

특정 고객 1명이 가질 수 있는 최소 주문 개수는? 0개 

그러므로 고객을 기준으로 했을 떄 고객과의 관계 

 

주문 1개가 가질 수 있는 최대 고객의 갯수 1명

주문 1개가 가질 수 있는 최소 고객의 갯수 1명

그러므로 주문 기준으로 했을 때 고객과의 관계 

ERD 그릴 땐 이 두개를 합쳐서 표시하면 된다. 

그리고 관계선의 양 꼭다리는 각각의 pk(고객 pk, 주문 pk) 에 오도록 조정하면 된다. 

 

 

 

 

 

pk의 조건 

고유해야한다.

변하지 않아야 한다.

각각의 꼭 엔티티는 pk를 하나 가져야한다. 

 

fk란? 

엔티티 A의 pk를 엔티티B의 어트리뷰트로 쓰고 싶은데, A와 B의 어트리뷰트가 연동됐으면 좋겠는 경우 사용.

 

Composite pk

두개이상의 어트리뷰트가 결합하여 하나의 pk가 되는 것.

결합하는 어트리뷰트를 가능한 최소화해야한다. 

그냥 새로 pk를 만들면 안되나? <- 그건 상황에 따라 개발자가 판단 

 

브릿지 테이블

엔티티 두개를 관계선만으로 연결했더니 엔티티사이에 일어나는 상호작용을 충분히 기록할 수 없을 때 

두 엔티티를 이어주기 위해 사용

ex) 고객과 제품 엔티티와의 관계. 

고객은 제품을 0개, 혹은 여러개 가질 수 있고, 제품도 고객을 0명, 혹은 여러명 가질 수 있음

그런데 이 두 엔티티는 다이렉트로 관계를 맺을 수 없음. 

고객이 제품을 언제 구매했는지, 한번에 제품을 한번에 여러개 구매를 한건지, 아니면 여러번에 걸쳐서 구매한건지 알 수가 없음. 이 둘을 이어주는 order 테이블을 만들어서 둘 사이에 일어나는 상호작용을 더 상세히 기록할 수 있음.

 

 

더 예쁘게 정리하고 싶지만 기력이 없다...