AI Bootcamp 스물한번째
Updated:
스물한번째 Diary
관계형 데이터베이스에서의 관계 (1:1 / 1:N / N:N)
관계형 데이터베이스(MySQL, SQLite 등)는 엔티티(객체)끼리 관계를 맺을 수 있다.
관계는 두 엔티티가 서로 관련이 있을 때를 말하는데, 다음과 같은 관계를 맺을 수 있다.
- 일대일 (1:1)
- 일대다 (1:N)
- 다대다 (N:N)
-
일대일 관계 (1:1)
1 : 1 관계란 어느 엔티티 쪽에서 상대 엔티티를 보더라도 반드시 단 하나씩 관계를 가지는 것을 말한다. -
일대다 관계 (1:N)
1 : N 관계는 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 의미한다.
이 관계는 매우 흔한 방식이며, 실제 데이터베이스를 설계할 때 자주 쓰이는 방식이다. -
다대다 관계 (N:N)
N : N 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계가 존재할 때 나타나는 모습이다.
즉, 서로가 서로를 1:N 관계로 보고 있는 것이다. -
대표키와 왜래키
table을 각 엔티티를 식별할 수 있는 대표키(PK, Primary Key)가 존재한다.
대표키는 중복되지 않는 값이다. (unique)
테이블간의 관계를 맺을 때, 흔히 대표키를 이용하여 관계를 맺는다.
예를 들어, 1 : N 관계의 대표적인 예로 게시글과 댓글을 생각해보겠다.
게시글은 여러 댓글들을 가지고 있으며, 댓글은 어떤 한 게시글에만 속해 있다.
따라서 게시글과 댓글은 1:N 관계라 할 수 있다.
게시글은 자신이 어떤 댓글들을 가지고 있는지 어떻게 알 수 있을까? 댓글 테이블을 설계할 때 컬럼에는 아래오 ㅏ같은 정보들이 있을 수 있다.
- 댓글 아이디(PK)
- 작성자 명
- 내용
- 작성일
여기서 어떤 게시글에 속해 있는지에 대한 정보가 필요하므로 하나의 컬럼이 더 필요한데, 이를 외래키(FK, Foreign Key)라 한다.
- 게시글 아이디 (FK)
즉, 게시글은 어떤 댓글들이 자신의 댓글들인지 알 필요 없고, 댓글만 자신이 어떤 게시글에 속하는지만 알면 1:N 관계를 성립할 수 있다.
그 역할이 외래키 이다.
그렇다면 N:N 관계에서는 어떨까?
여기서는 서로가 서로를 1:N, N:1 관계를 갖고 있기 때문에, 서로의 PK가 자신의 외래키 컬럼으로 갖고 있으면 된다.
일반적으로 N:N 관계는 두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블을 생성해서 관리한다.
포스팅이 굉장한 기간동안 쉬었다.
부트캠프의 저번섹션에서 머신러닝이라는 것을 처음으로 배웠는데, 정리의 시간도 필요했고, 아직도 정리중이긴 하지만..
많은 정보가 머리속에 들어와서 힘든 시간을 보냈다.
이번 섹션은 SQL 을 배우고 있는데 SQL 은 이렇게 부트캠프 포스팅을 올리고,
머신러닝, 딥러닝은 따로 카탈로그를 빼서 포스팅을 하겠다.
Leave a comment