포스트

논리적 모델링 - 참여도와 일대다 관계

논리적 모델링 - 참여도와 일대다 관계

논리적 모델링 - 관계

  • 개념적 모델링의 추성적인 관계는 논리적 모델링에서 외래 키를 통해 구체적으로 구현
  • 관계형 DB의 관계는 방향성이 없으며, 외래 키 하나를 통해 양방향으로 데이터를 조회 할 수 있음
  • 관계
    • 카디널리티: 한 테이블의 행이 다른 태이블의 행과 몇 개나 연결되는지를 나타냄
    • 참여도: 관계의 참여 여부

참여도

  • 참야도는 한 엔티티가 관계에 반드시 참여해야 하는지(필수적) 또는 참여하지 않아도 되는지(선택적)를 나타냄
  • 논리적 모델링에서는 외래 키 컬럼의 NULL 혀용 여부로 참여도를 구현
  • 외래 키가 있는 다(N)쪽 테이블의 참여도는 NULL 재약조건으로 간단히 제어할 수 있음
  • 반면, 외래 키가 없는 일(1)쪽 테이블의 필수 참여는 DB의 기본 제약만으로는 강제할 수 없으며, 보통 애플리케이션 계층에서 로직으로 처리
  • DB 제약으로 구현할 수 없더라도, ERD에는 원래의 비즈니스 규칙을 명확하게 표현해야 함

일대다(1:N) 다대일(N:1) 관계 - 외래키 위치

  • 외래 키는 반드시 다(N)쪽에 위치해야 함
  • 일(1)쪽에 외래키를 두면 제1 정규형 위반, 데이터 검색 및 수정의 어려움, 확장성 부재 등 심각한 문제가 발생하므로 절대 사용해선 안됨
  • 다(N)쪽에 외래 키를 두면 데이터의 원자성을 준수하면서 유연하고 확장성 있는 구조를 만들 수 있음
  • 두 테이블의 관계에서 외래 키가 있는 테이블을 자식 테이블, 외래 키가 없는 테이블을 부모 테이블이라 함
  • 외래 키가 다(N)쪽에 위치해야 하는 것은 선택이 아니라, RDB의 기본 제약(PK 유일성, FK의 단일 행 참조, 컬럼의 원자성)을 모두 만족시키는 유일하고 올바른 방법

일대다(1:N) 다대일(N:1) 관계 - 조인과 뻥튀기

  • 일대다(1:N): 기준 테이블의 행이 N개의 데이터만큼 복제되어 결과 행 수가 늘어나는 데이터 뻥튀기 현상이 발생할 수 있음
  • 다대일(N:1): 기준 테이블의 행 수가 늘어나지 않음

참고

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.