논리적모델링 (Logical Modeling)

MANG·2024년 6월 19일
post-thumbnail

논리적 모델링: 데이터 모델링의 기본

비즈니스 룰

비즈니스 룰은 특정 조직이 운영되기 위해 따라야 하는 정책, 절차, 원칙에 대한 간단 명료한 설명입니다. 예를 들어, 온라인 쇼핑몰 코팡의 비즈니스 룰을 생각해보면 다음과 같은 정책들을 정할 수 있습니다:

  • 유저는 상품을 주문할 수 있다. 하나의 주문에는 최대 10개의 상품까지만 가능하다.
  • 동일한 주문 내역은 한 번의 배달로, 3일 안에 유저가 지정한 배송지에 전달돼야 한다. 그렇지 못할 시 유저에게 최대한 빨리 알려줘야 한다.
  • 유저는 상품에 대한 평가를 줄 수 있다. 평가는 1~5 사이 자연수의 별점과 200자 이내의 글로 할 수 있다.

비즈니스 룰은 데이터 모델링의 핵심 기반이 되기 때문에, 기획자는 최대한 간단명료하게 만들고, 개발자는 이를 정확하게 이해하는 것이 중요합니다.

Entity, Relationship, Attribute 후보 찾기

비즈니스 룰이 있을 때, Entity, Attribute, Relationship을 찾는 기본 원칙은 다음과 같습니다:

  1. 모든 명사는 Entity 후보입니다.
  2. 모든 동사는 Relationship 후보입니다.
  3. 하나의 "값"으로 표현할 수 있는 명사는 attribute 후보입니다.

위 원칙을 사용하여 비즈니스 룰에서 ERM 초안을 만들 수 있습니다. 예를 들어, 코팡의 비즈니스 룰을 기반으로 하면 다음과 같이 ERM을 만들 수 있습니다:

  • 유저는 상품을 주문할 수 있다.
  • 주문에는 여러 상품이 포함될 수 있다.

Attribute 후보 찾기 예외 경우

기본 원칙에는 예외가 있습니다. 하나의 값으로 표현할 수 있더라도, 하나의 Entity가 여러 개의 값을 가져야 하는 경우입니다. 예를 들어, 한 유저가 여러 개의 주소를 가질 수 있습니다. 이 경우, 주소를 컬럼으로 나누기보다는 새로운 테이블(Entity)로 만들어야 합니다. 이렇게 하면 NULL이 많이 생기지 않고, 조회가 비효율적이지 않게 됩니다.

카디널리티

카디널리티는 두 Entity Type 사이 관계에서 한 종류의 Entity가 다른 종류의 Entity 몇 개에 대해서 관계를 맺을 수 있는지를 나타내는 개념입니다.

1:1 관계

1:1 관계는 A Entity 하나가 B Entity 하나에만 연결될 수 있는 관계입니다. 예를 들어, 법적 부부 관계나 시민과 주민등록증 관계가 있습니다.

1:N 관계

1:N 관계는 A Entity 하나가 B Entity 여러 개에 연결될 수 있고, B Entity는 A Entity 하나에만 연결될 수 있는 관계입니다. 예를 들어, 쇼핑몰 사이트에서 유저와 평가의 관계, 선생님과 수업의 관계가 있습니다.

M:N 관계

M:N 관계는 A Entity 하나가 B Entity 여러 개에 연결될 수 있고, B Entity 하나도 A Entity 여러 개에 연결될 수 있는 관계입니다. 예를 들어, 유저와 상품 사이 찜하기 관계, 학생과 수업의 수강 관계가 있습니다.

최소 카디널리티

최대 카디널리티 외에 최소 카디널리티도 중요합니다. 최소 카디널리티는 특정 관계에서 각 Entity가 하나도 없어도 되는지, 아니면 최소한 하나가 있어야 하는지를 나타냅니다.

카디널리티 정하기

카디널리티는 비즈니스 룰을 통해 결정됩니다. 예를 들어, 유저와 프로필 Entity가 있을 때, 페이스북에서는 유저가 하나의 프로필만 갖기 때문에 1:1 관계가 있고, 넷플릭스에서는 유저가 여러 개의 프로필을 가질 수 있기 때문에 1:N 관계가 있습니다.

카디널리티 ERM에서 표현하기

ERM에서 카디널리티를 표현할 때, "일"에 해당하는 Entity 쪽에는 수직선을 사용하고, "다"에 해당하는 Entity 쪽에는 선 세 개를 사용합니다. 최소 카디널리티는 최대 카디널리티보다 선 안쪽에 표시합니다.

ERD

ERM을 사용하여 데이터베이스 구조를 파악할 수 있습니다. 이를 통해 데이터의 흐름을 직관적으로 파악하고, 데이터베이스를 설명하거나 파악할 때 유용하게 사용할 수 있습니다.

관계 모델링

1:1 관계 모델링

1:1 관계에서는 둘 중 하나, 또는 둘 다에 Foreign Key를 추가합니다. 예를 들어, 코팡에서 한 유저는 하나의 결제용 카드만 등록할 수 있습니다. 이때 Foreign Key를 추가하여 관계를 표현합니다. 카드는 유저가 없어도 되지만, 유저는 항상 카드가 있어야 하므로 card 테이블에 Foreign Key를 추가합니다.

1:N 관계 모델링

1:N 관계에서는 다수 쪽에 Foreign Key를 추가합니다. 예를 들어, 한 유저는 여러 개의 평가를 가질 수 있지만, 하나의 평가는 하나의 유저만 가질 수 있습니다. 이때 Foreign Key를 review 테이블에 추가하여 관계를 표현합니다.

M:N 관계 모델링

M:N 관계에서는 연결 테이블(Junction Table)을 사용합니다. 예를 들어, 코팡의 유저는 여러 개의 상품을 찜할 수 있고, 상품도 여러 유저에게 찜받을 수 있습니다. 이때 연결 테이블을 만들어 Foreign Key를 추가하여 관계를 표현합니다.

ERM 활용

ERM은 데이터베이스 구조를 만들 때뿐만 아니라, 이미 사용 중인 데이터베이스를 파악하는 데도 사용할 수 있습니다. 예를 들어, 코팡 데이터베이스를 ERM으로 표현하면, 데이터의 흐름과 관계를 직관적으로 파악할 수 있습니다. 이를 통해 데이터베이스를 설명하거나 파악할 때 유용하게 사용할 수 있습니다.

profile
대학생

0개의 댓글