논리적 모델링

순동·2022년 4월 19일
0

📌 비즈니스 룰

데이터 모델링

  • Entity, attribute, relationship 파악으로 시작한다.
  • 비즈니스 룰(사업규칙)으로 정리한다.

비즈니스 룰이란 특정 조직이 운영되기 위해 따라야 하는 정책, 절차, 원칙들에 대한 간단명료한 설명이다.


📌 Entity, Attribute, Relationship 후보 찾기

  • 모든 명사Entity 후보다
  • 모든 동사Relationship 후보다
  • 하나의 으로 포현할 수 있는 명사Attribute 후보다

ex) 비즈니스 룰

  • 유저상품주문할 수 있다.

  • 동일한 주문 내역은 한 번의 배달로, 3일 안에 유저가 지정한 배송지에 전달 돼야 한다. 만약 그렇지 못할 시, 유저에게 최대한 빨리 알려줘야 한다.

  • 유저상품에 대한 평가 수 있다. 평가는 두 종류의 데이터 별점,줄 글을 통해 할 수 있다.

Bisiness Rule은 간단명료하면서도 필요한 내용을 모두 담고 있어야 한다.
AttributeRelationship들의 특성에 따라 모델링이 바뀔 수 있다.


📌 여러 값을 갖는 Attribute

하나의 으로 포현할 수 있는 명사Attribute 후보다

위 규칙에 대한 예외 경우에 대해 알아보자.

값으로 표현할 수 있는 명사여도 Attribute가 아니라 Entity로 만드는 경우이다.

  • 유저는 여러 개의 주소를 가질 수 있다.

📌 카디널리티(Cardinality)

카디널리티(Cardinality)란 Entity type A와 B 사이에서 A Entity 한 개가 B Entity 몇 개와 연결될 수 있고, B Entity 한 개가 A Entity 몇 개와 연결될 수 있는지를 나타낸다.

일대일, 일대다, 다대다로 나뉜다. Entity들 사이에 어떤 카디널리티가 있는지에 따라 모델링 하는 방법이 달라진다.

📝 1:1 일대일

하나의 A에 대해서 B도 하나 밖에 없고, 하나의 B에 대해서도 A가 하나 밖에 없다는 것을 의미한다. ex) 법적 부부 관계, 주민등록증

📝 1:N 일대다

하나의 A에 대해서 여러 개의 B가 있을 수 있고, 반대로 하나의 B에 대해서는 하나의 A만 있다는 것을 의미한다. ex) 쇼핑몰 리뷰는 한 명의 유저가 여러 개의 평가, 한 명의 선생님이 여러 수업

📝 M:N 다대다

하나의 A에 대해서 여러 개의 B가 있을 수 있고, 하나의 B에 대해서도 여러 개의 A가 있을 수 있다는 것을 의미한다. ex) 찜하기 기능

따라서 비즈니스 룰을 제대로 파악한 후 카디널리티를 파악해야 한다.


📌 카디널리티 ERM에서 표현

Crow's foot 표현법을 이용한다.
ERM에서 relationship은 선으로 표현한다.

카디널러티는 선 양 끝에 특정 표시를 하여 표현한다.

  • 관계에서 일(1)에 해당하는 Entity일 때

  • 관계에서 다수에 해당하는 Entity일 때

📝 1:1 일대일

📝 1:N 일대다

📝 M:N 다대다

  • 한 개의 Entity가 다른 Entity와 최대 몇 개까지 연결될 수 있는지
  • 한 개의 Entity가 다른 Entity와 최소 몇 개까지 연결될 수 있는지

relationship에서 최소 연결될 수 있는 숫자는 최대 연결될 수 있는 기호보다 선 안쪽에 표시한다.

  • 관계에서 하나도 없어도 되는 Entity일 때

  • 관계에서 적어도 하나는 있어야 하는 Entity일 때

✅ user와 review의 관계

user는 review가 없어도 되고, review는 반드시 한 명의 user가 있어야 한다. 최소 카디널러티와 최대 카디널러티를 합쳐서 표현하면 다음과 같다.


📌 일대일, 일대다 관계 모델링

✅ 1:1 일대일

1:1 일대일 관계가 있을 때는 두 Entity 중 하나 또는 둘 다에 Foreign Key를 추가해서 모델링 할 수 있다.

예를 들어 한 명의 유저는 하나의 결제용 카드만 등록할 수 있다고 하자.
card Entity에 user_id를 넣어준다.

유저가 항상 카드가 있어야만 할 때는 user 테이블에 Foreign Key를 설정하고, 카드가 있어도 되고 없어도 되는 경우에는 card 테이블에 Foreign Key를 설정한다.

✅ 1:N 일대다

예를 들어 한 명의 유저는 여러 개의 평개를 할 수 있지만, 하나의 평가는 하나의 유저만 가질 수 있다고 가정하자.

1:N 일대다 관계가 있을 경우엔 항상 다수 쪽에 해당하는 Entity에 Foreign Key를 만들어 준다. review 테이블에 user_id 컬럼을 추가한다.


📌 다대다 관계 모델링

유저와 상품 사이의 찜하기 관계를 예시로 사용한다.

M:N 다대다 관계에 있는 두 Entity는 테이블 두 개만으로 표현할 수 없다. 이 문제를 해결하기 위해 연결 테이블(Junction Table)을 사용한다. 관계를 저장하기 위한 테이블이다.

연결 테이블에는 위의 선 하나 하나를 저장한다.

다대다 관계에 있는 두 Entity는 새로운 Entity + 두 개의 일대다 관게로 모델링 한다.


0개의 댓글