나의 이야기

스프링

관계형 database식별 비식별 관계, 다대다 관계 해소

식별 관계
  • 부모 테이블의 기본키 또는 유니크 키자식 테이블이 자신의 기본키로 사용하는 관계
  • 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력 가능
  • 즉, 부모 데이터가 없다면 자식 데이터는 생길 수 없음

상품 등록시에 상품 사진을 등록하는 세 가지의 케이스이다.

- 상품 한개당 사진이 없을 경우
- 상품 한개당 사진이 한개 있을 경우
- 상품 한개당 사진이 없을 경우 여러개 있을 경우
=> 이런 경우 이 두테이블의 관계는 1:N 관계가 된다

이 경우 상품이 없으면 상품의 사진 테이블도 존재하지 않기에 위와 같이 관계선을 넣어주면 된다.

 

비 식별 관계
  • 부모 테이블기본키 또는 유니크 키를 자신의 기본키로 사용하지 않고, 외래 키로 사용하는 관계
  • 자식 데이터는 부모 데이터가 없어도 독립적으로 생성될 수 있음
  • 부모와의 의존성을 줄일 수 있기 때문에 조금 더 자유로운 데이터 생성과 수정이 가능

 

 

 


 

다대다 관계 해소

- 관계형 데이터를 생성하다 보면 다대다 관계가 생각보다 까다롭다는 것을 인지하게 된다.

- M:N관계란 양쪽 당사자 모두에게 1:M의 관계가 존재 할때 나타나는 것이다.

예시

 

- 위의 테이블은 PK가 각각 학번과 과목코드이다.

- 이렇게 다대다 관계를 가지게 된다면 서로 맞물려 기본키의 의미를 상실하고 데이터를 구분하기 힘들어진다

ex) 학생 테이블에서는 학번만으로 데이터를 구분할 수 없게 되고, 과목 테이블에서는 과목 코드만으로 데이터를 구분하기 힘들어진다

- 데이터를 변경할 시에도 여러군대를 직접 모두 변경해줘야 하기에 문제점이 발생한다


해결책

 

다대다 테이블을 풀기위해 새로운 테이블을 생성하여 1:N과 1:M테이블로 만들어주면 불필요한 데이터 중복을 피하며 데이터 검색 또는 변경시 보다 빠르고 수월하게 이용할 수 있다.