본문 바로가기

개인공부 기록/기본 개념

관계형 데이터 베이스(1:1, 1:N, N:M)

관계형 데이터 베이스란?

데이터를 테이블 형태로 저장하는데 각 테이블의 열(Column)에는 속성이 행(Row)에는 항목이 저장되며 행과 행이 연결되어 1:1, 1:N, N:M의 관계를 맺을 수 있다. 엑셀 표에 데이터를 저장한다고 생각하면 이해하기 쉬울 것 같다.

 


1:1 관계(일대일 관계)

상대 엔티티와 반드시 단 하나의 관계를 가진다.

예를 들어 A라는 상품에 대한 정보 중 이름, 상품 사진 등은 A라는 상품 이외에는 관계를 맺을 수 없다. A이외의 다른 상품은 다른 상품만의 이름과 사진이 있기 때문이다.

 

1:N 관계(일대다 관계)

한쪽이 여러개의 객체를 가질 수 있다.

한 사람이 여러개의 휴대폰 번호를 가질 수는 있지만 여러 사람이 하나의 휴대폰 번호를 가질 수는 없다.

 

N:M관계 (다대다 관계)

양쪽이 모두 1:N의 관계를 가지는 것.

일상생활에서 쉽게 생각해 볼 수 있는 것은 알레르기 유발요인에 대한 정보일 것이다. 음식 A의 알레르기 유발 요인이 우유, 대두, 토마토 등으로 1:N 관계를 가질 수 있고 반대로 우 유또 한 음식 A, 음식 B, 음식 C 등 여러 음식에 들어갈 수 있기 때문에 1:N의 관계를 갖는다.

 

PK(Primary Key)

해당 테이블의 고유한 ID이다. 각 row는 PK를 가지며 이것을 통해 row를 찾거나 인용,참조된다.

 

FK(Forign Key)

관계형 데이터베이스에서 외래 키(외부 키, Foreign Key)는 한 테이블의 필드(attribute) 중 다른 테이블의 행(row)을 식별할 수 있는 키를 말한다. 

 

잘 모르겠다면..

PK = 참조 되는키, FK = 참조 하는키

product_info 테이블의 FK 가 Product 테이블의 PK를 참조한다. 항상 화살표 방향은 FK 에서 PK로 향한다.

 

처음에 공부했을때 1:1 1:N, N:M 관계를 파악하는 게 어려워서 하나의 사이트를 예시로 관계 파악해봤다.

 

관계 파악해보기

대상 사이트: 데스커 (책상 회사)

사이트는 1:1, 1:N 으로 구성되어 있다고 파악하였고, dbdiagram으로 표현하면 이렇게 된다고 생각하였다. 

**DESKS 카테고리부터 시작

먼저 DESKS 카테고리에는 여러 가지 DESK 카테고리가 있는데 그 관계는 1:N(일대다)이다. DESKS라는 카테고리는 여러 종류의 DESK카테고리(객체)를 갖기 때문이다.

 

목록에서 아무 상품이나 들어가게 되면 해당 제품의 정보가 나오는데 이름, 크기, 가격, 이미지 정보가 로딩된다.

그중 이름, 크기, 가격은 1:1 관계이고, 색상은 종류가 여러 개인데 그냥 색상이라는 카테고리로 1:1 관계인지 아니면 개별 색상으로 생각하여 1:N(일대다)라고 해야 될지 헷갈렸다. 혼자 고민할 때는 후자로 결론을 내렸다.

색상에 따라 다른 이미지를 불러와야 되는데 color_id 아래 제품이미지 카테고리를 만들어서 url에 저장하고 클릭 시 불러온다고 가정하고 작성하였다. (색상 Id와 IMG는 1:1 관계로)

N:M 관계를 추가한다면 어떤 것이 있을까?

책상을 원목으로 만든다고 생각하면 어떤 나무를 사용하였는지에 대한 정보를 추가하게되면 동일한 나무로 여러 제품을 만들 것이라 생각하기 때문에 N:M의 관계가 될 수 있을 것이다.

'개인공부 기록 > 기본 개념' 카테고리의 다른 글

HTTP  (0) 2022.07.31
Recent Posts
Popular Posts
Recent Comments