Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Alternative Notations for Modeling Data

From noriwiki

상위 문서: Entity Relationship Model

개요

어떤 애플리케이션의 데이터 모델을 도식적으로(diagrammatic) 표현하는 것은 DB schema를 설계하는 데 있어 매우 중요한 부분이다. 이 때문에 여러 가지 대체 표기법들이 제안되어 왔는데, 그 중 E-R 다이어그램과 UML 클래스 다이어그램이 가장 널리 사용된다. 해당 문서에서는 다양한 대체 E-R 다이어그램 표기법과 UML 클래스 다이어그램 표기법을 살펴본다.

Summary of E-R notations

Symbols used in the E-R notation

위는 E-R model을 설명하는데 사용된 표기법의 요약이다.

Alternative E-R Notations

Alternative E-R Notations

위는 몇가지의 대체 E-R 표기법 들을 보여준다.
엔터티의 속성을 표현하는 한 가지 대체 방식은, 속성들을 타원형(oval)으로 그리고, 이를 엔터티를 나타내는 상자(box)에 연결하는 것이다. primary key는 밑줄로 표시된다. 이러한 표기법은 그림의 상단에 제시되어 있다. relation의 attribute도 마찬가지로, 타원형으로 표현하여 다이아몬드(relationship) 기호에 연결할 수 있다.

Cardinality constraint 은 여러 방식으로 나타낼 수 있다. 위 이미지의 왼쪽에서는, 관계에서 나오는 선에 * 와 1 이라는 라벨을 붙여 다대다(many-to-many), 일대일(one-to-one), 다대일(many-to-one) 관계를 나타낸다. 일대다(one-to-many)는 다대일의 대칭이기 때문에 생략되었다.
그림의 오른쪽에 나타난 또 다른 표기법에서는, 관계 집합을 다이아몬드 없이 선(line)으로 표현하며, 오직 이진(binary) 관계만 표현 가능하다. 이러한 표기에서는 "갈고리발(crow’s foot)" 표기법으로 수용도를 나타낸다. 관계 R에서 E1과 E2가 연결되어 있다고 할 때, 양쪽에 갈고리발이 있으면 다대다 관계, 한쪽(E1)에만 갈고리발이 있으면 다대일 관계(E1 → E2)에 해당한다. 이때, 전체 참여(total participation) 는 수직 막대(vertical bar) 로 나타내지며,[1] 부분 참여(partial participation)는 원을 사용하여 표시된다.[2]

위 이미지에는 일반화(Generalization) 를 나타내는 삼각형 표기법도 제시되어 있다. 이는 속이 빈 화살표(hollow arrowhead) 대신 삼각형을 사용하는 방식이다. 이때 두줄이 사용된 ISA는 total generlization을 의미한다.

Unified Modeling Language

E-R 다이어그램은 소프트웨어 시스템에서 데이터 표현(data representation) 부분을 모델링하는 데 도움이 된다. 그러나 데이터 표현은 전체 시스템 설계의 일부분에 불과하다. 시스템 설계의 다른 구성 요소에는 사용자와 시스템 간의 상호작용 모델, 시스템의 기능적 모듈 및 이들의 상호작용 명세 등이 포함된다. UML(Unified Modeling Language)은 이러한 소프트웨어 시스템의 다양한 구성 요소에 대한 명세를 작성하기 위해 표준 언어이다. UML의 구성 요소들 중 일부는 다음과 같다:

  • 클래스 다이어그램(Class diagram)
    • E-R 다이어그램과 유사하며, 해당 문서에서는 클래스 다이어그램의 몇 가지 특징과 그것이 E-R 다이어그램과 어떤 관련이 있는지를 보여준다.
  • 유스케이스 다이어그램(Use case diagram): 사용자와 시스템 간의 상호작용을 보여준다.
  • 활동 다이어그램(Activity diagram): 시스템의 여러 구성 요소 사이에서 작업의 흐름(flow of tasks) 을 묘사한다.
  • 구현 다이어그램(Implementation diagram): 시스템 구성 요소들과 이들 간의 연결 관계를 나타내며, 이는 소프트웨어 수준과 하드웨어 수준 모두에 해당된다.

ER vs. UML Class Diagrams

위 이미지는 여러 E-R 다이어그램 구성 요소들과 이에 해당하는 UML 클래스 다이어그램 표현을 보여준다.
UML은 실제로 객체(object) 를 모델링하는 반면, E-R 모델은 엔터티(entity) 를 모델링한다. 이때 객체는 엔터티와 유사하게 속성(attributes)을 갖지만, 메서드(methods) 라는 함수 집합도 포함하여 객체의 속성 기반으로 값을 계산하거나 객체 자체를 갱신할 수 있다. 즉, 클래스 다이어그램(class diagram) 은 속성뿐만 아니라 메서드도 함께 표현할 수 있다.

UML은 복합 속성(composite attribute) 이나 다중값 속성(multivalued attribute) 을 지원하지 않으며, 유도 속성(derived attribute) 은 매개변수가 없는 메서드로 간주된다. 클래스는 캡슐화(encapsulation) 를 지원하기 때문에, UML에서는 속성과 메서드 앞에 다음과 같은 기호를 붙일 수 있다:

  • + : public (공개)
  • - : private (비공개)
  • # : protected (상속된 클래스에서 접근 가능)

UML 용어에서 관계 집합(relationship set) 은 association(연관) 이라고 부른다. (우리는 E-R 용어에 일관성을 유지하기 위해 "relationship set"이라는 용어를 계속 사용한다.)

UML에서 이진 관계(binary relationship set)는 두 엔터티 집합을 선(line) 으로 연결하여 나타낸다. 관계 집합의 이름은 선 옆에 표기한다. 또한, 관계에 참여하는 엔터티가 어떤 역할(role) 을 수행하는지도 선 옆에 역할 이름을 써서 나타낼 수 있다. 또는, 관계의 이름과 속성을 상자(box) 안에 넣고, 이를 점선으로 관계 선에 연결할 수도 있다. 이러한 상자는 E-R 다이어그램의 집합화(aggregation) 처럼, 다른 엔터티 집합과의 관계에 엔터티처럼 참여할 수 있다.

UML 버전 1.3 이후, UML은 E-R 다이어그램에서 사용하는 다이아몬드(diamond) 표기법을 사용하여 비이진(nonbinary) 관계를 지원한다.[3]

수용도 제약(cardinality constraints) 은 E-R 다이어그램과 동일하게 l..h 형식으로 표현된다. 즉, l은 최소 참여 수, h는 최대 참여 수이다. 하지만 UML에서는 이 제약 조건의 위치가 E-R 다이어그램에서의 위치와 반대이다. 예를 들어 관계 R에서, E2 쪽에 0..*, E1 쪽에 0..1이 있으면 이는 "E2가 최대 한 개의 관계에만 참여할 수 있고, E1은 여러 개의 관계에 참여할 수 있다"라는 뜻이 된다. 즉, E2 → E1 방향의 다대일 관계(many-to-one) 이 된다.

각주

  1. 하지만 이 막대는 E1이 전체 참여한다면 반대편(E2 쪽) 에 그려진다.
  2. 이 또한 반대쪽에 그려진다.
  3. 비이진 관계를 이진 표기법으로 변환하여 line만으로 관계를 표현할 수 있다.