본문 바로가기
Computer Science/DataBase

데이터베이스 설계와 ER 모델(1)

by J._.cobb 2022. 4. 13.

강한 엔티티 타입

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

 

약한 엔티티 타입

  • 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입
  • 소유 엔티티 타입이 있어야 존재 가능함
  • 소유 엔티티 타입의 키 애트리뷰트를 결합해야만 고유하게 약한 엔티티 타입의 엔티티들을 식별할 수 있음

*소유 엔티티 타입: 약한 엔티티 타입과 연관된 강한 엔티티 타입

 

애트리뷰트

  • 하나의 엔티티는 연관된 애트리뷰트들의 집합으로 설명됨
    • EX) 사원 Entity는 ‘사원번호’, ‘이름’, ‘직책’, ‘급여’ 등의 애트리뷰트를 가짐
  • 한 애트리뷰트의 도메인은 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합을 의미
    • EX) 사원번호는 1000-9999까지의 값을 가짐
  • 여러 애트리뷰트가 동일한 도메인을 공유할 수 있음
    • EX) 사원번호와 부서 번호가 네 자리 정수를 가질 수 있음
  • 키 애트리뷰트는 한 애트리뷰트 또는 애트리뷰트들의 모임으로서 한 엔티티 타입 내에서 각 엔티티를 고유하게 식별
  • ER 다이어그램에서 기본 키에 속하는 애트리뷰트는 밑줄을 그어 표시
  • 요구사항 명세서명사형용사로 표현됨
  • 엔티티는 독립적인 의미를 갖는데 반해서 애트리뷰트는 독립적인 의미를 갖지 않음
  • ER 다이어그램에서 타원형으로 나타냄
  • 애트리뷰트엔티티 타입실선으로 연결

 

단순 애트리뷰트(simple attribute)

  • 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트
  • ER 다이어그램에서 실선 타원으로 표현함
  • ER 다이어그램에서 대부분의 애트리뷰트는 단순 애트리뷰트

 

복합 애트리뷰트(composite attribute)

  • 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트 (EX. Address)
  • 동일한 엔티티 타입이나 관계에 속하는 애트리뷰트들 중에서 밀접하게 연관된 것을 모아놓은 것
  • 요즘은 이런 방식보다 전부 따로 분해해서 정교하게 사용함

 

단일 값 애트리뷰트(single-valued attribute)

  • 각 엔티티마다 정확하게 하나의 값을 갖는 애트리뷰트
  • ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현됨
    • Ex. 사원의 사원번호 애트리뷰트는 어떤 사원도 두 개 이상의 사원번호를 갖지 않으므로 단일 값 애트리뷰트
  • ER 다이어그램에서 대부분의 애트리뷰트는 단일 값 애트리뷰트

 

  • Ex. 사원당 하나씩 갖고있는 사원 번호 등

 

 

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

  • 각 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트
  • 관계 데이터 모델에서 표현 불가
  • ER 다이어그램에서 이중선 타원으로 표현함

 

  • Ex. 한 사원이 여러개 가질 수 있는 취미 등

 

 

저장된 애트리뷰트(stored attribute)

  • 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트
  • ER 다이어그램에서 단순 애트리뷰트와 동일하게 표현됨
  • ER 다이어그램에서 대부분의 애트리뷰트는 저장된 애트리뷰트
    • EX) 사원 엔티티 타입에서 ‘사원 이름’, ‘급여’는 다른 애트리뷰트와 독립적으로 존재

 

유도된 애트리뷰트(derived attribute)

  • 저장된 애트리뷰트와 반대의 개념
  • 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트
    • EX) 나이 애트리뷰트는 생년월일 애트리뷰트를 통해 알 수 있음
  • 관계 데이터베이스에서 릴레이션의 애트리뷰트로 포함시키지 않는 것이 좋음
  • ER 다이어그램에서 점선 타원으로 표현됨

 

약한 엔티티 타입

  • 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입
  • 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입을 소유 엔티티 타입(owner entity type) 또는 식별 엔티티 타입(identifying entity type)라고 부름
  • ER 다이어그램에서 이중선 직사각형으로 표기
  • 약한 엔티티 타입의 부분 키는 점선 밑줄을 그어 표시

 

부분 키(partial key)

  • 약한 엔티티 타입에서 개별 객체를 구분하는 속성
  • 독립적인 키로는 존재할 수 없지만 상위 개체 타입의 키와 결합하여 약한 개체 타입의 개별 개체를 고유하게 식별하는 속성을 식별자(Discriminator) 혹은 부분 키(Partial Key)라고 한다.
    • EX. 가족과 직원이라는 두 개의 개체가 부양이라는 관계를 맺고 있는 경우
    • 직원에는 직원 번호, 이름, 직책이라는 속성들이 있고 직원 번호가 직원의 고유키
    • 직원이 부양하는 가족이 있다고 할 때 직원이 없으면 부양가족도 존재할 수 없으므로 가족은 약한 개체가 됨.
    • 또한 부양가족의 이름이라는 속성은 직원의 직원 번호와 결합하여 약한 개체 타입을 식별할 수 있으므로 부분 키(식별자)가 됨.

 

