데이터베이스 카디널리티

IT 위키

Cardinality

카디널리티는 두 엔티티 간의 최대 연관성을 나타내며, 한 엔티티의 인스턴스가 다른 엔티티의 인스턴스와 맺을 수 있는 관계의 개수를 정의한다. 이는 관계의 최대 값을 의미한다.

종류[편집 | 원본 편집]

주로 아래 중 하나로 정의된다.

  • 1:1 (일대일)
  • 1:N (일대다, 다대일)
  • N:M (다대다)

카디널리티 비율[편집 | 원본 편집]

Cardinality Ratio

  • 1:1 관계: 한 엔티티의 인스턴스가 다른 엔티티의 인스턴스와 단 하나의 관계를 맺을 때
    • 예시: 사원(Employee)와 사원증(Employee ID) 간의 관계.
      • 한 사원은 하나의 사원증만 가질 수 있고, 사원증은 한 명의 사원에게만 발급된다.
  • 1:N 관계: 한 엔티티의 인스턴스가 여러 다른 엔티티의 인스턴스와 관계를 맺을 때
    • 예시: 교수(Professor)와 학생(Student) 간의 관계
      • 한 명의 교수는 여러 명의 학생을 지도할 수 있지만, 학생은 한 명의 교수에게 지도받는다.
  • N: M 관계: 여러 엔티티의 인스턴스들이 서로 다수의 관계를 맺을 때
    • 예시: 학생(Student)과 강좌(Course) 간의 관계
      • 한 명의 학생은 여러 강좌를 수강할 수 있고, 한 강좌에는 여러 학생이 수강할 수 있다.

최소 카디널리티[편집 | 원본 편집]

Minimum Cardinality

최소 카디널리티는 관계에서 최소 몇 개의 인스턴스가 반드시 연결되어야 하는지를 나타낸다. 이는 각 엔티티가 관계에 필수적으로 참여하는지 아니면 선택적으로 참여하는지를 결정하는 요소이다.

  • 0 (Partial Participation, 선택적 참여): 엔티티가 관계에 참여하지 않아도 된다.
    • 예시: 사원은 필수로 부서에 속할 필요가 없다.
  • 1 (Total Participation, 필수적 참여): 엔티티는 반드시 관계에 참여해야 한다.
    • 예시: 학생은 반드시 한 명의 지도 교수에게 할당되어야 한다.

최소, 최대 카디널리티가 가지는 의미

  • 교수(1)와 학생(N) 간의 관계에서 최소 카디널리티가 교수에 대해 1이라면, 한 명의 교수가 반드시 한 명 이상의 학생을 지도해야 한다는 의미이다.
  • 학생의 최소 카디널리티가 0이라면, 학생은 지도 교수가 없어도 되지만, 최대 카디널리티가 1이라면 한 명의 교수에게만 지도받을 수 있다는 의미다.

표기법[편집 | 원본 편집]

카디널리티는 숫자를 직접 적거나 기호로 표현할 수 있다.

숫자 표기법[편집 | 원본 편집]

여긴 1:N, N:M 카디날리티 표현과 (min, max) 노테이션이 같이 사용되었는데 이해를 돕기 위한 것이며, 중복된 의미를 가지므로 둘을 함께 쓰는 경우는 없다.

Cardinality Ratio

  • 그냥 1, N, M으로만 표현 하는 것을 Cardinality Ratio라고 한다.
  • 위 그림에서 Professor에 1이 있고 Course에 M이 있는 것은, 교수 1명은 M개의 코스를 가르칠 수 있다는 것이다.
    • 그리고 M개의 코스들은 각각 1명의 교수들에 의해서만 가르쳐질 수 있다는 것이다.
  • 여기선 최대 몇명인지, 그리고 꼭 존재해야 하는 것인지는 일반적으로 표현되지 않는다.
    • 꼭 존재해야 한다면 두 줄을 사용할 수 있다.
      • 아래 ERD 예시에서 Department는 Manage를 해줄 Employee가 필요하다는 의미로 두 줄이 사용되었다.
      • 이 매니저는 최소 1명, 최대 1명이 될 수 있음을 의미한다.
      • 표현된 숫자는 1:1 관계이지만. 한 줄과 두 줄 표현을 통해 아래와 같이 최대 최소가 정의됨 (ERD 예시 2 참조)
        • EMPLOYEE - (0,1) - MANAGES - (1,1) - DEPARTMENT
        • EMPLOYEE는 0개 또는 1개의 DEPARTMENT를 관리할 수 있음
        • DEPARTMENT는 최소 1명, 최대 1명의 MANAGING EMPLOYEE를 가짐
    • 최대값까지 표현하려면 아래의 (min, max) 노테이션을 사용해야 한다.

Structure Constraints Using (min, max) Notation

  • 이 노테이션을 사용하면 그냥 1:N이 아니라 최소, 최대도 표현해줄 수 있다.
  • 위 그림에서 (0,3), (1,1)로 되어 있는 것인데, 기본 카디날리티 표현과 순서가 반대라 헷갈릴 수 있다.
  • 여기서 교수는 Course를 맡지 않을 수도 있고, 맡는다면 최대 3개까지만 맡을 수 있다.
    • Course는 무조건 1명의 교수가 있어야 한다.
  • 학생은 1~6개의 Course을 등록해야 한다.
    • Course는 학생이 한명도 없을 수도 있고 최대 35명까지 있을 수도 있다.

그 외 표기법[편집 | 원본 편집]

카디날리티는 다양한 표기법이 존재한다. 우리가 봤던, 숫자로 1, N, M을 적던 표기법은 Chen 표기법이다. 그리고 (min, max)를 min..max로 표현하면 이는 UML 표기법이다.

여기서 또 많이 쓰이는 것 중 하나가 까치발 표기법(Crow's Foot)이다.

카디널리티 표기법.png


아래와 같이 1, N, M 및 최소 카디널리티(1)를 나타낼 수 있다. 규칙은 간단하다:

  • 세로 막대는 1을 나타낸다.
  • 동그라미는 0을 나태낸다.
  • 까치발은 N을 나태낸다.
  • 이를 조합하면 0, 1, 0~1, 0~N, 1~N, N을 나타낼 수 있다.
Cardinality Min Instance Max Instance Graphic Notation
Exactly one 1 1 Exactly One.png
Zero or one 0 1 Zero or one.png
One or more 1 many (>1) One or more.png
Zero, one, or more 0 many (>1) Zero one or more.png
More than one >1 >1 More than one.png

여기서 (1,1)인 경우 그냥 세로 막대 하나로만 나타내는 경우도 있고, 아래와 같이 세로 막대 2개를 써서 확실히 하는 경우도 있다.

Crow Foot ERD.png

Crow Foot의 장점은 시각적으로 무엇이 어디에 속하는 가를 명확히 알 수 있다는 것이다.

  • 특히 Many를 나타내는 까치발은 Course 아래에 CourseTerm이 여러개가 있음을 직관적으로 표현한다.

참여 제약조건[편집 | 원본 편집]

Participation Constraint

  • 위에서 설명한 최소 카디날리티를 포함한다.
  • 최대, 최소 카디날리티를 지켜야 하는 제약조건을 일컫는다.

ERD 예시[편집 | 원본 편집]

예시1 (Cardinality Ratio)

ERD Figure 3.2.png

예시2 (Structure Constraint)

ERD Figure 3.15.png