반응형

DB 설계자의 역할

  1. Conceptaul(High-Level) Data Model: 개념적 데이터 모델 설계
  2. Representational(Implementation) Data Model: 구현 데이터 모델 설계
  3. Physical(Low-Level) Data Model: 물리적 데이터 모델 설계

 DB 설계자의 역할은 DDL(Data Definition Language)을 사용하여 현실세계를 위와 같은 3가지의 데이터 모델로 설계하는 것이다. 설계 순서는 작성된 순서와 동일하게 개념 -> 구현 -> 물리 데이터 모델 순이다.

 

참고로 이 과정을 DBMS의 관점에서 살펴보면 다음과 같다..

더보기

(참고) DBMS 관점에서 보기

 DB 설계자는 개념, 구현, 물리적 모델을 제작해야 한다고 했다. 그렇다면 이러한 DB 설계자의 역할을 DBMS의 관점에서 바라보면 어떨까?

 

DBMS 속 메타 데이터에서는 추상화를 위해 스키마를 다음과 같이 관리한다.

  1. External Schema
  2. Conceptual Schema
  3. Physical Schema

이러한 구조에서 살펴보면 DB 설계자가 가장 먼저 구현하는 개념적 데이터 모델에 대한 정보는 DBMS에서 가운데에 위치한 Conceptual Schema에 해당하는 것을 살펴볼 수 있다.

 

데이터 모델의 종류

 데이터 모델은 DB 설계자가 DDL을 통해 구현한 것이다. 이러한 데이터 모델은 3가지로 나뉜다.

  1. 고수준(개념적) 데이터 모델
  2. 표현(구현) 데이터 모델
  3. 저수준(물리적) 데이터 모델

모두 앞에서 살펴본 내용이다. 우리가 이 부분에서 기억할 점은 일반적으로 고수준(개념적) 데이터 모델을 구현하기 위해 ER 데이터 모델을 사용한다는 점, 그리고 표현(구현) 데이터 모델을 구현하기 위해 관계 데이터 모델을 사용한다는 점이다.

 

위 그림은 협업에서 마주할 수 있는 ER 데이터 모델의 모습이다.

 

ER 데이터 모델을 이해할 수 있다면 우리는 필요한 정보의 존재 여부를 파악할 수 있으며, DBA에게 구체적으로 요구사항을 전달할 수 있다.

 

잘 설계된 DB의 장점

  1. 중복 최소화
  2. DB에 대한 효율적인 접근 제공
  3. 무결성 제공
  4. 이해 쉬움

 

DB 주요 설계 단계

 이러한 DB를 설계할 땐 다음과 같은 '주요' 단계를 거친다.

  1. 요구사항 분석
  2. 개념적 설계
  3. 논리적 설계

먼저 요구사항 수집 및 분석이다. 이 단계에선 기존 문서를 조사하고, 인터뷰나 설문 조사 등을 통해 정보를 취득한다. 도메인 지식을 기반으로 하여 엔티티와 속성, 관계를 파악하는 것이 중요하다. 그리고 문서만보고도 주로 수행될 연산이 무엇이며, 그 연산의 의미는 무엇인지, 접근할 데이터의 양은 어떠한지 등을 가늠할 수 있어야 한다.

 

다음으로 개념적 설계 단계이다. 앞서 얻은 문서로부터 개념적 스키마를 그리는 단계이다. 이때 대표적으로 사용하는 데이터 모델이 ER 모델이다. 이 과정에서는 엔티티 타입, 관계 타입, 애트리뷰트 등을 식별하고, 도메인과 후보 키, 기본 키를 설정한다. 이 단계에 대해서는 추후 더 자세히 다룰 것이다.

 

마지막으로 논리적 설계 단계이다. ER 모델로 표현된 개념적 스키마로부터 논리적 스키마를 제작하는 단계이다. 이때 더 좋은 관계 ㄷ이터베이스 스키마로 변환하기 위해 정규화(Normalization) 과정을 거친다.

 


Entity

 다음으로 ER 모델의 구성에 대해 살펴보고자 한다.

 

