[데이터 베이스] 5.2 ER 모델

BBaeng·2022년 6월 10일
0

데이터베이스

목록 보기
3/7

5.2 ER모델


ER 모델

데이터베이스 설계를 용이하기 위해 P.P.Chen이 제안하였으며 현재는 EER(Enhanced Entity Relationship)모델이 사용되고 있다.

  • 개념적 설계를 위한 모델로 많은 CASE 도구들에서 지원
  • 실세계를 엔티티, 애트리뷰트, 엔티티들 간의 관계로 표현한다.
  • 관계 데이터 모델로 사상된다.
  • 기본적인 구문으로 엔티티, 관계, 애트리뷰트가 있고 카디날리티 비율, 참여 제약조건 등이 있다.
  • 정형적이고, 구현에 독립적이어서 설계자와 사용자들 간의 의사 소통에 적합하다.
  • ER기반 모델을 기반으로 한 다수의 CASE도구(ERWin 등)은 ER 설계를 자동적으로 오라클, SQL Server, 사이베이스 등의 데이터 정의어로 변환한다.

기본적인 구문들에 대해 상세히 알아볼 것이다.

엔티티

사람, 장소, 사물, 사건 등과 같이 독립적으로 존재하며 고유하게 식별이 가능한 실세계(작은 세계)의 객체로 실체가 없는 생각이나 개념과 같은 추상적인 것도 엔티티가 되기도 한다.

엔티티 타입

엔티티들은 엔티티 타입(또는 집합)으로 분류된다.

  • 타입 : 동일한 애트리뷰트들을 가진 엔티티들의 틀로 릴레이션의 내포에 해당한다.
  • 집합 : 동일한 애트리뷰트들을 가진 엔티티들의 모임으로 릴레이션의 외연에 해당한다.
  • 엔티티 하나는 여러 엔티티 집합에 속할 수 있다.
  • 집합과 타입을 엄격하게 구분할 필요가 없다.
  • ER 다이어 그램에서 엔티티 타입은 직사각형으로 나타낸다.

강한 엔티티 타입
정규 엔티티 타입으로 독자적으로 존재하며 자신의 키 애트리뷰트를 사용하여 고유하게 엔티티들을 식별할 수 있는 엔티티 타입


약한 엔티티 타입

  • 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입
  • 존재하기 위해서는 소유 엔티티 타입이 있어야 한다.
  • 소유 엔티티 타입의 키 애트리뷰트를 결합해야만 약한 엔티티 타입의 엔티티들을 식별할 수 있다.

🔎 약한 엔티티 타입의 경우 사원(소유) 부양가족(약)으로 생각하여 한 사원의 부양가족에 동일이름이 없게 하여 구분이 가능하며 전체로 보았을 때 사람이 동일이름을 가질 수 있지만 한 사원(식별자)의 부양가족으로 보면 구분이 가능하다.


애트리뷰트

하나의 엔티티는 연관된 애트리뷰트들의 집합이다.
🔎 사원 엔티티 / 애트리뷰트 : 사원번호, 이름, 직책, 급여 등

  • 애트리뷰트의 도메인 : 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합이다.
    🔎 1000~9999의 사원번호

  • 여러 애트리뷰트가 동일한 도메인을 공유할 수 있다.
    🔎 사원번호와 부서번호는 도메인 : 1000~9999 가능

  • 키 애트리뷰트 : 한 엔티티 타입내에서 각 엔티티들을 고유하게 식별한다.
    🔎 한 애트리뷰트 또는 애트리뷰트들의 모임

  • ER 다이어그램에서 타원형으로 표시하고, 기본 키 애트리뷰트는 밑줄을 그어 표시한다.

  • 명사나 형용사로 표현된다.

  • 엔티티는 독립적, 애트리뷰트는 독립적인 의미가 아니며 둘(엔티티 타입 - 애트리뷰트)은 실선으로 연결한다.

단순 애트리뷰트

원자성 지닌(쪼개지지 않는) 애트리뷰트

복합 애트리뷰트

두개 이상의 애트리뷰트로 이루어진 애트리뷰트로 서로 연관된 것들을 모아둔 것이다.

  • 특정요소 검색이 필요할 시에 복합 애트리뷰트를 사용한다.

단일 값 애트리뷰트

엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트

  • 단순 애트리뷰트와 동일하게 표현
    🔎 사원의 사원번호 애트리뷰트는 고유하다. 그렇기에 단일 값 애트리뷰트
  • 대부분의 애트리뷰트가 이것에 속한다.

다치 애트리뷰트

엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트

  • 이중선 타원으로 표현한다.


🔎 취미 - 축구, 농구

유도된 애트리뷰트

다른 애트리뷰트의 값으로 부터 얻어진 애트리뷰트

  • 릴레이션의 애트리뷰트로 포함시키지 않는 것이 좋다.
  • 점선 타원으로 표현


🔎 Age는 생년월일이라는 애트리뷰트를 통해서 구할 수 있다.


약한 엔티티 타입

위에서 말했듯이 키를 형성하기에 애트리뷰트가 부족한 엔티티 타입이다.

  • 이를 구분하기 위해 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 소유 엔티티 타입(식별 엔티티 타입)이다.
  • 이중선 직사각형으로 표기한다.

