본문 바로가기
Computer Science/DataBase

[데이터베이스] 5장 데이터베이스 설계와 ER모델 (1)

by na1-4an 2023. 11. 25.

0. 데이터베이스 설계

  - 종류(2): 개념적 데이터베이스 설계, 물리적 데이터베이스 설계

  • 개념적 데이터베이스 설계: 엔티티, 관계, 프로세스, 무결성 제약조건 등을 나타내는 추상화 모델 구축.
  • 물리적 데이터베이스 설계: 물리적인 저장 장치, 접근 방식을 다룸.
  • 엔티티: 조직체에서 데이터베이스에 나타내려는 객체.(사람, 장소, 사물 등)
  • 관계: 두 개 이상의 엔티티들 간의 연관
  • 프로세스: 관련된 활동 (?)
  • 무결성 제약조건: 데이터의 정확성, 비즈니스 규칙을 의미.

 

1. 개념적 수준의 모델

: 특정 데이터 모델과 독립적으로 응용 세계를 모델링 할 수 있도록 함. 하향식 개발을 위한 틀을 제공.

→ 인기 개념적 수준의 모델: 엔티티-관계(Entity-Relationship) 모델

  + 구현 데이터 모델: 개념적 데이터 모델이 사상 될 수 있는 모델.

  + 구현 단계에서 사용하는 데이터 모델(3): 관계/계층/네트워크 데이터 모델

 

5-1 데이터베이스 설계의 개요

1. 데이터베이스 설계

  - 정의: 한 조직체의 운영과 목적을 지원하기 위해 데이터베이스를 생성하는 과정.

  - 목적: 사용자들이 요구하는 데이터, 데이터 간의 관계를 표현하는 것.

  + 좋은 설계?: 시간에 따른 모든 데이터 측면 표현, 데이터 중복 최소화, 효율적인 접근, 무결성 제공, 이해하기 쉬움

 

2. 단계(5+2)

  • 요구사항 수집과 분석 - 엔티티, 애트리뷰트, 관계 등을 설문조사, 인터뷰를 통해 파악.
  • 개념적 설계 - 데이터 모델을 기반으로 개념적 스키마를 만듦. 대표적으로 ER모델 사용. 엔티티 타입, 관계 타입, 애트리뷰트들을 식별하고, 도메인을 결정하고, 후보키와 기본키 애트리뷰트를 결정.
  • (DBMS 선정 - 기술적, 정치적, 경제적 요인을 고려해 선정.)
  • 논리적 설계 - 선정된 DBMS를 고려하여 ER 스키마(개념적 스키마)를 릴레이션(논리적 스키마)들로 사상.
  • 정규화
  • 물리적 설계 - 저장 구조, 접근 경로 결정.
  • (트랜잭션 설계 - 데이터베이스에서 동작할 응용프로그램 설계. 독립적.)

 

5-2 ER 모델

1. ER 모델

: 개념적 설계를 위한 모델로, 대표적임. 요즘은 EER(Enhanced)모델이 널리 사용됨.

실세계를 엔티티, 애트리뷰트, 관계로 표현 (+ 카디날리티 비율, 참여 제약조건 등)

 

2. 엔티티

: 사람, 장소, 사물 등과 같이 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체.

 

3. 엔티티 타입

  • 하나의 엔티티는 한 개 이상의 엔티티 집합에 속할 수 있음.
  • 엔티티 타입 - 관계 모델의 릴레이션의 "내포"
  • 엔티티 집합 - 관계 모델의 릴레이션의 "외연"
  • 엔티티 타입과 집합을 엄격히 구분할 필요는 없음.
  • ER 다이어그램에서 엔티티 타입은 직사각형으로 나타냄.

  • 강한 엔티티 타입: 자신의 키 애트리뷰트를 사용해 고유하게 엔티티들을 식별할 수 있는 엔티티 타입.
  • 약한 엔티티 타입: 키를 형성하기 충분한 애트리뷰트들을 갖지 못한 엔티티 타입. 약한 엔티티 타입이 존재하려면 소유 엔티티 타입이 있어야 함.(식별을 가능케 해줌.)

 

4. 애트리뷰트

  • 하나의 엔티티는 연관된 애트리뷰트들의 집합! (사원 - 이름, 직책,급여...)
  • 여러 애트리뷰트가 동일한 도메인을 공유할 수 있음.
  • 요구사항 명세에서 명사형용사로 표현됨.
  • 엔티티와 달리독립적인 의미를 갖지 않음.
  • ER 다이어그램에서 애트리 뷰트는 타원형으로 나타냄.
  • ER 다이어그램에서 애트리뷰트와 엔티티 타입은 실선으로 연결.

  - 애트리뷰트 종류(6)

    ▶ 단순 애트리뷰트: 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트. 대부분 단순 애트리뷰트임.

    복합 애트리뷰트: 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트. 밀접하게 연관된 것을 모아놓은 것.

    단일 값 애트리뷰트: 각 엔티티마다 딱 하나의 값을 갖는 애트리뷰트. 단순 애트리뷰트와 동일하게 표현.

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

    저장된 애트리뷰트: 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트. 단순 애트리뷰트와 동일하게 표현.

    유도된 애트리뷰트: 다른 애트리뷰트의 값으로부터 얻어진 애트리뷰트.

  - 예시

  • Jumin, Name: 단순 애트리뷰트, 단일 값 애트리뷰트, 저장된 애트리뷰트.
  • Age: Jumin으로부터 유도된 애트리뷰트, 단순 애트리뷰트, 단일 값 애트리뷰트. 
  • Empno: 단순 애트리뷰트, 단일 값 애트리뷰트, 저장된 애트리뷰트, 키 애트리뷰트.
  • Address: 복합 애트리뷰트, 단일 값 애트리뷰트, 저장된 애트리뷰트.(?독립적이지 않지 않나)
  • Hobby: 단순 애트리뷰트, 다치 애트리뷰트, 저장된 애트리뷰트

 

