Skip to content

3. 데이터 모델링

이건창 edited this page May 11, 2024 · 3 revisions

데이터 모델링

데이터 모델링에서 집중한 일

객체 모델링과 데이터 모델링의 차이점은 어디에 저장이 되는가이다. 객체는 메모리에 적재되어 생성 소멸에 자유롭지만 데이터는 영속화되어 고정된 크기를 영구적으로 차지하게 되어 부담으로 이어지게 된다. 이런 문제를 해결하기 위해 정규화를 통해 인지 부조화가 없을 정도의 중복 제거를 진행했다.

데이터 모델링

객체를 기반으로 중복된 데이터를 제거하고 연관된 데이터끼리 묶은 다음 관리하기 어려운 다대다를 풀어줬다. 다개다를 풀어주면서 식별자를 노출할까 고민했지만, 노출하지 않았다. 식별자를 가지고 수행할 일이 없다고 생각했다.

---
title: 이달의 민족
---

erDiagram

	royal_member {
		long shop_id
		long member_id
	}

	shop {
		long id pk
		string name
		long boss_id
	}

	member {
		long id pk
		string name
	}

	published_coupon_book {
		long shop_id
		long coupon_id
	}

    handout_coupon_book {
        long shop_id
        long coupon_id
    }

    event_coupon_book {
        long shop_id
        long coupon_id
        long event_id
    }

    coupon {
		long id pk
		long shop_id
		string name
		string description
		string type
		int amount
	}	

	members_coupon_book {
		long member_id
		long coupon_id
		string status
	}

	royal_member }o--|| member : contain
	royal_member }o--|| shop : manage
	members_coupon_book ||--o{ coupon : contains
	members_coupon_book ||--o{ member : have
    handout_coupon_book ||--o{ shop : have
    handout_coupon_book ||--o{ coupon : contains
	published_coupon_book ||--o{ shop : have
	published_coupon_book ||--o{ coupon : contains

    event_coupon_book ||--o{ shop : have
    event_coupon_book ||--o{ coupon : contains
Loading

마치면서

시작은 헥사고날 아키텍처이지만 객체 모델링으로 끝나버렸다. 헥사고날 아키텍처를 위한 초석이라 생각해주면 좋겠다. 다음에는 패키지 구조와 함께 어떻게 격리를 진행했는지, 영속성 계층을 어떻게 관리 할 수 있을지에 대한 고민을 해보겠다. 그럼 안녕.