부분 키
위의 설명처럼 한 사원(소유)에 속한 부양가족(약한)내에서는 서로 다르지만 회사 전체 사원들의 부양가족들 전체에서는 같을 수 있는 애트리뷰트
🔎 부분 키 : 부양가족 이름

  • 약한 엔티티 타입의 부분 키는 점선 밑줄 로 표기한다


관계

관계는 엔티티들 사이의 연결로서 엔티티 타입들 사이의 사상(MAPPING)이다.

  • 관계 집합 : 동질의 관계들의 집합

  • 관계 타입 : 동질의 관계들의 틀

  • 요구사항에서의 동사표현은 ER다이아그램에서 관계(다이아몬드)로 표현된다.

  • 엔티티와 관계 사이는 실선으로 표현한다.


관계의 애트리뷰트

관계를 설명하는 애트리뷰트들을 가진다.

  • 관계 타입은 키 애트리뷰트를 가지지 않는다.


차수

관계로 연결된 엔티티 타입들의 수를 의미한다.

🔎 1진 관계, 2진 관계, 3진 관계, N진 관계


카다날리티 비율

엔티티가 참여할 수 있는 관계의 수를 의미한다.

  • 관계에 참여하는 엔티티들의 조합을 제한한다.
    🔎 1:1, 1:N, M:N

📗 1:1 관계

  • 정확하게 각각 다른 하나 엔티티와 연관되는 경우이다. (위 그림 참조)
    🔎 사원이 최대한 한개의 PC(A)를 가지고 각 PC에 대해 한 명의 사원(B)이 있는 경우

📗 1:N 관계

  • A의 각 엔티티가 B의 복수의 엔티티와 연관되고, B의 경우 A에게 한 엔티티와만 연관되는 관계
    🔎 각 사원은 최대 PC(A) 한 개, 각 PC에 대해 여러 명의 사원들 (B)이 있는 경우

📗 M:N 관계

  • A의 엔티티 타입 여러 개수가 B 엔티티 타입 여러게에 연관
    🔎 각 사원에 대해 여러 대의 PC(A), 각 PC에 대해 여러명의 사원(B)

카디날리티 비율의 최소값과 최대값

  • ER 다이어그램에서 관계와 엔티티 사이 실선은 (min, max) 형태로 표시
  • min은 엔티티 타입 내의 엔티티는 적어도 min번 관계에 참여함을 의미한다.
    • min = 0 의 경우 반드시 관계에 참여할 필요가 없음
  • max는 각 엔티티가 최대한 max번 관계에 참여함을 의미한다.
    • max = * 에 대해 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미

  • 화살표 존재 : 1의 관계
  • 화살표 머리 X : N의 관계

카디날리티가 적용된 관계 타입 예시


  • CAR : 안팔리거나 1번 팔리기
  • CUSTOMER : 고객님이 안사거나 여러개 구매
  • SALESPER : 못 팔거나 여러대 판매

카디날리티 비율 역할

관계 타입의 의미를 명확하게 사용하기 위해 사용된다.

  • 관계 타입에 하나의 엔티티타입이 여러 번 나타나는 경우 반드시 역할 표기
  • 간선 위에 표시한다.


전체 참여와 부분 참여

전체 참여

어떤 관계에 엔티티 타입의 모든 엔티티들이 관계 타입에 의해 다른 엔티티 타입과 연관되는 것을 의미한다.

  • 약한 엔티티 타입은 항상 관계에 전체참여
  • 전체 참여는 이중 실선으로 표시한다.

부분 참여

어떤 관계에 엔티티 타입의 일부 엔티티만 참여하는 것을 의미한다.

참여 조건은 카디날리티 비율과 함께 관계에 대한 중요한 제약조건이다.


다중 관계

  • 엔티티 타입 사이에 두 개 이상의 관계 타입이 존재할 수 있다.

순환적 관계

엔티티 타입이 동일한 관계 타입에 두 번 이상 참여한다.


ER 스키마 작성 지침

  • 엔티티는 키 애트리뷰트 이외에 설명 정보를 가진다.
  • 다치 애트리뷰트는 엔티티로 분류한다.
    관계 DB스키마에서는 원자값만 요구하기에 다치 애트리뷰트가 적절하지 않다.
  • 가능한 복합 식별자를 피해야한다.
  • 엔티티와 관계 중 어느 것으로 모델링할 것인지를 구분하는 것은 어렵기에 요구사항에 따라 구분한다.

애트리뷰트 vs 엔티티

엔티티와 애트리뷰트를 구분하는 절대적인 기준은 없다.

🔎 공급자에 대한 정보

  • 공급자 번호
  • 공급자 이름
  • 신용
  • 공급자 도시

    공급자는 엔티티가 명확하다.
    여기서, 공급자 도시는 엔티티인가 또는 애트리뷰트인가?

    • 도시가 조직체에 관심이 있는 객체인가?
    • 도시에 관한 애트리뷰트들을 유지할 필요가 있는가?
    • 도시를 여러 엔티티 타입들이 공유하는가?

위의 고려사항 중에 하나라도 대답이 '예' 라면 도시에 대한 추가 정보를 모아서 엔티티로 나타낸다.


새발 표기법

  • ER 모델의 또 다른 표기법

  • 1대1 관계

  • 1대N 관계

  • M대N 관계

  • 엔티티 타입과 애트리뷰트

    • 엔티티 타입은 직사각형을 확장한다.
    • 다치, 유도, 복합 애트리뷰트를 구분하기 어렵다.

0개의 댓글