메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Alternative Notations for Modeling Data: 두 판 사이의 차이

noriwiki
Pinkgo (토론 | 기여)
Pinkgo (토론 | 기여)
 
(같은 사용자의 중간 판 3개는 보이지 않습니다)
32번째 줄: 32번째 줄:
===ER vs. UML Class Diagrams===
===ER vs. UML Class Diagrams===


[[파일:Symbols used in the UML class diagram notation..png|테두리|프레임없음|637x637픽셀|왼쪽]]
[[파일:Symbols used in the UML class diagram notation..png|테두리|프레임없음|637x637픽셀]]


ㅇㄴㅁㅋ
위 이미지는 여러 E-R 다이어그램 구성 요소들과 이에 해당하는 UML 클래스 다이어그램 표현을 보여준다.<br>
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) 관계를 지원한다.<ref>비이진 관계를 이진 표기법으로 변환하여 line만으로 관계를 표현할 수 있다.</ref>
 
수용도 제약(cardinality constraints) 은 E-R 다이어그램과 동일하게 l..h 형식으로 표현된다. 즉, l은 최소 참여 수, h는 최대 참여 수이다. 하지만 UML에서는 이 제약 조건의 위치가 E-R 다이어그램에서의 위치와 반대이다. 예를 들어 관계 R에서, E2 쪽에 0..*, E1 쪽에 0..1이 있으면 이는 "E2가 최대 한 개의 관계에만 참여할 수 있고, E1은 여러 개의 관계에 참여할 수 있다"라는 뜻이 된다. 즉, E2 → E1 방향의 다대일 관계(many-to-one) 이 된다.


==각주==
==각주==
[[분류:데이터베이스 시스템]]
[[분류:데이터베이스 시스템]]

2025년 3월 29일 (토) 18:04 기준 최신판

상위 문서: 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

파일:Symbols used in the UML class diagram notation..png

위 이미지는 여러 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만으로 관계를 표현할 수 있다.