Cardinality

Cardinality는 데이터베이스 분야에서 주로 두 가지 의미로 사용된다.

  1. 테이블 간의 관계에서의 Cardinality
    이는 두 엔티티 간의 최대 연관성을 나타낸다.
    주요 유형은 다음과 같습니다:

    • 1:1 (일대일) 관계: 예를 들어, 사원과 사원증의 관계
    • 1:N (일대다) 관계: 예를 들어, 교수와 학생의 관계
    • N:M (다대다) 관계: 예를 들어, 학생과 강좌의 관계
  2. 컬럼에 있는 고유한 값의 Cardinality
    이는 특정 컬럼에 존재하는 고유한 값의 개수를 의미한다.
    Cardinality의 정도에 따라 다음과 같이 분류할 수 있다:

    • 높은 Cardinality: 주민등록번호, 이메일 주소와 같이 대부분의 값이 고유한 경우
    • 중간 Cardinality: 우편번호, 도시 이름과 같이 일부 값이 고유하지만 많은 값이 반복되는 경우
    • 낮은 Cardinality: 성별, 상태 코드와 같이 적은 수의 고유 값을 포함하는 경우

데이터베이스 성능에 여러 가지 중요한 영향을 미친다.

  1. 쿼리 최적화: 데이터베이스 쿼리 옵티마이저는 Cardinality 정보를 사용하여 가장 효율적인 쿼리 실행 계획을 수립한다. 이는 데이터 검색 방법과 조인 전략 선택에 영향을 준다.
  2. 인덱싱 전략: 높은 Cardinality를 가진 컬럼은 인덱싱에 적합하며, 이를 통해 특정 행을 빠르게 찾을 수 있다. 반면, 낮은 Cardinality 컬럼은 인덱싱 효과가 제한적일 수 있다.
  3. 조인 성능: 테이블 간 관계의 Cardinality는 조인 작업의 효율성에 직접적인 영향을 미친다. 1:1 또는 1:N 관계는 N:M 관계보다 일반적으로 더 효율적으로 처리될 수 있다.
  4. 저장 공간과 메모리 사용: 높은 Cardinality 데이터는 더 많은 저장 공간과 메모리를 필요로 할 수 있으며, 이는 특히 시계열 데이터베이스에서 중요한 고려사항이다.
  5. 분산 데이터베이스 성능: 높은 Cardinality는 분산 데이터베이스에서 데이터를 여러 노드에 균등하게 분산시켜 로드 밸런싱을 개선하고 핫스팟을 줄이는 데 도움이 될 수 있다.
  6. 쿼리 실행 시간: Cardinality는 쿼리가 처리해야 할 데이터의 양에 직접적인 영향을 미치므로, 쿼리 실행 시간에 중요한 영향을 준다.

Primary Key(PK)와 Foreign Key(FK) 설정에 밀접하게 관련되어 있다.

  1. Primary Key와 High Cardinality:

    • PK를 가진 테이블은 일반적으로 High Cardinality를 가진다.
    • PK는 테이블 내에서 각 레코드를 고유하게 식별하므로, 중복 값이 거의 또는 전혀 없다.
  2. Foreign Key와 Low Cardinality:

    • FK를 포함한 테이블은 주로 Low Cardinality를 가진다.
    • FK는 다른 테이블의 PK를 참조하며, 여러 레코드가 동일한 FK 값을 가질 수 있다.
  3. 관계의 유형:

    • One-to-One (1:1): 각 PK가 하나의 FK와 연결된다.
    • One-to-Many (1:M): 하나의 PK가 여러 FK와 연결된다.
    • Many-to-Many (M:N): 여러 PK가 여러 FK와 연결된다.
  4. 제약 조건:

    • FK 제약 조건은 Cardinality를 정의하여 관계의 특성을 결정한다.
    • 이는 데이터 무결성을 유지하고 올바른 관계를 보장하는 데 중요하다.
  5. 데이터 모델링:

    • Cardinality는 테이블 간의 관계를 설계할 때 중요한 고려 사항이다.
    • 올바른 Cardinality 설정은 효율적인 데이터 구조와 쿼리 성능을 보장한다.

Cardinality는 데이터베이스 설계, 쿼리 최적화, 인덱스 생성 등 다양한 데이터 관련 작업에서 중요한 역할을 한다.
높은 Cardinality를 가진 컬럼은 인덱스를 통해 검색 성능을 향상시킬 수 있으며, 중복 데이터 확인에도 유용하다.
데이터의 다양성을 파악하는 데에도 도움이 되어 데이터 분석에 유용한 인사이트를 제공할 수 있다.


참고 및 출처