Database ‐ 개념적 모델링 - woojin-playground/Backend-PlayGround GitHub Wiki

📚 엔티티

  • 엔티티란, 우리가 데이터를 저장하고 관리해야 할 대상을 말한다.
  • 구체적으로는 저장할 만한 가치가 있는 정보를 여러 개 가지고 있으면서 다른 것과 명확히 구분되는 유무형의 모든 것을 말한다.
  • 데이터의 성격과 증가 추이를 미리 파악하는 습관을 들여야 한다.

📚 속성과 식별자

  • 속성(Attribute)이란, 엔티티가 가지는 구체적인 특성이나 정보를 말한다.
  • 정의된 속성 중에서 특별한 역할을 하는 속성을 식별자(Identifier)라고 한다.
  • 이 식별자는 데이터베이스 테이블에서 기본키(Primary Key)가 된다.

📚 카디널리티와 참여도

  • 카디널리티(Cardinality)는 하나의 엔티티 인스턴스가 다른 엔티티 인스턴스와 몇 개나 관계를 맺을 수 있는지를 나타내는 수량 제약이다.
  • 1:1, 1:N, N:1, M:N이 있다.
  • 참여도(Optionality)는 한 엔티티 인스턴스가 관계에 반드시 참여해야 하는지, 아니면 참여하지 않을 수도 있는지를 결정한다.

📚 다대다 관계 해결 방법

  • 문제1. M:N 관계는 물리적으로 구현할 수 없다.
  • 문제2. 관계에 속한 데이터를 저장할 장소가 없다.
  • 이런 문제를 해결하려면 관계 자체를 엔티티로 승격시켜야 한다.
  • 이런 엔티티를 연관 엔티티라고 하는데 M:N관계를 나타내는 새로운 엔티티를 만들어 기존의 M:N관계를 2개의 1:N, N:1관계로 풀어내는 방식이다.

실무 팁 : M:N관계는 반드시 풀고, 필요한 속성을 찾는다.