1. 일대다 관계
: 하나의 게시판에는 여러 개의 게시글이 존재하고, 각각의 게시글은 하나의 게시판에 속해 있어야 한다.이와 같이 하나의 테이블이 다른 테이블에 속하는 관계를 일대다 관계라고 한다.
: 일대다 관계의 경우 정보의 중복을 최소화하면서 정보를 저장할 수 있다. 이와 같이 서로간의 불필요한 정보의 중복이 없는 상태를 정규화된 상태라고 한다.
: 여러 개의 테이블에 정규화된 상태로 일대다 관계를 표현할 수 있지만, 하나의 테이블에 중복된 정보를 담아 일대다 관계를 표현할 수도 있다.
1.1 여러 개의 테이블을 이용해 정규화된 상태로 일대다 관계를 표현하는 경우
: JOIN문을 이용해 읽기 성능은 하나의 테이블을 이용할 때보다 떨어지지만 정보를 수정할 때 효율성이 높고, 정보의 일관성이 깨질 가능성이 낮다.
1.2 하나의 테이블에 중복된 데이터들을 담아 일대다 관계를 표현하는 경우
: 데이터 조회 시 JOIN문을 사용할 필요가 줄어들어 읽기 성능은 향상되지만, 정보를 수정할 때 효율성이 떨어지고, 정보의 일관성이 깨질 가능성이 높다.
2. 다대다 관계
: 사용자가 게시글을 조회할 때, 사용자와 게시글의 관계가 다대다 관계의 대표적인 예시이다. 사용자는 여러 개의 글을 조회할 수 있고, 게시글은 여러 사용자에게 조회 당한다. 두 테이블이 서로 가수의 관계를 가지므로 다대다 관계라고 할 수 있다.
: 앞서 예시에서 다대다 관계를 게시글, 조회, 사용자 3개의 테이블을 이용해 조회 테이블과 사용자, 게시글 테이블을 각각 일대다 관계로 만들어 정규화 된 다대다 관계를 만들 수 있다.
: 반면 조회 테이블을 지우고, 사용자, 게시글 테이블만을 이용해 한 쪽 테이블 또는 양쪽 테이블에 각 테이블을 참조하는 ids 값을 만들어 넣어 다대다 관계를 만들 수도 있다.
: 앞선 정규화된 다대다 관계의 경우, 읽기 성능은 떨어지나 수정이 용이하고 불필요한 정보의 중복이 줄어든다는 장점이 있고, 후자의 경우 읽기 성능은 향상되나 수정이 어려워지고, 데이터를 ids 값만큼 더 저장해줘야 한다는 단점을 지닌다.
3. 일대일 관계
: 일대일 관계의 경우, 저장하는 정보를 하나의 테이블으로 묶기에는 의미적으로 맞지 않거나, 성능을 향상시키기 위해 2개의 테이블로 나눠서 사용해야 할 때 사용하게 된다.
'도서 > 모두를 위한 postgreSQL' 카테고리의 다른 글
Day17. 데이터 모델링과 인덱싱- 인덱싱이란? (0) | 2023.08.15 |
---|---|
Day16. 데이터 모델링과 인덱싱- 정규화와 비정규화 (0) | 2023.08.15 |
Day14. 다양한 상황에서의 데이터 결합 (0) | 2023.08.13 |
Day13. 여러 개의 테이블을 컬럼으로 연결하기 (0) | 2023.08.13 |
Day12. 여러 개의 테이블을 로우로 연결하기 (0) | 2023.08.10 |