관계와 관계 타입

  • 관계는 엔티티들 사이에 존재하는 연관이나 연결로서 두 개 이상의 엔티티 타입들 사이의 맵핑시켜주는 것으로 생각할 수 있음
  • 관계 집합은 동질의 관계들의 집합
  • 관계 타입은 동질의 관계들의 틀
  • 관계 집합과 관계 타입을 엄격하게 구분할 필요는 없음
  • 요구사항 명세에서 흔히 동사는 ER 다이어그램에서 관계로 표현됨
  • ER 다이어그램에서 다이아몬드로 표기
  • 관계 타입이 서로 연관시키는 엔티티 타입들을 관계 타입실선으로 연결

 

관계의 애트리뷰트

  • 관계 타입은 관계의 특징을 기술하는 애트리뷰트들을 가질 수 있음
  • 관계 타입은 키 애트리뷰트를 갖지 않음아무 의미가 없기 때문
    • 관계가 관리하는 엔티티의 키들이 모여 관계 애트리뷰트의 키 역할을 함

 

차수(degree)

  • 관계로 연결된 엔티티 타입들의 개수를 의미
  • 실세계에서 가장 흔한 관계는 두 개의 엔티티 타입을 연결하는 2진 관계

 

카디날리티

  • 카디날리티 비율은 한 엔티티가 참여할 수 있는 관계의 수를 나타냄
  • 엔티티는 관계를 맺지 않을 수도 있음
  • 관계 타입에 참여하는 엔티티들의 가능한 조합을 재현함
  • 관계를 흔히 1:1, 1:N, M:N으로 구분
  • 카디날리티에 관한 정보간선 위에 나타냄
  • 카디날리티는 관계 데이터 모델로 만드는 데에 있어 중요한 정보임
    • 관계 데이터 모델은 원자 값만을 갖기 때문에 1:N, M:N의 관계에서는 집합 처리가 필요
    • 스키마의 설계가 달라짐

 

1:1 관계

  • E1의 각 엔티티가 정확하게 E2의 한 엔티티와 연관되고, E2의 각 엔티티가 정확하게 E1의 한 엔티티와 연관되면 이 관계를 1:1 관계라고 함
  • Ex. 각 사원에 대해 최대한 한 개의 PC가 있고, 각 PC에 대해 최대한 한 명의 사원이 있으면 사원과 PC의 관계는 1:1 관계이다

 

1:N 관계

  • 실세계에서 가장 흔히 나타나는 관계
  • E1의 각 엔티티가 E2의 임의의 개수의 엔티티와 연관되고, E2의 각 엔티티는 정확하게 E1의 한 엔티티와 연관되면 이 관계를 1:N 관계라고 함
  • Ex. 각 사원에 대해 최대한 한 대의 PC가 있고, 각 PC에 대해 여러 명의 사원들이 있으면 PC와 사원 간의 관계는 1:N 관계이다

 

M:N 관계

  • 한 엔티티 타입에 속하는 임의의 개수의 엔티티가 다른 엔티티 타입에 속하는 임의의 개수의 엔티티와 연관됨
  • Ex. 각 사원에 대해 여러 대의 PC가 있고, 각 PC에 대해 여러 명의 사원들이 있으면 사원과 PC의 관계는 M:N 관계이다.

 

카디날리티 비율의 최솟값과 최댓값

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

 

역할(role)

  • 관계 타입의 의미를 명확하게 하기 위해 사용됨
  • 특히 하나의 관계 타입에 하나의 엔티티 타입이 여러 번 나타나는 경우에는 반드시 역할을 표기해야 함
  • 관계 타입의 간선 위에 표시

 

전체 참여와 부분 참여

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

 

다중 관계

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

 

순환적 관계

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

 

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

  • 엔티티는 키 애트리뷰트 이외에 설명 정보를 추가로 가짐
  • 다치 애트리뷰트는 엔티티로 분류해야 함
  • 애트리뷰트들이 직접적으로 설명하는 엔티티에 애트리뷰트들을 붙임
  • 가능한 한 복합 식별자를 피함
  • 관계는 일반적으로 독자적으로 존재할 수 없지만 엔티티 타입과 관계 타입을 절대적으로 구분하는 것은 어려움
    • 설계자의 선택에 따라 달라질 수 있음

 

데이터베이스 설계 과정

  • 응용의 요구사항을 수집하여 기술
  • 응용과 연관이 있는 엔티티 타입들을 식별
  • 응용과 연관이 있는 관계 타입들을 식별
  • 관계가 1:1, 1:N, M:N 중에서 어느 것에 해당하는지 결정
  • 엔티티 타입과 관계 타입들에 필요한 애트리뷰트들을 식별하고, 각 애트리뷰트가 가질 수 있는 값들의 집합을 식별
  • 엔티티 타입들을 위한 기본 키를 식별
  • 응용을 위한 ER 스키마 다이어그램을 그림
  • ER 스키마 다이어그램이 응용에 대한 요구사항과 부합되는지 검사
  • ER 스키마 다이어그램을 DBMS에서 사용되는 데이터베이스 모델로 변환

 

 

출처

데이터베이스 <2014, 용환승 교수님>

 

 

'Computer Science > DataBase' 카테고리의 다른 글

뷰와 시스템 카탈로그(1)  (0) 2022.04.20
릴레이션 정규화  (0) 2022.04.20
물리적 데이터베이스 설계  (0) 2022.04.15
데이터베이스 설계와 ER모델(2)  (0) 2022.04.13
관계대수와 SQL(1)  (0) 2022.04.08