카테고리 없음

데이터베이스 _ER

kitty_cat 2023. 4. 15. 19:17

- 데이터베이스 설계

▶ 개념적 데이터베이스 설계와 물리적 데이터베이스 설계로 구분

▶ 개념적 데이터베이스 설게는 실제로 데이터베이스를 어떻게 구현할 것인가와는 독립적으로 정보 사용의 모델을 개발하는 과정

▶ 물리적 데이터베이스 설계에서는 물리적인 저장 장치와 접근 방식을 다룸

- 개념적 수준의 모델

▶ 데이터베이스 구조나 스키마를 하향식으로 개발할 수 있기 위한 틀을 제공

▶ 인기 있는 개념적 수준의 모델은 엔티티-관계(ER: Entity-Relationship) 모델

▶ ER 모델과 같은 개념적인 데이터 모델이 사상될 수 있는 다수의 구현 데이터 모델(implementation data model)이 존재함

5.1 데이터베이스 설계의 개요

- 데이터베이스 설계

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

▶ 모든 주요 응용과 사용자들이 요구하는 데이터, 데이터 간의 관계를 표현하는 것

- 데이터베이스 설계 과정

1) 요구사항 수집과 분석

▶ 흔히 기존의 문서를 조사하고, 인터뷰나 설문 조사 등이 시행됨

▶ 요구사항에 관한 지식을 기반으로 관련 있는 엔티티들과 이들의 애트리뷰트들이 무엇인지, 엔티티들 간의 관계가 무엇인가 등을 파악함

2) 개념적 설계

: 모든 물리적인 사항과 독립적으로, 한 조직체에서 사용되는 정보의 모델을 구축하는 과정

▶ 사용자들의 요구사항 명세로부터 개념적 스키마가 만들어짐

▶ 대표적인 데이터 모델: ER 모델

▶ 엔티티 타입, 관계 타입, 애트리뷰트들을 식별하고, 애트리뷰트들의 도메인을 결정하고, 후보 키와 기본 키 애트리뷰트들을 결정함

▶ 완성된 데이터 스키마는 ER 다이어그램으로 표현됨

3) DBMS 선정

▶ 여러 가지 요인들을 검토한 후 DBMS를 선정

▶ 기술적 요인: DBMS가 제공하는 데이터 모델, 저장 구조, 인터페이스 등

▶ 정치적 요인: 고수준의 전략적인 결정 등

▶ 경제적 요인: DBMS 구입 비용, 유지보수 비용 등

4) 논리적 설계

▶ 데이터베이스 관리를 위해 선택한 DBMS의 데이터 모델을 사용하여 논리적 스키마(외부 스키마도 포함)를 생성함

▶ 개념적 스키마에 알고리즘을 적용하여 논리적 스키마 생성

5) 물리적 설계

▶ 처리 요구사항들을 만족시키기 위해 저장 구조와 접근 경로 등을 결정함

6) 트랜잭션 설계

▶ 트랜잭션은 완성될 데이터베이스에서 동작할 응용 프로그램

▶ 데이터베이스 스키마는 트랜잭션에서 요구하는 모든 정보를 포함해야 함

5.2 ER 모델

- ER 모델

▶ 데이터베이스 설계를 용이하게 하기 위해 P.P. Chen이 1976년에 제안함

▶ 현재는 EER(Enhanced Entity Relationship) 모델이 데이터베이스 설계 과정에 널리 사용되고 잇음

▶ 실세계를 엔티티, 애트리뷰트, 엔티티들간의 관계로 표현함

▶ 적은 노력으로 쉽게 배울 수 있고, 전문가가 아니어도 이해하기 쉬우며, 자연어보다는 좀더 정형적이고, 구현에 독립적이어서 데이터베이스 설계자들이 최종 사용자들과 의사 소통을 하는데 적합함

- 엔티티

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

▶ 엔티티 타입: 동일한 애트리뷰트들을 가진 엔티티들의 틀

▶ 엔티티 집합: 동일한 애트리뷰트들을 가진 엔티티들의 모임

▶ 하나의 엔티티는 한 개 이상의 엔티티 집합에 속할 수 잇음

- 강한 엔티티 타입

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

- 약한 엔티티 타입

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

▶ 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입을 소유 엔티티 타입(owner entity type) 또는 식별 엔티티 타입(identifying entity type)이라고 부름

▶ 이중선 직사각형으로 표시

▶ 부분 키는 점선 밑줄을 그어 표시

- 애트리뷰트

▶ 하나의 엔티티는 연관된 애트리뷰트들의 집합으로 설명됨

▶ 한 애트리뷰트의 도메인은 그 애트리뷰트가 가질 수 있는 모든 가능한 값들의 집합을 의미

▶ 여러 애트리뷰트가 동일한 도메인을 공유할 수 있음

▶ 요구사항 명세에서 명사나 형용사로 표현됨

1) 단순 애트리뷰트(simple attribute)

