본문 바로가기

Library/Database

ER Model

현실 세계를 개략적인 형태로 표현하는 것을 개념 설계(conceptual design) 단계라고 한다. 이 단계에서 얻어진 결과물들은 바로 데이터베이스에 적용할 수 없다. 개념 설계를 데이터베이스에 정형화된 형태의 데이터로 표현하기 위해서는 데이터 모델링 과정을 거쳐야 하다. 데이터 모델링은 실세계를 추상화하는 작업이다.  ER Model은 데이터베이스에서 사용되는 대표적인 데이터 모델링 방법으로, 데이터와 데이터의 연관 관계를 그림으로 표현할 수 있기 때문에 전체 구조를 쉽게 파악할 수 있다는 장점을 가지고 있다. ER Model은 크게 관계 집합(relation set)과 개체 집합(entity set)으로 구분할 수 있다. 관계 집합은 개체들 사이의 연관 관계를 나타낸다. ER Model에서, 개체 사이에 어떤 관계가 존재한다면, 이것을 굵은 실선을 사용하여 둘 사이의 관계를 표현한다. 개체는 주로 정적인 형태의 데이터를 의미하며, 속성(attribute)을 가질 수 있다.

여기서, 개체는 어떤 관계에 대해서 전체적으로 참여할 수도 있고, 부분적으로 관계에 참여할 수도 있다. 전체적으로 참여한다는 것은 개체 자신을 포함한 모든 속성을 특정 관계가 반드시 필요로 한다는 것이고, 부분적으로 참여한다는 것은 그 관계가 해당 개체의 모든 속성을 반드시 필요로 하지는 않는다는 뜻이다. 여기서 약한 개체(weak entity)가 등장하는데, 약한 개체는, 이 개체가 가지는 속성 일부와 식별 소유자(identifyinh owner)에 해당하는 개체의 기본키를 결합해야만 유일하게 식별 가능한 개체를 말한다. 약한 개체는 자신이 가지고 있는 속성들이 반드시 유효한 값을 가지고 있다는 것을 보장할 수 없다. 따라서, 약한 개체는 자신의 속성 중 어느 것이라도 키로 설정할 수 없다. 따라서, 이 개체를 소유한 개체의 기본키와 결합되어야만 구별 될 수 있으며, 식별 관계 집합에 전체적으로 참여해야 한다. 그렇지 않다면, 이들 자료를 구별할 어떠한 방법도 없다. 각각의 약한 개체들은 오직 하나의 소유자를 가지며, 이러한 관계 집합을 약한 개체 집합(weak entity set)의 식별 관계 집합(identifying relationship set)이라고 한다. 소유자 개체는 여러 약한 개체들을 가질 수 있지만, 약한 개체들은 여러개의 소유자를 가질 수 없다.

또, 개체는 파생 개체(sub entity)로 분류할 수도 있는데, 일반적인 개체 지향 프로그래밍 언어와는 다르게 이 인스턴스를 대상으로 하는 질의는 반드시 이 파생 개체를 확실히 알고 있어야 한다. 다시 말해, 기본 개체의 자료형에서 자동적으로 파생 개체의 어떤 데이터형으로 동적으로 변환되지 않는다. 질의는 반드시 파생 개체의 특성을 명확하게 알고 있어야 한다.

ER Model은 이 외에도 집단화(aggregation)라는 흥미로운 기능을 제공한다. 이것은, 어떤 관계 집합이 다른 관계 집합에 참여하는 것을 나타내며, 주위를 둘러싼 점선 사각형으로 표현한다. 예를 들어, 어떤 특정 개체를 포함하는 전체적인 행위가 특정 관계에 포함된다면, 이 개체를 포함하는 관계까지 그 관계에 포함될 수 있다. 집단화는 그런 개념을 표현한다. 집단화를 선택하여 모델링 할 것인지, 아니면 K-관계를 사용하여 모델링할 것인지가 문제인데, 그것은 요구 조건에 따라 상황에 맞게 선택해야 한다.