데이터베이스 집계
From CS Wiki
Aggregation
집계는 데이터베이스 설계에서 두 개 이상의 엔티티 간의 관계를 표현하는 모델링 개념으로, 이러한 엔티티의 조합적 중요성을 강조하는 방식이다.
의의[edit | edit source]
집계(Aggregation)는 관련 엔티티를 하나의 단위로 그룹화하여 더 높은 수준의 추상을 생성하는 데 사용된다. 이는 관계 자체가 추가적인 속성을 요구하거나 복잡한 관계를 단일 엔티티로 표현하고자 할 때 유용하다.
주요 특징[edit | edit source]
- 높은 수준의 추상화: 집계는 관련된 여러 엔티티를 단일 엔티티로 취급할 수 있게 해준다. 이는 모델의 복잡성을 줄이고 이해하기 쉽게 만든다.
- 속성을 가진 관계: 엔티티를 집합화할 때, 결과로 생성된 집합 엔티티는 자체 속성을 가질 수 있습니다. 이는 개별 엔티티가 포착하지 못하는 관계 자체의 추가 정보를 캡처하는 데 유용합니다.
- 구성(Composition)과 집합(Aggregation):
- 구성: 포함된 엔티티의 생명 주기가 컨테이너의 생명 주기에 연결된 더 강한 형태의 집합입니다. 예를 들어, 컨테이너 엔티티가 삭제되면 포함된 엔티티도 삭제됩니다.
- 집합: 포함된 엔티티가 컨테이너와 독립적으로 존재할 수 있는 더 약한 관계입니다. 예를 들어, "팀(Team)"은 "선수(Player)" 엔티티의 집합으로 간주될 수 있지만, 팀이 해체되더라도 선수들은 여전히 독립적으로 존재할 수 있습니다.
예시[edit | edit source]
도서관 데이터베이스에서
- 회원과 대여: 회원(Members)과, 그들이 하는 대여(Borrowing Transactions) 간의 관계를 집계화할 수 있다. 각 대여는 회원과 그들이 대출한 책들 간의 집합으로 간주된다.
- 이 경우, "대여 활동(Borrowing Activity)"이라는 집합 엔티티를 표현할 수 있으며, 이는 "대여일(borrow date)"과 "반납일(return date)"과 같은 속성을 가질 수 있다. 이는 회원과 책 간의 상호작용을 나타내며 대여 과정의 구체적인 세부정보를 표현한다.
집계 표현의 이점[edit | edit source]
- 명확성: 모델을 명확하게 만들어 관계의 수를 줄인다.
- 유지 보수 용이성: 데이터베이스 스키마의 유지 보수와 수정을 더 쉽게 해준다.
- 향상된 표현력: 자체 특성이나 행동을 가질 수 있는 복잡한 관계를 표현할 수 있다.