본문 바로가기

ComputerScience/Database 이론

[Database] 4. Data modeling 개념 정리

728x90

 

안녕하세요. CS지식 정리도 할 겸, 학교에서 배운 데이터베이스 개념 + "데이터베이스 개론-IT COOKBOOK" 의 책을 공부하며 알게 된 내용을 정리하려고 합니다. 지난 포스트 "데이터베이스 시스템(DBS) 구성요소 개념 정리"에 이어 이번에는 Data modeling에 관련된 개념을 정리해보려고 합니다. 주관적으로 작성된 글이기에 틀린 내용이 있을 수 있습니다.(댓글로 알려주시면 감사합니다:)

1. 데이터 모델링(Data modeling)

현실 세계에 있는 여러 현상, 데이터 중에서 조직에 필요한 데이터만 컴퓨터 속 데이터 베이스로 옮기는 변환 과정

 

데이터 모델링은 크게 3단계가 있습니다. (개념적, 논리적, 물리적) 일반적으로 이 모두를 합쳐서 데이터 모델링이라고 부릅니다. 데이터 모델링의 결과물을 표현할 도구로 데이터 모델이 존재합니다. 데이터 모델은 연산(Operation) + 제약조건(Constraint) + 데이터 구조(Data structure)로 구성되어 있습니다.

  • 개념적(Conceptual) 데이터 모델링: 현실세계 주요 데이터를 개념세계로 변환하는 작업
  • 논리적(logical) 데이터 모델링: 개념 세계의 데이터를 데이터베이스에 저장할 수 있게 변환하는 작업

이 두 단계 과정들 각 단계의 절차를 밟는 과정을 추상화라고 합니다.

 

 

개념적 데이터 모델

개념적 데이터 모델링의 결과물은 개념적 데이터 모델입니다.

대표적으로 E-R(Entity-Relationship) model이 있습니다. 현실세계를 기반으로 모델링한 결과입니다.

E-R model

위의 사진에서 하나의 Entity는 db의 테이블 이름이라 생각하면 쉽습니다. 개체간 관계를 표현한 그림으로 E-R D(Diagram)을 그릴 수 있습니다. E-R diagram에서

Entity는 네모,

속성은 동그라미,

key속성은 속성 명 아래에 밑줄,

다중 값속성은 동그라미 두 개,

관계는 마름모

필수적 참여는 관계 표현 시 줄 두 개,

약한 개체는 마름모 두 개로 표현할 수 있습니다. 

개체(Entity)

개체(Entity)는 하나의 속성(Attribute)을 가질 수 있고 이런 속성들로 개체가 표현됩니다. 그리고 개체들은 관계(Relationship)를 형성할 수 있습니다. 

Entity ex: 고객, 학생, 볼펜 etc

속성(Attribute)

속성들은 개체를 표현하기 위한 정보입니다. 속성은 데이터의 가장 작은 논리적 단위 입니다.

 

속성 값 개수 단일 값 속성
다중 값 속성
의미 분해 가능성 단순 속성
복합 속성
기존 속성 값에서 유도 유도 속성
etc null, key attribute

 

고객 Entity에 고객명, 연락처가 존재한다면, 고객명은 단일 값 속성입니다. 반면 연락처는 집 전화번호, 휴대폰 전화번호, 이메일 등 다중 값을 가질 수 있습니다.

 

 

고객 Entity에 생년월일 속성을 추가한다면, 생년월일이란 (복합)속성은 년, 월, 일의 (단순)속성으로 세분화가 가능합니다.

유도 속성은 다른 속성의 값(데이터)에서 유도되는 값을 의미합니다.

 

추가적으로 null 속성이 존재합니다. 그리고 key 속성은 Entity를 식별하기 위한 속성입니다. key 가 되기 위한 속성은 한 개 또는 여러 개가 될 수 있습니다.

Attribute ex: 닉네임, 학번, 학년, 학과, 잉크 색, 아이디, 연락처, 생년월일 etc

관계(Relationship)

관계는 개체와 속성만큼이나 중요한 개념입니다. 개체가 맺는 연관성의 의미는 관계를 통해 확인할 수 있습니다.

 

고객(Entity)은 책(Entity)을 구독(Relationship)한다

 

관계는 추후 Relational schema로 분류될 수도 있습니다. 이 경우 속성이 추가될 수 있습니다. Entity측의 relational schema로 결합될 수도 있습니다. 

 

Relationship ex: 주문, 수강, 구독 etc

Mapping cardinality(관계 유형)

개체(Entity) 간의 관계(Relationship)에서 한 개체 인스턴스가 다른 개체 인스턴스와 어떻게 연결될 수 있는지를 설명하는 개념입니다.

매핑 카디날리티는 개체 간 관계에서 발생하는 인스턴스의 수를 나타냅니다. 1:1 관계 또는 1:n 또는 n:m 관계를 갖을 수 있습니다.

 

 

관계 참여에는 필수적 참여, 선책적 참여(일반적인 경우)가 있습니다.

 

관계의 경우 약한개체와 강한개체가 있습니다. 약한 개체는 다른 개체의 존재 여부에 의존적니다.

논리적 데이터 모델

논리적 데이터 모델링의 결과물은 논리적 데이터 모델입니다.

대표적으로 관계(Relational) 데이터 모델(ex Relational Schema)이 있습니다. 개념적 데이터 모델인 ER-D를 바탕으로 모델링한 결과입니다.

 

관계 데이터 모델은 db의 논리적 구조를 2차원 table형식으로 표현합니다. 각 테이블은 열(attribute)과 행(record, data, tuple ...)으로 구성됩니다.

 

그 외에도 계층 데이터 모델(tree 형태), 네트워크 데이터 모델(graph 형태)가 있습니다.( 관계 데이터 모델 등장 전에 사용됬던 모델들 )

 

 

틀린 부분 발견 시 댓글로 남겨주시면 정말 감사합니다.

728x90