Database - ER모델

Bomin Seo·2022년 7월 25일
0

ER모델

  • 현재는 EER(Enhanced Entity Relationship) 모델이 데이터베이스 설계에 널리 사용되고 있다.
  • 개념적 설계를 위한 인기 있는 모델로서, 많은 CASE 도구들에서 지원된다.
  • 실세계를 엔티티, attribute, 엔티티들 간의 관계로 표현하며, 쉽게 관계 데이터 모델로 사상할 수 있다.
  • 기본적인 구문으로는 엔티티, 관계, attribute가 있고, 기타 구문으로는 카디날리티 비율, 참여 제약조건 등이 있다.
  • 전문가가 아니더라도 이해하기 쉬우며, 쉽게 배울 수 있고, 자연어보다 좀 더 정형적이고, 구현에 독립적이어서 데이터베이스 설계자들이 최종 사용자들과 의사 소통하는데 적합하다.
  • ER모델을 기반으로 만들어진 다수의 CASE 도구들이 존재한다.

엔티티

  • 하나의 엔티티는 사람, 장소 사물, 사건 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체
  • 사람처럼 실체가 있는 것과 생각과 개념같이 추상적인 것도 포함한다.

엔티티 타입 (ER 다이어그램에서 직사각형으로 표현)

  • 엔티티들은 엔티티 타입(엔티티 집합)들로 분류된다.
  • 엔티티 타입은 동일한 attribute들을 가진 엔티티들의 틀
  • 엔티티 집합은 동일한 attribute들을 가진 엔티티들의 모임
  • 하나의 엔티티는 1개 이상의 엔티티 집합에 속할 수 있다.
  • 엔티티 타입은 관계 모델의 릴레이션의 내포에 해당하고, 엔티티 집합은 관계 모델의 릴레이션의 외연에 해당한다.

강한 엔티티 타입 (정규 엔티티 타입, 대부분의 엔티티 타입)

  • 독자적으로 존재하며 엔티티 타입 내에서 자신의 키 attribute를 사용하여 고유하게 엔티티들을 식별할 수 있는 엔티티 타입

약한 엔티티 타입 (ER 다이어그램에서 이중 직사각형으로 표현된다)

  • 키를 형성하기에 충분한 attribute들을 갖지 못한 엔티티 타입
  • 약한 엔티티 타입이 존재하기 위해서는 소유 엔티티 타입이 존재해야 한다.
  • 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입을 소유/식별 엔티티 타입이라고 부른다.
  • 소유 엔티티 타입의 키 attribute를 결합해야만 고유한 약한 엔티티 타입을 식별할 수 있다.
  • 약한 엔티티 타입의 부분 키는 점선 밑줄을 그어 표시한다.
  • 부분 키 : 약한 엔티티 타입에서는 서로 다르지만 전체에서는 동일 값이 있을 수 있는 애트리뷰트

Attribute (ER 다이어그램에서 타원형을 표현된다.)

  • 하나의 엔티티는 연관된 attribute들의 집합으로 설명된다.
  • 한 attribute의 도메인은 그 attribute가 가질 수 있는 모든 가능한 값들의 집합을 의미한다.
  • 여러 attribute가 동일한 도메인을 공유할 수 있다.
  • 키 attribute는 한 attribute 또는 attribute들의 모임으로서 한 엔티티 타입 내에서 각 엔티티를 고유하게 식별한다.
  • ER 다이어그램에서 기본키에 속하는 attribute는 밑줄을 그어 표시한다.
  • 요구사항 명세에서 명사나 형용사로 표현된다.
  • 독립적인 의미를 갖지 않으며 엔티티 타입과 실선으로 연결한다

단순 attribute

  • 더 이상 다른 attribute로 나눌 수 없는 attribute
  • 실선 타원으로 표현한다.

복합 attribute(Composite attribute)

  • 2개 이상의 attribute로 이루어진 attribute
  • 동일한 엔티티 타입이나 관계 타입에 속하는 attribute들 중에서 밀접하게 연관된 것을 모아 놓은 것

단일 값 attribute(single-valued attribute)

  • 각 엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트
  • ER다이어그램에서 단순 애트리뷰트와 동일하게 표현된다.

