관심쟁이 영호
[#6] Spring Boot ㅣ 스프링 부트 ㅣ 도메인 모델과 테이블 설계 본문
오늘은 도메인 모델과 테이블 설계에 관한 강의를 수강할 예정이다.
도메인이란?
소프트웨어 공학에서 도메인 모델(domain model)은 행위와 데이터를 둘 다 아우르는 도메인의 개념 모델이다.
쉽게 말하자면,
데이터는 어떤형식으로 저장하는가?
데이터 CRUD는 어떻게 구상해야하나? 로 정리를 할 수 있을것이다.
이 단계부터 정확하고 확실하게 해야 나중에 힘들지 않다는 건, 누구나 알것이다.
건물을 거의 다 짓고, 소방 시설이나 수도 시설을 새로 뜯어고치는 건 너무나 힘든일이니까.
수강중인 강의는
경험이 많으신 현직 개발자님이 개발과정을 다루는 것이기 때문에,
배워두면 전반적인 실무 흐름을 파악할 수 있을것이다.
시작해보자.
1. 개발전체를 하나씩 모듈화 시킨다.
- 회원, 주문, 배송, 주문상품, 카테고리, 상품(도서, 음반, 영화)
- 이렇게 나누게 되면, 개발하는데 더욱 다루기가 쉬울테니까.
- 일 대 다, 다 대 다, 일 대 일 매칭을 시켜준다.
- 강의자료를 올릴 수는 없기에, 대충 그림으로 그려본다.
- 위와 같이 대충 그려보았다. 해당하는 설계를 도와주는 툴은 "StarUML"이라고 있는데, 사용하면 더 좋을 것이다. 근데 나는 컴퓨터 용량이 부족하여 삭제를 시킨 상태다..
- 그림을 살펴보면 회원:주문 = 1: * 관계이다. 회원 1명이 주문은 무한으로 할 수 있기 때문이다.
- 주문 1번에 배송은 1번만 이루어질 수 있다. (실제로는 여러번도 있는데, 1번으로 약속한다.)
2. 회원 엔티티 분석
- 조금더 Low한 레벨로 내려가면, 실제로 어떤 기능을 하는 지 살펴본다.
- 대충 그리자면,
이렇게 나타낼 수 있다. 이 박스 한개가 객체를 의미하며, 박스 내부에 있는 것은 해당 객체가 가지고 있는 것이다. 전부 필요한 내용이다. 1번에서 나온 모든 것이 이렇게 박스화 되어야 한다.(너무 자세히는 아니고 추상적으로)
- 너무 분석하지 않아도 된다. 지금은 따라가는 것이니까. 강의를 수강하고 나의 프로젝트할 때, 참고하여 진지하게 고민을 해보자.
※ 실무에서는 "다 : 다" 관계는 사용해서는 안된다고 하신다. 그리고 단방향 관계로 하자. 참고하자.
3. 회원 테이블 분석
- 모든 객체를 이렇게 의존관계와 객체 내용을 적어주어야 한다.
- 각자 테이블이 가지고 있는 내용과 의존관계를 표시한다.
- 이렇게 설계하는 것 또한 노하우가 필요하고 탄탄하게 하여야, 서비스하는데 장애가 생기지 않겠지..
4. 연관관계 매핑 분석
(1) 회원과 주문:
일대다, 다대일의 양방향 관계이다. 이 상황에는 연관관계에서 주인이 필요하다고 하신다.
이 경우에는 외래 키가 있는 주문을 연관관계의 주인으로 정하는 것이 좋다고 하신다.
(보통 다 측에 외래 키가 있다.)
(2) 주문상품과 주문:
다대일, 양방향 관계이다.
외래 키가 주문상품에 있으므로 주문상품이 연관관계의 주인이다.
더 있지만 여기까지만 다룬다.
느낌 파악 했으니까.
※ 그럼 여기서 왜 연관 관계에 신경을 쓰고, 주인을 정하는 지 궁금해 졌다.
다른 곳에서 찾아보니 이유를 예로 들면,
사람 - 회사 관계에서 회사를 알아 내기 위해서는,
사람 -> id알아내기 -> 회사와 비교하여 찾아내기
이렇게 해야하야 해서 진짜 안좋다고 한다.
해당 강의는 인프런의 "김영한" 개발자님의 강의 정리했습니다.
'Bank-End > 인프런- Spring 공부' 카테고리의 다른 글
[#7.3] Spring Boot ㅣ 스프링 부트 ㅣ Entity Class 개발3 (0) | 2021.04.08 |
---|---|
[#7.1] Spring Boot ㅣ 스프링 부트 ㅣ Entity Class 개발 (0) | 2021.04.06 |
[#5] Spring Boot ㅣ 스프링 부트 ㅣ개발 요구사항 분석 ㅣ 개발 시작 (0) | 2021.04.01 |
[#4.1] Spring Boot ㅣ 스프링 부트 ㅣ JPA, DB설정 및 동작확인 (0) | 2021.03.30 |
[#3] Spring Boot ㅣ 스프링 부트 ㅣ H2 데이터베이스 설치 (0) | 2021.03.29 |