ERD

aiden·2022년 5월 29일
0

ERD (Entity Relationship Diagram)
데이터 모델은 데이터베이스에 독립적이다
데이터 모델링은 건축물의 설계도를 그리는 작업과 같다
관계형 데이터 모델은 여러 가지 데이터 모델 중 가장 널리 사용되는 모델이며, "실체(entity), 속성(attribute), 관계(relationship)"로 구성된 ER diagram으로 표현된다
entity는 하나 이상의 식별자 (UIDL Unique Identifier)를 가져야 하며, UID가 없다면 Entity가 아니다
ER diagram 작성 시, 관계를 표현할 때에는 어떤 entity가 "주"인가를 잘 따져서 표현한다
관계의 종류에는 M:1, M:M, 1:1이 있는데, M:1인 경우가 대부분이다
M:M 관계는 상세 관계 모델링 단계에서 M:1로 분할 된다
1:1 관계는 대부분 하나의 entity로 표현가능한 경우가 많다
관계형 데이터베이스는 2차원 테이블로 데이터를 표현한다

Entity
Entity는 정의 가능한 사물 또는 개념을 의미합니다. 사람이나, 객체 혹은 개념이나 이벤트 등을 Entity로 둘 수 있습니다.
객체에는 가구나 자동차를 예시로 들 수 있을 것 같아요.
개념은 프로필이나 자기소개서 등이 있을 수 있겠고, 이벤트에는 거래 등이 있을 수 있습니다.

데이터베이스를 설계할 때, '테이블'이 Entity로 정의될 수 있습니다.Entity는 아래의 그림과 같이 표현됩니다.

Constraint - PK & NN
이번엔 제약조건을 표시해보도록 하겠습니다.관계에 대한 자세한 사항은 이 게시글을 참고하시면 됩니다.

  • 관계에 대한 설명을 조금 더 추가해볼게요.
    서점을 예시로 들어볼까요? 서점에서 새로운 책들을 구비해두려고 합니다.
    그럼 서점에서는 추가할 책들을 주문하겠죠. 
    이 데이터를 저장한다고 생각을 해보세요. 일단 눈에 띄는 개체라고 정의할 수 있는 건 서점과 책이죠.
    서점에서 책을 살 때 15000원짜리 A책을 10권 구매하고 20000만원짜리 B 책을 15권 구매한다고 했을 때,
    이 데이터들은 어느 개체에 포함될 수 있을까요?
    서점, 책 둘 다 포함하기 어려워요. 물론 할 수는 있겠지만 비효율적이구요. (정규화를 알아보세요)
    그래서 주문데이터를 저장하는 주문 개체를 하나 만듭니다.
    그럼 이 때 개체들 사이의 관계를 집중적으로 보면
    한 서점에서는 여러개의 주문을 넣을 수 있고, 하나의 주문에는 여러 가지의 책을 포함할 수 있어요.
    개체들 사이의 관계를 말하는 것이 바로 이번 섹션에서 다룰 부분이에요.
    더 자세한 내용을 아래에 추가해두겠습니다.

먼저 PKprimary key부터 표시해볼까요❓ 

🔑 PK primary key 
PK notation

대부분 위의 그림과 같이 열쇠의 그림으로 표시해줍니다.
이 번엔 NOT NULL을 표시해보도록 합시다 〰️ 

❌ NOT NULL

NN notation

Null 을 허용한다면, N을 적지 않으셔도 됩니다.

이번엔 가장 까다롭지만, 가장 중요한! Foreign Key에 대해 알아보도록 하겠습니다.

✔️ Constraint - FK
✈️ FK Foreign Key
Foreign key를 표시할 때에는 선을 사용하는데요. 

여기서 잠깐, ERD를 표시할 때에는 두가지를 표시한다고 했습니다.
바로 개체와 관계죠.
이 때 관계가 바로 FK입니다. 

일단, 관계를 어떻게 그려야 하는지 알아볼게요.

✍🏻 두 개체의 관계 - 선

먼저, 두 관계중 부모의 키를 PK로 받는지 안받는지에 따라서 선의 종류 (점 or 실) 가 다릅니다.

낯설지만 생각보다 간단한 개념인데요, 그림을 잘보시면 바로 이해하실 수 있어요.
Address 개체에서 address_id가 PK로 설정이 되어있는데 Store 개체가 address_id를 가지려고 합니다.

이 때 식별자 관계에서는 FK를 PK로 설정(🔑)을 했고,
비식별자 관계에서는 일반 속성(🔹)으로 가지고 온 것을 확인할 수 있습니다.

(FK를 PK로 사용할 수 있다는 점을 알고 있어야 조금 더 쉽게 이해할 수 있겠죠 ~)
참고로, FK를 PK로 지정할 때가 언제 있을까요?
하나의 예시로 자식 테이블에서 할아버지/할머니 테이블을 참조할 때가 있을 수 있어요.
물론, 상황에 따라 필요할 수도 있고 필요없을 수도 있습니다.

✍🏻 두 개체의 관계 - 선의 끝
Cardinality
Cardinality는 한 개체에서 발생할 수 있는 발생 횟수를 정의하며, 다른 개체에서 발생할 수 있는 발생 횟수와 연관됩니다.
1대1관계, 1대N관계, N대N 관계가 있죠.

✔️  One-to-One Cardinality

1:1 관계에서는 아래와 같이 표기합니다.
One-to-One Cardinality

✔️  One-to-Many Cardinality

1:N 관계에서는 아래와 같이 표기합니다.
여러개가 될 수 있는 개체에는 까마귀의 발과 같이 그려줍니다.이제, 왜 crow-feet라고도 불리는 지 아시겠죠 ❓

✔️  Many-to-Many Cardinality
N:M 관계에서는 아래와 같이 표기합니다.

Many-to-Many Cardinality

지금까지 Cardinality를 살펴보았는데요.
마지막으로 하나만 더 보고 마치겠습니다.

마지막으로, 필수참여 조건입니다 〰️ 
'|' 표시가 있는 곳은 반드시 있어야 하는 개체, 'O' 표시가 있다면 없어도 되는 개체입니다 !

inventory 개체가 없어도 store 개체는 있을 수 있고, store 개체가 없다면 inventory 개체도 있을 수 없습니다.

References
https://www.visual-paradigm.com/guide/data-modeling/what-is-entity-relationship-diagram/
https://mulmandu17.tistory.com/68

profile
웹/앱 백엔드 개발자

0개의 댓글