다치 애트리뷰트(Multi-valued attribute)

  • 각 엔티티 마다 여러 개의 값을 가질 수 있는 애트리뷰트
  • ER다이어그램에서 이중선 타원으로 표현된다.

저장된 애트리뷰트 (유도된 애트리뷰트와 대비되는 개념)

  • 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트
  • 단순 애트리뷰트와 동일하게 표현되며 대부분의 애트리뷰트에 해당한다.

유도된 애트리뷰트

  • 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트
  • 관계 데이터베이스에서 포함시키지 않는 것이 좋다.
  • ER다이어그램에서 점선 타원으로 표현된다.

관계와 관계 타입

  • 관계는 엔티티들 사이에 존재하는 연관이나 연결로서 2개 이상의 엔티티 타입들 사이의 사상으로 생각할 수 있다.
  • 관계 집합은 동질의 관계들의 집합이며 관계 타입은 동질의 관계들의 틀이다.
  • 요구사항 명세에서 흔히 동사를 관계로 표현한다.
  • ER다이어그램에서 다이아몬드 모양으로 표기한다.
  • 관계 타입이 서로 연관시키는 엔티티 타입들을 관계 타입에 실선으로 연결
  • 관계의 특징을 기술하는 애트리뷰트들을 가질 수 있다. (키 애트리뷰트는 가지지 않는다)

차수(Degree)

  • 관계로 연결된 엔티티 타입들의 개수를 의미한다. (흔한 관계는 2진관계)

카티날리티 비율

  • 엔티티가 참여할 수 있는 관계의 수를 나타낸다.
  • 관계 타입에 참여하는 엔티티들의 가능한 조합을 제한한다.
  • 관계에 참여하지 않는 엔티티들도 있을 수 있다.
  • 1:1, 1:N(가장 흔한 관계), M:N으로 구분하며 카디날리티 비율에 관한 정보는 간선 위에 나타낸다.
  • 최소값과 최대값을 실선 위에 (min, max) 형태로 표기한다.
  • Min = 0 은 어떤 엔티티가 반드시 관계에 참여할 필요가 없음을 나타낸다.
  • Max = * 어떤 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미한다.


역할

  • 관계 타입의 의미를 명확하게 하기 위하여 사용된다.
  • 하나의 관계 타입에 하나의 엔티티 타입이 여러 번 나타나는 경우에는 반드시 역할을 표기

전체 참여와 부분 참여

  • 전체 참여는 어떤 관계에 엔티티 타입 E1의 모든 엔티티들이 관계 타입 R에 의해서 어떤 엔티티 타입 E2의 어떤 엔티티와 연관되는 것을 의미한다.
  • 부분 참여는 어떤 관계에 엔티티 타입 E1의 일부 엔티티만 참여하는 것을 의미한다.
  • 약한 엔티티 타입은 항상 관계에 전체 참여(키가 없기 때문)
  • 전체 참여는 ER다이어그램에서 이중 실선으로 표시한다.
  • 카티날리티 비율과 함께 참여 제약조건은 관계에 대한 중요한 제약조건이다.

다중 관계

  • 두 엔티티 타입 사이에 2개 이상의 관계 타입이 존재하는 경우

순환적 관계

  • 하나의 엔티티 타입이 동일한 관계 타입에 2번 이상 참여하는 것

ER스키마를 작성하기 위한 지침

  • 엔티티는 키 애트리뷰트 이외에 설명 정보를 추가로 가진다.
  • 식별자 이외에 추가적인 정보를 갖지 않는다면 애트리뷰트로 취급한다.
  • 다치 애트리뷰트는 엔티티로 분류해야 한다.
  • 가능한 복합 식별자를 피한다.

애트리뷰트 vs. 엔티티 (ex) 공급자 도시

  • 조직체에서 관심이 있는 객체인가? / 애트리뷰트들을 유지할 필요가 있는가? / 여러 엔티티 타입이 공유하는가?
    • 하나라도 yes라면 도시에 대한 추가정보를 모아 엔티티로 나타내고 아니라면 애트리뷰트로 표현한다.

새발(Crow-feet) 표기법

  • A에 대응하는 C의 참여가 전체참여라면
    • A는 필수적으로 참여하며 C는 부분적으로 참여한다.
profile
KHU, SWCON

0개의 댓글