5. 약한 엔티티 타입

: 키를 형성하기 충분한 애트리뷰트들을 갖지 못한 엔티티 타입.

: ER 다이어그램에서 이중선 직사각형으로 표기.

소유 엔티티 타입 or 식별 엔티티 타입: 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입. 

     (소유 엔티티 타입이 존재하지 않으면 약한 엔티티 타입은 존재하지 못함.)

부분 키: 한 사원에 속한 부양가족 내에서는 서로 다르지만, 회사 전체 사원들의 부양가족들 전체에서는 같은 경우가 생길 수 있은 애트리뷰트. ER 다이어그램에서 점선으로 밑줄 그음.

 

6. 관계와 관계 타입

  • 관계 타입: 동질의 관계들의 집합.
  • 관계 집합: 동질의 관계들의 틀.
  • ER 다이어그램에서 다이아몬드로 표기.
  • 요구사항 명세에서 "동사"가 관계로 표현됨.

  <<관계의 애트리뷰트>>: 관계의 특징을 기술하는 애트리뷰트. 관계 타입은 애트리뷰트를 갖지 않음

  <<차수>>: 관계로 연결된 엔티티 타입들의 개수. 2진 관계가 가장 흔함.

  <<카디날리티>>: 한 엔티티가 참여할수 있는 관계의 수.

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

  • min: 이 엔티티 타입 내의 각 엔티티는 적어도 min번 관계에 참여함.
  • min=0은엔티티가 반드시 관계에 참여할 필요는 없음.
  • max: 이 엔티티 타입 내의 각 엔티티는 최대 max번 관계에 참여함.
  • max=*는 어떤 엔티티가 관계에 임의의 수만큼 참여할 수 있음을 의미.

car-sell (0,1): 차가 팔리거나, 안팔리거나

customer-sell (0, m): 차를 안사거나, 1대 사거나, 최대 m대 사거나

sell-salesper(0,n): 차를 못팔거나, 1대 팔거나, 최대 n대 팔거나

  <<역할>>: 관계 타입의 의미를 명확하게 하기 위해 사용.

1명의 상사, N의 부하직원

  <<전체 참여와 부분 참여>>

  • 부분참여: 일부 사원들만 부서의 관리자가 될수 있음
  • 전체참여: 모든 부서 엔티티에 대해서 각 부서마다 반드시 1명의 관리자가 있어야함.

  <<다중 관계>>: 두 엔티티 타입 사이에 두 개 이상의 관계 타입이 존재할 수 있음.

  <<순환적 관계>>: 하나의 엔티티 타입이 동일한 관계 타입에 두 번 이상 참여하는 것.

어떤 부품은 다른 부품들이 한 개 이상 모여서 구성될 수 있음.

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

  • 엔티티는 키 애트리뷰트 이외에 설명정보를 추가로 가짐.(추가로 갖지 않으면 애트리뷰트로 취급해야함!)
  • 다치 애트리뷰트는 엔티티로 분류해야함.(관계DBMS를 사용해 구현하려면 엔티티로 분류해야함.)
  • 애트리뷰트들이 직접적으로 설명하는 엔티티에 애트리뷰트들을 붙임.
  • 가능한 한 복합 식별자를 피함.
  • 관는 일반적으로 독자적으로 존재할 수 없지만 엔티티 타입과 관계 타입을 절대적으로 구분하는 것은 어려움.

8. 데이터베이스 설계 과정

  1. 응용 요구사항 수집.
  2. 엔티티 타입 식별. 
  3. 관계 타입 식별. 관계의 카디날리티 비율 결정.
  4. 애트리뷰트 식별. 각 애트리뷰트가 가질 수 있는 집합 식별.
  5. 기본 키 식별.
  6. ER 스키마 다이어그램 그림.
  7. ER 스키마 다이어그램이 응용에 대한 요구사항과 부합되는지 검사.
  8. ER 스키마 다이어그램을 DBMS에서 사용되는 데이터베이스 모델로 변환.

9. ER 모델의 또 다른 표기법

A는 C의 0개거나 1개의 인스턴스와 연관되고, C는 A의 1개의 인스턴스와 연관된다.
A는 C의 0개 이상의 인스턴스와 연관되고, C는 A의 0개거나 1개의 이스턴스와 연관된다.

 

A는 C의 0개 이상의 인스턴스와 연관되고, C는 A의 0개 이상의 인스턴스와 연관된다.