Computer Science

[CS / DataBase] 관계 유형(1:1 1:N N:M)

마볼링 2022. 6. 26. 01:16

데이터베이스 관계

  • 관계형 데이터베이스(RDBMS)는 엔티티끼리 관계를 맺을 수 있다
  • 엔티티(Entitiy) : DB에 표현하려고 하는 유형, 무형의 객체로서 서로 구별되는 것

 

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

  • 어느 엔티티 쪽에서 상대 엔티티와 반드시 단 하나의 관계를 가지는 것
  • 보안 목적, 대형 테이블 분할 및 기타 다양한 특정 목적으로 사용될 수 있음

[ 예시 ]

  • 다음과 같이 Users 테이블과 Phonebook 테이블이 있다고 가정한다.
  • Users 테이블은 ID, name, phone_id를 가지고 있다.
  • 이 중 phone_id는 외래키(foreign key)로써, Phonebook 테이블의 ID 와 연결되어 있다.
  • Phonebook 테이블은 ID와 phone_number를 가지고 있다.
  • 각 전화번호가 단 한 명의 유저와 연결되어 있고, 그 반대도 동일하다면, Users 테이블과 Phonebook 테이블은 1:1 관계(One-to-one relationship)이다.
  • 그러나 1:1 관계는 자주 사용하지 않는다.
  • 1:1로 나타낼 수 있는 관계라면 Users 테이블에 phone_id를 대신해 phone_number를 직접 저장하는 게 나을 수 있다.

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

  • 한 쪽 엔티티가 관계를 맺은 엔티티 쪽의 여러 객체를 가질 수 있는 것
  • N:M 관계처럼 새로운 테이블을 만들지 않음
  • 예시 부모-자식

  • 여러 명의 자식(N)의 입장에서 한 쌍의 부모(1)중 어떤 부모에 속해 있는지 표현해야하므로 부모 테이블의 PK를 자식 테이블에 FK로 직업 넣어 관계를 표현한다.
    • PK(Primary Key) : 각 엔티티를 식별할 수 있는 대표키, 테이블에서 중복되지 않은 값(Unique), Null 불가능
    • FK(Foreign Key) : 다른 테이블의 기본키를 참조, 모든 필드는 참조하는 기본키와 동일한 도메인(값의 종류&범위)을 갖는다. 모든 필드 값은 참조하는 기본키와 동일하거나 null 일 수 있다.

[ 예시 ]

  • Users 테이블과 Phonebook 테이블의 관계를 다음과 같이 가정한다.
  • 이 구조에서는 한 명의 유저가 여러 전화번호를 가질 수 있다.
  • 그러나 여러 명의 유저가 하나의 전화번호를 가질 수는 없다.
  • 이런 1:N(일대다) 관계는 관계형 데이터베이스에서 가장 많이 사용한다.

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

  • 관계를 가진 양쪽 엔티티 모두에서 1:N 관계를 가지는 것
  • N:M관계는 서로가 서로를 1:N, 1:M관계로 갖고 있기 때문에, 서로의 PK를 자신의 FK 컬럼으로 가지면 된다
  • 일반적으로 N:M 관계는 두 테이블의 대표키를 컬럼으로 갖는 또 다른 테이블을 생성해서 관리

[ 예시 ]

 

  • customer_package 테이블에서는 고객 한 명이 여러 개의 여행 상품을 가질 수 있고, 여행 상품 하나가 여러 개의 고객을 가질 수 있다.
  • customer_package 테이블은 customer_id와 package_id를 묶어주는 역할이다.
  • 이 테이블을 통해 어떤 고객이 몇 개의 여행 상품을 구매했는지 또는, 어떤 여행 상품이 몇 명의 고객을 가지고 있는지 등을 확인할 수 있다.
  • 이렇게 조인 테이블을 생성하더라도, 조인 테이블을 위한 기본키(여기서는 ID)는 반드시 있어야 한다.

참조

 

[DB] 1:1, 1:N, N:M 관계

관계형 데이터베이스(Oracle, MySQL, MS-SQL, SQLite 등등)는 엔티티끼리 관계를 맺을 수 있어서 관계형 DB라는 이름이 붙었다.엔티티(Entity) : DataBase에 표현하려고 하는 유형, 무형의 객체로서 서로 구별

velog.io

 

[SQL] 디자인의 3가지 관계 유형

관계형 데이터베이스 디자인에는 세 가지 유형의 관계가 있다. One-to-One One-to-Many (Many-to-One) Many-to-Many One-to-One 테이블 A의 행은 테이블 B에서 일치하는 행을 하나만 가질 수 있으며 그 반대의 경..

reference-m1.tistory.com

 

 

관계형 데이터베이스 설계 (관계 종류 1:1 / 1:M / N:M ) - 하나몬

⚡️ 스키마(Schema) & 쿼리 디자인(Query Design) ❗️스키마(schema)란? 스키마란 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것을 말한다

hanamon.kr