카디널리티란?
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 |
