데이터베이스에서 개체와 개체의 대응 관계를 보여주는 것은 바로 대응 카디널리티Mapping Cardinality입니다. 이번 글에서는 대응 카디널리티의 개념과 그 유형에 대해 살펴보겠습니다.
Cardinality
카디널리티Cardinality는 본래 수학에서 비롯된 개념으로, 집합의 크기를 의미한다. 데이터베이스에서 카디널리티를 활용할 때는 대응 관계, 그리고 유한 집합에서의 정의에 초점을 맞춘다.
- 두 집합 와 에 대하여 일대일 대응 가 존재한다면 두 집합의 카디널리티 , 는 동일하다. 즉, 이다.
- 유한 집합Finite Set에서의 카디널리티Cardinal Number는 일반적으로 기수基數로 번역되며, 집합에 존재하는 원소의 개수를 의미한다.
이 내용을 기반으로 데이터베이스에서 카디널리티가 어떻게 활용되는지 살펴보자.
Mapping Cardinality
대응 카디널리티Mapping Cardinality 혹은 카디널리티 비율Cardinality Ratio은 카디널리티를 대응 관계로 정의한다는 점에 기반하여 관계 집합에 연관된 여러 개체 집합 간의 대응 관계를 나타낸다. 대응 카디널리티는 두 개체 집합이 연관된 상황에서 가장 많이 사용되며, 두 개체 집합 와 가 연관된 이진 관계 집합Binary Relationship Set 에 대한 대응 카디널리티는 다음과 같다.
두 개체 집합 와 가 연관된 이진 관계 집합Binary Relationship Set 에 대하여 대응 카디널리티는 의 원소와 의 원소가 대응하는 비율을 의미한다. 대응 카디널리티는 일대일One-to-one 관계, 일대다One-to-many 관계, 다대일Many-to-one 관계, 다대다Many-to-many 관계 중 하나에 속한다.
이제 일대일 관계, 일대다 관계, 다대일 관계, 다대다 관계가 무엇인지 차례대로 살펴보자.
One-to-One

일대일One-to-one 관계는 개체 집합의 원소가 다른 개체 집합의 원소 중 최대 1개와 연결된 관계를 나타낸다. 와 의 원소가 하나씩 짝을 이루고 있는 것을 확인할 수 있다. 비록 는 연결되어 있지 않지만, 의 원소 중 2개 이상과 연결된 의 원소가 존재하지 않으므로 두 집합은 일대일 관계다.

위 다이어그램은 개체 집합 와 를 연결하는 관계 집합 를 E-R 다이어그램으로 표현한 모습이다. 양방향 화살표로 개체 집합을 가리키도록 한다.
One-to-Many

일대다One-to-many 관계는 개체 집합의 원소에 다른 개체 집합의 원소 2개 이상이 대응하는 관계다. 이 와 연결되어 있는 것처럼 의 모든 원소가 의 원소 중 한 개 이상과 연결되어 있고, 의 모든 원소는 의 원소 중 최대 한 개와 이어져 있다.

E-R 다이어그램으로 나타냈을 때, 아까 봤던 E-R 다이어그램과 비슷하지만 이번에는 개체 집합 를 가리키는 쪽에만 화살표가 있고, 를 가리키는 반대쪽에는 화살표가 없다. 화살표가 에서 나오는 것이 아니라 에서 나와 뒤를 지나 로 향한다 생각하면 조금 더 이해하기 편할 것이다. 대응 카디널리티를 E-R 표기법으로 나타낼 때, 화살표가 가리키는 쪽에 있는 개체 집합이 One, 그 반대편에 있는 관계 집합이 Many다.
Many-to-One

다대일Many-to-one은 일대다 관계와 정확히 반대다.

그래서 E-R 표기법도 정확히 반대 방향으로 되어 있다.
Many-to-Many

다대다Many-to-many 관계는 그냥 무작위라고 생각하면 된다. 두 집합의 원소가 어떻게 대응되어야 한다는 규칙이 딱히 없다. 서로가 서로의 원소 0개 이상과 연결되어 있으면 된다.

E-R 표기법에서는 관계 집합 가 위치한 선에 화살표가 없는 것을 확인할 수 있다.
Total Participation
관계 집합 에 참여하는 개체 집합 를 생각해보자. 만약 의 모든 개체가 각각 의 관계 중 최소 하나에 참여하고 있다면, 의 참여는 전체적total이다. 그렇다면 당연히 의 몇몇 개체가 에 참여하지 못하는 상황도 있을 것이다. 이런 상황에서 의 참여는 부분적partial이다.

이걸 E-R 다이어그램으로 표현하면 위와 같다. 관계 집합 와 개체 집합 사이에 선이 두 개 있는 것을 볼 수 있는데, 이는 에 속하는 모든 개체는 라는 관계에 참여해야 한다는 것, 즉 개체 집합 가 관계 집합 에 전체적으로 참여하고 있다는 것을 나타낸다.
Cardinality Limits
앞서 대응 카디널리티를 크게 네가지로 구분했는데, 당연히 이것만으로는 모든 대응 카디널리티를 충분히 세밀하게 표현하기 부족할 수 있다. 그래서 E-R 표기법에는 대응 카디널리티를 표현하는 또다른 방법을 제공한다.

위 다이어그램을 보면 선 위에 이나 과 같은 기호가 추가되어 있는 것을 확인할 수 있는데, 이것이 바로 E-R 표기법에서 대응 카디널리티를 표현하는 또다른 방법이다. 형식은 로 정리할 수 있는데, 여기서 은 카디널리티의 하한선, 는 카디널리티의 상한선이다.
한가지 더 짚고 넘어갈 점이 있다. 일대다 관계 혹은 다대일 관계에서 그랬던 것처럼 무엇이 어느쪽의 카디널리티를 의미하는지 헷갈릴 수 있다. 한쪽이 이고 다른 쪽이 이라는 것은 일대다 관계 혹은 다대일 관계라는 뜻인데, 무엇이 맞을까? 이 왼쪽에 있으니 가 Many고 가 One이라고 생각하기 쉽지만 정답은 정확히 그 반대다. 에서 로 향하는 방향을 기준으로 보았을 때 관계 집합 는 다대일 관계, 즉 가 One이고 가 Many다.
출처
- Silberschatz, A., Korth, H.F. and Sudarshan, S. (2020) Database system concepts. Seventh edition. New York, NY: McGraw-Hill.