AI Bootcamp 스물한번째

Updated:

AI Bootcamp

스물한번째 Diary


관계형 데이터베이스에서의 관계 (1:1 / 1:N / N:N)

관계형 데이터베이스(MySQL, SQLite 등)는 엔티티(객체)끼리 관계를 맺을 수 있다.
관계는 두 엔티티가 서로 관련이 있을 때를 말하는데, 다음과 같은 관계를 맺을 수 있다.

  • 일대일 (1:1)
  • 일대다 (1:N)
  • 다대다 (N:N)
  1. 일대일 관계 (1:1)
    1 : 1 관계란 어느 엔티티 쪽에서 상대 엔티티를 보더라도 반드시 단 하나씩 관계를 가지는 것을 말한다.

  2. 일대다 관계 (1:N)
    1 : N 관계는 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것을 의미한다.
    이 관계는 매우 흔한 방식이며, 실제 데이터베이스를 설계할 때 자주 쓰이는 방식이다.

  3. 다대다 관계 (N:N)
    N : N 관계는 관계를 가진 양쪽 엔티티 모두에서 1:N 관계가 존재할 때 나타나는 모습이다.
    즉, 서로가 서로를 1:N 관계로 보고 있는 것이다.

  4. 대표키와 왜래키
    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