카디널리티 관계 유형

2025. 9. 29. 17:15·데이터 분석/06. 데이터 모델링

카디널리티란?

1. 개념

카디널리티는 한 엔터티(Entity)의 한 개체가 다른 엔터티의 몇 개체와 연결될 수 있는지를 나타내는 관계의 수.
→ 즉, 두 엔터티가 어떤 방식으로 연결되는지를 보여준다.


2. 카디널리티의 주요 종류

(1) 1:1 (일대일)

  • 두 엔터티 간 각 개체가 서로 하나씩만 연결될 수 있는 관계
  • 예시:
    • 한 시민 ↔ 하나의 주민등록증

특징: 주로 식별 정보나 고유 관계에서 사용
예: 사용자 프로필, 여권, 차량등록증 등

 


(2) 1:N (일대다)

  • A 엔터티의 하나가 B 엔터티의 여러 개와 연결될 수 있음
  • 반대로, B 엔터티의 하나는 A 엔터티 하나에만 연결됨
  • 예시:
    • 한 명의 선생님 ↔ 여러 수업
    • 단, 한 수업은 한 명의 선생님만 담당

특징: 가장 흔히 등장하는 관계
예: 고객 ↔ 주문, 카테고리 ↔ 상품


(3) M:N (다대다)

  • A 엔터티의 하나가 B 엔터티의 여러 개와 연결
  • 동시에 B 엔터티의 하나도 A 엔터티의 여러 개와 연결
  • 예시:
    • 한 유저 ↔ 여러 상품 찜 가능
    • 하나의 상품 ↔ 여러 유저가 찜 가능

특징: 중간 테이블(Bridge Table)을 사용해 1:N + 1:N 구조로 풀어내야 함
예: 학생 ↔ 강의, 회원 ↔ 쿠폰

 


3. 카디널리티를 결정하는 기준

  • 카디널리티는 어떤 엔터티를 사용하냐보다
    엔터티를 어떻게 사용하고싶은지에 따라 결정되고 비즈니스 룰을 사용해서 알아내야한다.
  • 동일한 엔터티라도 운영 정책이나 요구사항에 따라 관계가 달라질 수 있습니다.

예시:

  • "한 명의 유저가 한 번에 한 개의 장바구니만 가질 수 있다." → 1:1
  • "한 명의 유저가 여러 개의 장바구니를 가질 수 있다." → 1:N

Crow's foot 표현법 : 카디널리티 ERM에서 나타내기

  • 한개의 Entity가 다른 Entity와 최대 몇개까지 연결될 수 있는가?

  • 한개의 Entity가 다른 Entity와 최소 몇개까지 연결될 수 있는가?

예를들어 유저와 리뷰 entity가 있다고 가정하자

유저는 하나의 평가도 안남겨도 되지만 리뷰는 꼭 하나의 유저가 있어야한다

  • 이걸 ERM에서 어떻게 나타낼까?
    • relationship에서 최소 카디널리티는 최대 카디널리티 기호보다 선 안쪽에 표시한다
    • 관계에서 하나도 없어도 되는 경우는 : o
    • 관계에서 적어도 하나는 있어야 하는 경우 : |

최소 카디널리티

 

일대다의 관계까지 표현한 최대 카디널리티


SQL에서 NULL을 다룰 때 기억해야할 4가지

  • 일반 연산
    • NULL이 포함된 연산 결과는 항상 NULL이 됩니다.
    • 예: NULL + 10 → NULL
  • 비교 연산
    • NULL은 NULL끼리도 같다고 판단되지 않습니다.
    • 따라서 = 대신 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
  • 집계 함수
    • SUM, AVG 등 집계 함수는 NULL을 계산에서 제외하고 동작합니다.
    • 예: (10, 20, NULL) → SUM = 30
  • 논리 연산
    • AND, OR 같은 논리 연산에서 NULL이 포함되면 결과가 NULL이 될 수 있습니다.
    • 예: TRUE AND NULL → NULL

NULL은 '알 수 없는 값'이므로 비교와 연산 시 항상 주의하며, IS NULL을 활용하고 집계 함수에서 자동 제외된다는 점!

 

'데이터 분석 > 06. 데이터 모델링' 카테고리의 다른 글

[데이터베이스 모델링] 정규화  (0) 2025.11.14
카디널리티를 적용한 ERM 초안 수정  (0) 2025.09.29
식별자의 종류와 주식별자의 특성  (0) 2025.09.29
Attribute 후보에 대한 예외 경우  (0) 2025.09.29
데이터 모델링 초안 : 비즈니스 룰에서 ERD까지  (0) 2025.09.29
'데이터 분석/06. 데이터 모델링' 카테고리의 다른 글
  • [데이터베이스 모델링] 정규화
  • 카디널리티를 적용한 ERM 초안 수정
  • 식별자의 종류와 주식별자의 특성
  • Attribute 후보에 대한 예외 경우
Growth DA Log
Growth DA Log
Growth DA Log 님의 블로그 입니다.
  • Growth DA Log
    Growth DA Log님의 블로그
    Growth DA Log
  • 전체
    오늘
    어제
    • 분류 전체보기 (125)
      • TIS_COMPANY (6)
      • 코딩 테스트 (61)
        • 01. Python (3)
        • 02. SQL (58)
      • 데이터 분석 (53)
        • 01. BigQuery (9)
        • 02. GA4 (1)
        • 02-1. GA4를 더 잘 다루기 위한 마케팅 개.. (5)
        • 03. streamlit (5)
        • 04. Git (12)
        • 05. 데이터 엔지니어링 (3)
        • 06. 데이터 모델링 (11)
        • 07. Excel (0)
        • 08. Tableau (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    git
    Reset
    ROW_NUMBER
    rank
    tableau
    코드잇스프린트후기
    프로그래머스
    solvesql
    코딩테스트
    쿼리테스트
    윈도우함수
    SQL
    revert
    streamlit
    tableaubootcamp
    cross_join
    AARRR
    코테
    DENSE_RANK
    이행성
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Growth DA Log
카디널리티 관계 유형
상단으로

티스토리툴바