[데이터베이스] 데이터베이스 모델링

📂 데이터 모델링(Data Modeling)

데이터 모델링이란,

현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정

데이터 모델링은 3단계로 구분하여 진행될 수 있다.

  1. 현실 세계(Real World)
    • 사람이 감각 기능을 통해 감지할 수 있는 실체(reality)로 되어 있는 세계
  2. 개념 세계(Conceptual World)
    • 현실 세계의 실체를 논리적 사고를 통해 개념(concept)으로 표현한 단계
  3. 컴퓨터 세계(Computer World)
    • 개념 세계를 컴퓨터가 처리할 수 있는 데이터(data)로 변환한 단계

📄 개념적 데이터 모델링(Conceptual data modeling)

현실 세계의 실체를 추상적 개념(abstract concept)을 통해 중요 개체들을 추출하여 개념 세계로 표현하는 과개념적 데이터 모델링(Conceptual Data Modeling)이라 한다.

개념적 데이터 구조(Conceptual data structure)는 개념적 데이터 모델링으로부터 얻은 결과를 말하는데, 그 결과는 개체 타입, 속성, 그리고 인스턴스로 표현된다. 

그러나 개념적 데이터 구조는 DBMS가 직접 이해할 수 없기 때문에 컴퓨터 세계의 환경에 맞게 변환시켜야 한다.

📄 논리적 데이터 모델링(Logical data modeling)

개념적 데이터 구조(e.g. 다이어그램)로부터 사람의 논리적 개념을 이용하여 논리적 데이터 구조(e.g. 테이블), 즉 데이터 모델(data model)로 표현하는 것이다.

📄 물리적 데이터 모델링(Physical data modeling)

논리적 데이터 구조를 컴퓨터가 접근할 수 있는 물리적 데이터 구조로 변환시키는 것이다. 즉, 컴퓨터가 인식할 수 있도록 데이터베이스 내에 물리적으로 저장시키는 과정이다.

 

저장된 데이터베이스가 현실 세계의 실체들과 얼마나 일치되는가에 따라 모델링의 품질이 좌우된다.

데이터 모델링

📂 데이터 모델

데이터 모델을 들어가기 전에, 데이터베이스 설계(Database Design)란,

현실 세계 → 개념적 데이터 구조 → 논리적 데이터 구조 -> 물리적 데이터 구조로 변환시키는 모든 과정

이 과정에서 개념적 데이터 모델과 논리적 데이터 모델이 산출된다.

📄 개념적 데이터 모델

속성들로 기술된 개체 타입(Entity type)과 이 개체들 간의 관계를 이용하여 현실 세계를 표현하는 방법이다. 예를 들어, 학생, 교수, 과목 개체와 각 개체들의 속성들을 타원 다이어그램으로 표현한 것이 있다.

📄 논리적 데이터 모델 

데이터 필드(field)로 기술된 레코드 타입(record type)과 이 레코드 타입들 간의 관계를 이용해 개념 세계를 표현하는 방법이다. 예를 들어, 다이어그램을 표, 트리, 그래프 등으로 변환하여 DBMS에 입력하는 것을 말한다.

논리적 데이터 모델에는 다양한 것들이 있지만, 우리는 관계형 데이터 모델에 대해서 자세하게 알아본다.

📂 관계(Relationship)

관계란, 

개체들 사이에 존재하는 연관성이나 연결로서, 두 개 이상의 개체 타입들 간의 사상(mapping)

예를 들어, 학생 개체는 교수 개체와 지도라는 관계를 가지고 있다.

관계에서 중요한 개념의 하나가 사상 원소 수(mapping cardinality)이다. 관계 유형은 사상 원소 수에 따라 1:1, 1:N, N:M으로 구분할 수 있다.

📂 E-R 모델

E-R 모델은 개체-관계 모델로 현재까지 개념적 데이터 모델을 위해 가장 많이 사용되고 있는 표현 방법이다. E-R 모델을 그래프 방식으로 표현한 것E-R 다이어그램이다.

E-R 다이어그램은,

  • 개체 타입 → 사각형
  • 개체 타입 간의 관계 → 마름모
  • 개체나 관계의 속성 → 타원
  • 이들을 연결하는 링크 → 선

으로 이루어져 있다.

관계를 표현하는 마름모는 그 관계의 이름과 함꼐 연관된 개체 타입들을 링크로 연결하는데, 그 관계의 사상 원소 수에 따라 레이블을 붙인다. 관계에도 속성이 붙을 수 있다.

 