: 더 이상 다른 애트리뷰트로 나눌 수 없는 애트리뷰트

▶ ER 다이어그램에서 실선 타원으로 표현함

2) 복합 애트리뷰트(composite attribute)

: 두 개 이상의 애트리뷰트로 이루어진 애트리뷰트

▶ 동일한 엔티티 타입이나 관계 타입에 속하는 애트리뷰트들 중에서 밀접하게 연관된 것을 모아 놓은 것

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

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

ex. 사원의 사원번호 애트리뷰트는 어떤 사원도 두 개 이상의 사원번호를 갖지 않으므로 단일 값 애트리뷰트

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

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

▶ 이중선 타원으로 표시함

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

: 다른 애트리뷰트와 독립적으로 존재하는 애트리뷰트

▶ ex. 사원 엔티티 타입에서 사원 이름, 급여는 다른 애트리뷰트와 독립적으로 존재함

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

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

▶ 관계 데이터베이스에서 릴레이션의 애트리뷰트로 포함시키지 않는 것이 좋음

▶ 점선 타원으로 표현함

- 관계와 관계 타입

▶ 관계는 엔티티들 사이에 존재하는 연관이나 연결로서 두 개 이상의 엔티티 타입들 사이의 사상으로 생각할 수 있음

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

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

▶ 다이아몬드로 표기

- 차수(degree)

: 관계로 연결된 엔티티 타입들의 개수를 의미

▶ 가장 흔한 관계는 2진 관계

- 카디날리티

: 한 엔티티가 참여할 수 잇는 관계의 수

▶ 관계 타입에 참여하는 엔티티들의 가능한 조합을 제한함

▶ 1:N, 1:1, M:N 등

- 역할(role)

▶ 관계 타입의 의미를 명확하게 하기 위해 사용됨

▶ 특히 하나의 관계 타입에 하나의 엔티티 타입이 여러 번 나타나는 경우에는 반드시 역할을 표기해야 함

▶ 관계 타입의 간선 위에 표시

- 전체 참여와 부분 참여

▶ 전체 참여: 어떤 관계에 엔티티 타입 E1의 모든 엔티티들이 관계 타입 R에 의해서 어떤 엔티티 타입 E2의 어떤 엔티티와 연관되는 것을 의미

▶ 부분 참여: 어떤 관계에 엔티티 타입 E1의 일부 엔티티만 참여하는 것을 의미

▶ 약한 엔티티 타입은 항상 관계에 전체 참여

▶ 전체 참여는 ER 다이어그램에서 이중 실선으로 표시

- 다중 관계

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

- 순환적 관계

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

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

▶ 엔티티는 키 애트리뷰트 이외에 설명 정보를 추가로 가짐

▶ 다치 애트리뷰트는 엔티티로 분류해야 함

▶ 애트리뷰트들이 직접적으로 설명하는 엔티티에 애트리뷰트들을 붙임

▶ 가능한 한 복합 식별자를 피함

- 애트리뷰트 vs. 엔티티

▶ 엔티티 타입과 애트리뷰트를 구분하는 절대적인 기준 없음

- ER 표기법 요약

5.3 데이터베이스 설계 사례

생략

5.4 ER 스키마를 관계 모델의 릴레이션으로 사상

- 알고리즘의 각 단계에서 릴레이션으로 사상되는 ER 스키마의 사상

- ER 관계 사상 알고리즘

단계 1) 정규 엔티티 타입과 단일 값 애트리뷰트

▶ ER 스키마의 각 정규 엔티티 타입 E에 대해 하나의 릴레이션 R을 생성

▶ E에 있던 단순 애트리뷰트들을 릴레이션 R에 모두 포함시킴

▶ E에서 복합 애트리뷰트는 그 복합 애트리뷰트를 구성하는 단순 애트리뷰트들만 릴레이션 R에 포함시킴

▶ E의 기본 키가 R의 기본 키가 됨

단계 2) 약한 엔티티 타입과 단일 값 애트리뷰트

▶ ER 스키마에서 소유 엔티티 타입 E를 갖는 각 약한 엔티티 타입 W에 대하여 릴레이션 R을 생성함

▶ W에 있던 모든 단순 애트리뷰트들을 릴레이션 R에 포함시킴

▶ 소유 엔티티 타입에 해당하는 릴레이션의 기본 키를 약한 엔티티 타입에 해당하는 릴레이션에 외래 키로 포함시킴

단계 3) 2진 1:1 관계 타입

▶ ER 스키마의 각 2진 1:1 관계 타입 R에 대하여, R에 참여하는 엔티티 타입에 대응되는 릴레이션 S와 T를 찾음

▶ S와 T 중에서 한 릴레이션을 선택하여, 만일 S를 선택했다면 T의 기본 키를 S에 외래 키로 포함시킴

▶ S와 T 중에서 관계 타입에 완전하게 참여하는 릴레이션을 S의 역할을 하는 릴레이션으로 선택함