#03. ERD(개체-관계 모델, Entity-Relationship Diagram) 작성, 1:N관계, M:N 관계 설명

2
post-thumbnail

안녕하세요. 알고리즘 문제 풀기 바빠서 가계부 프로젝트 관련 포스팅이 늦었습니다..! 이번 포스팅에서는 개체-관계 모델(ERD)을 설계하고, 이를 토대로 DB스키마와 테이블을 생성해보겠습니다.


1) ERD - 전체 설계도

제가 설계한 가계부 ERD입니다.
다이어그램은 draw.io에서 그렸습니다!

아래에서 각 객체에 대해 설명하고, 객체 간 관계에 대해서도 상세히 설명하겠습니다.

2) 객체 설명

✔ Member


Member 객체는 회원의 정보를 저장하는 객체입니다. 회원가입 시 해당 객체/DB에 member 정보가 저장됩니다.

✔ Record


Record 객체에는 각 회원이 적은 가계부 내용 (돈을 얼마 지출했고, 카테고리는 무엇이고, 언제 썼는지 등 ..)이 들어갑니다. 회원이 적은 레코드 하나하나가 모여 가계부 전체를 만듭니다.

✔ Category


Category 객체에는 교통비, 식비, 카페이용, 급여 등 지출 or 소득에 대한 다양한 카테고리 정보가 들어있습니다.

✔ Payment


Payment 객체에는 신용카드, 현금, 교통카드 등 지불 방식에 대한 정보가 들어있습니다.

✔ Memo


각 회원은 각 Record에 대한 Memo, 혹은 가계부 관련 Memo를 남길 수 있습니다. 이 메모를 저장할 Memo 객체가 필요합니다.

3) 객체 간 관계 설명 전, 알아야 할 개념

✔ 관계선

ERD에서 각 객체 간의 관계는 "관계선"으로 표시합니다. 이 때, 각 객체가 어떤 관계를 갖고 있는지가 중요합니다. 두 객체 간 관계의 종류에는 "일대다 관계", "다대일 관계", "다대다 관계" 가 있습니다. 객체 간 관계를 파악할 때(객체 A와 B의 관계가 어떤지 확인할 때 ), "몇 개의 A 객체가 몇 개의 B 객체를 가질 수 있는지" 생각하면 편합니다.

✔ 일대 다 관계(1:N 관계)

하나의 A가 여러 개의 B를 가질 수 있고, 하나의 B는 하나의 A에만 포함된다.

A와 B 두 객체 사이에서 하나의 A가 여러 개의 B를 가질 수 있고, B는 단 하나의 A에만 포함된다면 1:N 관계입니다. 예를 들어, 하나의 회원이 여러 개의 가계부 정보를 생성할 수 있지만, 하나의 가계부 정보는 단 한 명의 회원에게만 귀속됩니다. 이 경우 회원과 가계부 정보 간 관계는 1:N 관계입니다.

✔ 다대 다 관계(M:N 관계)

하나의 A가 여러 개의 B를 가질 수 있고, 하나의 B가 여러 개의 A를 가질 수 있다(포함될 수 있다).

A와 B 두 객체 사이에서 하나의 A가 여러 개의 B를 가질 수 있고, 하나의 B가 여러 개의 A를 가질 수 있다면(포함할 수 있다면) M:N 관계입니다. 제가 작성한 ERD에서는 하나의 회원이 여러 종류의 지불방식을 가질 수 있습니다.(체크카드, 신용카드 등) 반대로, "체크카드"라는 지불 방식을 가지는 회원도 여러명입니다. 한마디로, 하나의 회원이 체크카드, 신용카드 등 여러 종류의 지불방식을 가질 수 있고, 하나의 지불방식이 여러 명의 회원에게 귀속됩니다. 이러한 관계는 M:N 관계입니다.
두 객체가 다대다 관계라면 반드시 다대다 관계를 풀어줘야 합니다. 다대다 관계를 풀어주려면 두 객체(A, B) 사이에 관계를 풀어주는 A-B 객체를 두면 됩니다.

4) 객체 간 관계 설명(관계 예시)

앞서 설명한 1:N, M:N관계와 관련된 예시를 살펴봅시다.

✔ Member - Category

식비, 교통비 등의 카테고리는 여러 명의 회원이 똑같이 가질 수 있습니다. 반대로 한 회원은 여러 개의 카테고리를 가질 수 있습니다. 따라서 Member- Category 관계는 다대다관계입니다.

다대다관계는 Member-Category라는 새로운 객체를 두어 풀어주면 됩니다.!!

✔ Member - Payment

payment는 지불방식을 저장해 둔 객체입니다. 위에서 설명한 것처럼 Memeber-Payment 두 객체간 관계는 다대다 관계입니다.

Member-Payment라는 새로운 객체를 두어 다대다관계를 풀어줍니다.

✔ Member - Memo

한 회원은 여러 개의 메모를 적을 수 있고, 한 메모는 한 회원에게만 귀속되므로, 이는 1:N 관계입니다.

✔ Record - Payment

한 지불방식(체크카드, 신용카드 등..)은 여러 개의 가계부 내용(record)에 포함될 수 있고, 한 가계부 내용에서는 한 지불방식만 선택할 수 있습니다. 따라서 이 관계는 1:N 관계입니다.

✔ Record - Category

한 카테고리(교통비, 식비 등..)은 여러 개의 가계부 내용(record)에 포함될 수 있고, 한 가계부 내용에서는 한 카테고리만 선택할 수 있습니다. 따라서 이 관계는 1:N 관계입니다.


[참고사이트]
https://eyecandyzero.tistory.com/246
https://ict-nroo.tistory.com/127

0개의 댓글