DB

    [DB] 1:1 관계 설계

    [DB] 1:1 관계 설계

    🔍 1:1 관계 1:1 관계란 각 테이블에서 하나씩 관계를 가지는 것을 의미한다. 일부일처제인 혼인 제도에서 남자는 한 여자와 한 여자는 한 남자와 밖에 결혼할 수 없는 경우를 예로 들 수 있다. 🔍 실습 1:1 관계는 실질적으로 적용하면 어려울 수 있다. 다음과 같은 상황을 생각해보자. 파일을 건별로 파일철에 정리한다고 해보자. 파일철과 파일들(건수)은 1 : m관계를 가진다. 이 때 건정보별로 잘 정리하기 위해서 종류 별로 나눈다고 가정하면 다음과 같이 건정보1, 건정보2, 건정보3처럼 여러가지 타입이 나올 수 있다. 이 때 1:1 관계를 이용하면 깔끔하게 정리할 수 있다. 다음과 같이 공통 특성을 분리하고 테이블명을 추가하여 연결시키면 된다.

    [DB] 테이블의 M:N 설계

    [DB] 테이블의 M:N 설계

    🔍 M:N 관계 두 개의 테이블에서 1 : M 관계가 양쪽에서 모두 나타날 때 이를 M : N 관계라고 한다. 이 관계는 선천적으로 테이블의 관계까 없으며, 비즈니스 로직 등으로 어떤 관계를 맺어줌으로써 관계가 형성된다. 🔍 M:N관계의 문제점 개념상으로 다음과 같이 M : N 관계를 표현하는 것이 가능하다. 하지만 이 관계를 풀어서 표현하면 다음과 같다. 즉, 학생, 과목 테이블의 PK 컬럼인 ID가 중복이 되어버린다. 따라서 M : N관계에서는 양쪽 테이블 모두에서 pk중복이 일어나기 때문에 이를 해결할 방법이 필요하다. 🔍 M:N관계 설계 이런 M:N 관계를 해결하기 위해 또 하나의 테이블을 도입할 수 있다. 위와 같은 모델에서 수강 테이블과 다른 테이블의 관계 테이블이 생성될 수 있다. 그러기 위..

    [JPA] 연관관계의 주인이 '다'쪽에 있는 이유

    [JPA] 연관관계의 주인이 '다'쪽에 있는 이유

    연관관계의 주인이 '다'쪽에 있는 이유에 대해 살펴보자. 이를 위해 먼저 객체지향세계와 DB의 차이에 대해 알아야 한다. 🔍 객체지향과 DB, 연관관계의 주인이 필요한 이유 Member와 Team이라는 클래스 또는 테이블이 있다고 해보자. 여기서 이 둘은 다대일 단방향 관계이다. 객체지향에서 Member Team은 다음과 같이 표현될 수 있다. public class Member { int id; String memberName; Team team; } public class Team { int id; String teamName; } RDBMS에서는 다음과 같이 표현이 된다. DB와 객체지향의 큰 차이점은 객체지향 프로그래밍에서는 Member에서 Team으로의 조회는 가능하지만, Team에서는 Mem..