그 첫 번째로 엔티티이다. 엔티티는 독립적으로 존재하면서 고유하게 식별이 가능한 실세계의 객체이다. 이러한 엔티티와 관련하여 엔티티 집합과 엔티티 타입이라는 개념이 소개된다.

  • 엔티티 집합: 김OO, 박OO과 같은 실존하는 엔티티의 모임이다.
  • 엔티티 타입: 사람(김OO, 박OO)과 같은 엔티티 집합 전체의 상위 개념으로, 일종의 이다.

 

 이러한 엔티티는 독자적으로 존재 가능 여부에 따라 강한 엔티티 타입과 약한 엔티티 타입으로 나뉜다.

 

강한 엔티티 타입은 독자적으로 존재할 수 있으며, 자신의 키 애트리뷰트를 사용해 고유하게 식별할 수 있는 엔티티 타입을 말한다. ER 다이어그램에서 직사각형으로 나타낸다.

 

약한 엔티티 타입은 독자적으로 존재할 수 없으며, 소유 엔티티 타입이 필요한 개념이다. ER 다이어그램에서 점선으로 이루어진 직사각형으로 나타낸다. 그리고 약한 엔티티 타입의 부분 키는 점선으로 된 밑줄로 표시한다.

 

Attribute

 애트리뷰트는 엔티티를 구성하는 속성이다. 이러한 애트리뷰트의 도메인은 해당 속성 값이 취할 수 있는 범주를 의미한다. 그리고 키 애트리뷰트는 각 엔티티를 고유하게 식별하는 애트리뷰트(집합)이다. ER 다이어그램에서 타원으로 나타낸다.

 

단순 애트리뷰트는 하나의 애트리뷰트로만 이루어져있으며, 복합 애트리뷰트는 여러 개로 이루어진 애트리뷰트를 말한다.

 

다치 애트리뷰트는 엔티티마다 여러 개의 값을 가질 수 있는 애트리뷰트를 말한다. 복합 애트리뷰트는 개인정보(이름, 전화번호, 주소)와 같이 일정한 형식이 있는 반면 다치 애트리뷰트는 취미(운동, 독서, 요리, ...)와 같이 형식 없이 계속 나열될 수 있다.

 

관계와 관계 타입

 관계는 엔티티 사이의 연관이다. 주로 명세서에서 동사로 표현된다. ER 다이어그램에서는 마름모로 나타낸다.

 

이러한 관계는 애트리뷰트를 가질 수 있지만 키 애트리뷰트는 갖지 않는다는 특징이 있다.

 

그리고 관계에서는 차수(Degree)를 셀 수 있는데, 이는 관계로 연결된 엔티티 타입들의 개수를 의미한다.

 

관계에서 또다른 중요한 특징이 있는데, 카디날리티(Mapping Cardinality) 혹은 대응수이다. 이는 특정 관계 타입을 통해 연관지을 수 있는 상대 엔티티 타입의 원소 개수를 나타낸 것으로 1:1, 1:N, M:N으로 표시한다.

 

또한 관계에서는 참여 정도에 따라 전체 참여와 부분 참여로 나뉜다. 이는 참여 제약 조건인데, 전체 참여로 묶인 엔티티 타입의 경우에는 해당 엔티티 타입에 속한 모든 엔티티가 관계에 속해야 한다는 의미이다. 위 그림에서 모든 DEPARTMENT 엔티티는 MANAGES의 관계에 속해야 함을 의미한다.

 

덧붙여 약한 엔티티 타입은 항상 전체 참여 관계로 속한다는 중요한 특징이 있다.

 

두 엔티티 타입 사이에 두 개 이상의 관계를 표현
하나의 엔티티 타입이 동일한 관계 타입에 2번 이상 참여함을 표현
관계 타입의 의미를 명확하게 하기 위해 표기

이외에도 관계 타입에서는 위와 같은 개념이 소개되고 있다.

 


요약 1. DB 설계 과정을 간단히 작성하시오.

  1. 문서 등을 통해 요구사항 수집 후 기술
  2. 엔티티 타입 식별
  3. 관계 타입 식별
  4. 대응 수 파악
  5. 엔티티 타입과 관계 타입에 필요한 애트리뷰트 식별 및 도메인 설정
  6. 엔티티 타입을 위한 기본 키 식별
  7. ER 스키마 다이어그램 작성
  8. 요구사항에 부합하는지 검증
  9. 다이어그램을 통해 논리적 데이터베이스 설계

 

요약2. ER 표기법을 정리하시오.

 

반응형

+ Recent posts