개체 타입(entity type)에는 두 가지 종류가 있다.

📄 강한 개체 타입

독자적으로 존재하며 개체 타입 내에서 자신의 속성들을 사용하여 고유하게 개체들을 식별할 수 있는 타입

E-R 모델에서 대부분 개체 타입은 강한 개체 타입이다.

 

속성도 다음과 같이 여러 가지 유형으로 구분될 수 있다.

🏷 단순 속성(Simple attribute)

더 이상 다른 속성으로 나눌 수 없는 속성이다.

고객 개체 타입에 ID, 이름, 주소 세 개의 속성이 있는데 이 속성들은 단순 속성이다.

🏷 복합 속성(Composite attribute)

두 개 이상의 속성들로 이루어진 속성이다.

여기서의 주소 속성은 시, 구, 동, 우편번호로 나눌 수 있으므로 복합 속성에 해당한다. 만약, 주소의 각 구성요소를 구분하지 않고 사용한다면, 여러 속성으로 나눌 필요없이 단순 속성으로 사용할 수 있다.

🏷 다치 속성(Multi-value attribute)

각 개체마다 여러 개의 값을 가질 수 있는 속성이다.

E-R 다이어그램에서 이중선 타원으로 표시된다.

🏷 유도된 속성(Derived attribute)

다른 속성의 값으로부터 얻어진 속성이다.

나이 속성은 주민등록번호 속성으로부터 유도될 수 있는 속성이다. 또한, 합, 평균, 개수 등이 유도된 속성에 해당된다. E-R 다이어그램에서 점선 타원으로 표시된다.

 

📄 약한 개체 타입

개체들이 자체적으로 갖고 있는 속성들의 값에 의해 고유하게 식별이 안 될 때가 있다. 예를 들어, 회사에서 어떤 사원의 부양 가족 이름은 다른 사원의 부양 가족의 이름과 같을 수 있다. 이 문제의 해결방안은, 부양 가족이 속한 사원번호를 부양 가족의 이름과 결합하여 부양 가족의 키로 설정하는 것이다. 이처럼,

자체적으로 키를 보유하지 못한 개체

를 약한 개체 타입이라 한다. 이때, 약한 개체 타입에게 키 속성을 부여하는 개체 타입소유 개체 타입(owner entity type) or 식별 개체 타입(identifying entity type)이라 한다.

E-R 다이어그램에서 약한 개체 타입은 이중선 직사각형으로 표기된다.

 

마찬가지로 관계에도 약한 관계와 강한 관계가 있는데,

강한 관계 → 강한 개체들 사이의 관계

약한 관계 → 강한 개체 타입과 약한 개체 타입을 연결하는 관계

여기서 보험은 약한 관계 타입이며, “사원” 객체 타입은 “부양가족” 개체 타입의 소유 객체 타입이다.

 

📄 참여 제약 조건

참여 제약 조건에는 전체 참여와 부분 참여가 있다.

어떤 관계에 객체 타입의 모든 객체들이 참여하면 전체 참여, 일부 객체만 참여하면 부분 참여라고 한다.

위를 예시로 살펴보자.

모든 부서 개체에 대해서 각 부서마다 1명의 관리자가 있어야 하기 때문에 모든 부서 개체들관리 관계를 통해 어떤 사원 개체와 반드시 연결되어야 한다. → 전체 참여

이에 반해, 일부 사원들만 부서의 관리자가 될 수 있기 때문에 사원 개체 타입에 속하는 하나 이상의 개체가 관리 관계에 참여하지 않을 수 있다. → 부분 참여

E-R 다이어그램에서 전체 참여는 이중 실선으로 표시하는데, 약한 개체 타입은 항상 관계에 전체 참여한다.

📂 관계형 데이터 모델(Relational data model)

관계형 데이터 모델은,

개체와 관계가 모두 테이블(릴레이션)로 표현

예를 들어, 위의 학생, 교수, 과목의 E-R 다이어그램을 관계형 데이터 모델로 표현한다면 다음과 같다.

이와 같이 6개의 테이블로 표현될 수 있다.

학생, 교수, 과목 테이블은 개체 릴레이션이라 하고, 지도, 수강, 강의와 같이 개체 간의 관계를 나타내는 테이블은 관계 릴레이션이라 한다.

이 처럼, 개체와 관계에 대한 정의만 명세한 것릴레이션 스키마(relation schema)라 한다.