DATOR


관계의 중요성 관계


 엔터티, 속성, 관계 ER 모델의 구성 요소 관계가 가장 파악하고 표현하기 어렵다고 한다. 사실 많은 ERD 엔터티와 속성은 표현하고 있지만 관계가 거의 없거나 있더라도 정확하게 표현하지 못하고 있다. ERP 업종별, 업무별 패키지들도 해당 업체에서 제공하는 데이터 모델을 보면 관계는 상당히 부실하게 정의되어 있는 것이 현실이다. 관계가 가장 부실해지기 쉬운 이유는 매우 단순하다. 물리 데이터 구조에서 누구든지 가장 중요하다고 여길 테이블과 컬럼이 되는 논리 모델의 요소인 엔터티와 속성은 당연히 매우 중요하게 여겨지지만 관계는 그들과 별 상관이 없어 보이기 때문이다.

 만약, 데이터 모델의 목적이 물리 데이터 구조를 만드는 것만으로 해석하는 경우에는 위와 같이 사고하는 것이 크게 잘못된 것은 아닐 것이다. 그러나 데이터 모델의 목적을 보다 바람직하게 해석( http://www.dator.co.kr/encore/textyle/620387) 한다면  데이터 구조와 업무 규칙을 표현하는데 있어서 관계는 매우 중요한 역할을 하므로 관계의 중요성은 제고되어야 할 것이다. 

 데이터 구조에서 관계의 역할은 무엇일까? 건축에서 H빔을 연결하여 건물의 골조를 구현하듯이, 전산시스템은 엔터티를 연결하여 그 데이터 구조를 표현한다. 이 때의 엔터티의 연결을 바로 관계가 되는 것이다. 조금 더 나아가, H빔의 연결이 '하중의 전달구조'를 표현한다면, 관계는 각 엔터티를 명확하게 정의하고, 엔터티의 각 인스턴스를 검색할 수 있도록 한다(엔터티의 이해와 표현 중 2. 관계 참조 --> http://www.dator.co.kr/jslee/92873 ).  데이터 구조를 설명하는데 있어서의 관계의 역할은 매우 중요한 부분으로 앞으로 보다 자세히 논할 예정이다.

 다양한 유형의 업무 규칙 중 관계로 표현해야만 하는 업무 규칙도 상당히 많다. 예를 들어 법인회원에게만 할인카드를 발급해주는 업무 규칙은 다음과 같이 회원 엔터티와 할인카드발급 엔터티 간의 관계로 표현된다.

 

 회원-할인카드erd.JPG

 

 위 모델의 관계는 할인카드발급 엔터티의 모든 인스턴스는 회원 엔터티의 단 하나의 인스턴스와 관계되며, 법인회원은 하나 이상의 할인카드발급 인스턴스와 관계가 있다는 보다 상세한 업무 규칙까지 표현하고 있다. 그런데, 관계가 표현되지 않은 모델이라면 이런 업무 규칙은 숨어 버리게 된다. 관계를 표현하지 않고 엔터티와 속성만 존재하는 데이터 모델의 부실함은 위 그림만으로도 충분히 공감할 수 있을 것이다.

 

 앞으로 '관계' 카테고리에서 관계와 관련된 다양한 접근을 할 예정이다. 다음은 대략적으로 설명하고자 하는 명제들이다.

 

 1. 엔터티와 속성이 각각 테이블과 속성이 되듯이 관계는 외래키가 된다는 명제가 적합한가?

 2. 모든 관계를 외래키로 생성해야 하는가?

 3. 두 엔터티 간에 2개 이상의 관계가 존재하는가? 존재한다면 모든 관계를 데이터 모델에 표현해야 하는가?

 4. 하나의 엔터티에는 관계가 없는가? 셋 이상의 엔터티 간에는 관계가 존재하지 않는가?

 5. 식별관계와 비식별관계란?

 6. 관계 엔터티란 무엇인가? 

 7. 배타적 논리합 관계는 무엇인가? 배타적 관계가 많이 나타나면 엔터티를 통합해야 하는가?

 

TAG

Leave Comments