목차
데이터 모델링(Data Modeling)
현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터 베이스로 옮기는 변환 과정으로
데이터베이스 설계의 핵심 과정이다.
현실 세계의 데이터를 바로 변환하기는 어렵기 때문에 2단계 데이터 모델링이 등장한다.
2단계 데이터 모델링
변환 과정을 2단계로 나눈다.
- 개념적 데이터 모델링(Conceptual Modeling)
- 현실 세계의 중요 데이터를 추출해 개념 세계로 옮기는 작업
- 데이터베이스에 저장하여 관리할 만한 가치가 있는 중요 데이터만 추출(필요한 것만 추출) → 추상화
- 논리적 데이터 모델링(Logical Modeling)
- 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업
- 데이터베이스에 어떤 구조로 저장할 것인가 결정(표, 트리, 그래프 모양)
데이터 모델(Data Model)
데이터 모델이란 데이터 모델링의 결과물을 표현하는 도구이다.
- 개념적 데이터 모델
사람의 머리로 이해할 수 있도록 현실 세계를 개념적 모델링하여 데이터베이스의 개념적 구조로 표현하는 도구
예로는 개체-관계 모델이 있다.
- 논리적 데이터 모델
개념적 구조를 논리적 모델링하여 데이터베이스의 논리적 구조로 표현하는 도구
예로는 관계 데이터 모델이 있다.
데이터 모델은 아래와 같은 식으로 표현할 수 있다.
D = <S, O, C>
- D(data) : 데이터 모델
- S(Structure) : 구조
- O(Operation) : 연산
- C(Constraint) : 제약 조건
D는 S, O, C의 결합으로 이루어져 있다.
- 데이터 구조(S)
자주 변하지 않는 정적인 특성으로
개념적 데이터 모델에서는 현실 세계를 개념 세계로 추상화했을 때, 어떤 요소로 이루어져 있는지를 표현하는 개념적 구조가 데이터 구조이다.
논리적 데이터 모델에서는 데이터를 어떤 모습으로 저장할 것인지 표현하는 논리적 구조가 데이터 구조이다.
- 연산(O)
데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현한 값들을 처리하는 작업이다. 값이 연산에 의해 계속 변경될 수 있어 동적인 특성을 가진다.
- 제약 조건(C)
구조적 측면의 제약 사항과 연산을 적용하는 경우 허용할 수 있는 의미적 측면의 제약 사항이 있다.
데이터 모델링과 데이터 모델의 관계
데이터 모델링과 데이터 모델을 쉽게 생각해보면 아래와 같이 표현할 수 있다.
- 개념적 데이터 모델링
설계도를 그리는 과정
- 개념적 데이터 모델
설계도를 그릴 때 사용하는 방법이나 도구
- 논리적 데이터 모델링
설계도를 토대로 모델하우스를 만드는 과정
- 논리적 데이터 모델
모델하우스를 만들 때 사용하는 방법이나 도구
데이터베이스 설계
데이터베이스 설계는 아래와 같이 나타낼 수 있다.
- 개념적 데이터 모델링 + 논리적 데이터 모델링
개념적 데이터 모델링이 끝나면 개념적 구조가 결정되고, 논리적 데이터 모델링이 끝나면 논리적 구조가 결정된다.
따라서 2단계 데이터 모델링이 끝나면 논리적 구조가 결정된다.
논리적 구조를 결정 후 저장 장치에 실제 저장되는 형태인 물리적 구조로 변환해 컴퓨터 세계에 저장하게 된다.
개체-관계 모델(E-R Model, ERM; Entity-Relationship Model)
위에서 설명한 개념적 데이터 모델의 예로 개체-관계 모델이 있었다.
ERM이란 Peter Chen이 제안한 개념적 데이터 모델로 개체와 개체 간의 관계를 이용해 현실 세계를 개념적 구조로 표현한다.
핵심 요소는 아래와 같다.
- 개체
- 속성
- 관계
- 개체-관계 다이어그램(E-R Diagram, ERD)
ERD는 ERM을 그림으로 표현한 것이다.
개체-관계 모델 : 개체(Entity)
- 현실 세계에서 조직을 운영하는데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것
- 저장할 가치가 있는, 중요 데이터를 가지고 있는 사람이나 사물, 개념, 사건 등 다른 개체와 구별되는 이름을 가지고 있다.
- 각 개체만의 고유한 특성이나 상태, 즉 속성을 하나 이상 가지고 있다.
- 유무형 모두를 포함
- 파일 구조의 레코드(관련된 아이템들을 여러개 같이 포함하고 있는 데이터)와 대응된다.
- ERD에서 사각형으로 표현하며, 사각형 안에 이름을 표기
개체의 예는 아래와 같다.
- 서점에 필요한 개체 : 고객, 책
- 학교에 필요한 개체 : 학과, 과목
- 개체 타입(Entity Type)
개체를 고유의 이름과 속성들로 정의한 것이다.
파일 구조의 레코드 타입에 대응된다.
개체가 갖고 있는 속성 관계 틀만 잡아놓은 것으로 값이 들어간 형태는 아니다.
- 개체 인스턴스(Entity Instance)
개체를 구성하고 있는 속성이 실제 값을 가짐으로써 실체화된 개체이다.
Entity Occurrence라고도 한다.
파일 구조의 레코드 인스턴스에 대응된다.
개체 구성 속성에 실제 값을 집어넣은 것이다.
- 개체 집합(Entity Set)
특정 개체 타입에 대한 개체 인스턴스들을 모아놓은 것이다.
개체-관계 모델 : 속성(Attribute)
- 개체나 관계가 가지고 있는 고유의 특성
- 의미있는 데이터의 가장 작은 논리적 단위
- 파일 구조의 필드와 대응된다.
- ERD에서 타원으로 표현하고 타원 안에 이름을 표기
- 개체 타입을 나타내는 직사각형과 실선으로 연결해 그 개체의 속성임을 표시
속성의 예는 아래와 같다.
- 고객 개체의 속성 : 고객 아이디, 고객명
- 책 개체의 속성 : 도서명, 저자
개체와 속성의 E-R 다이어그램 표현 예는 아래 그림과 같다.
개체-관계 모델 : 속성의 분류
속성을 정해진 기준에 따라 분류할 수 있다.
- 속성값의 개수에 따라
- 단일값 속성
- 다중값 속성
- 의미의 분해 가능성에 따라
- 단순 속성
- 복합 속성
- 다른 속성에 의해 값이 유도되어 결정되는 경우
- 유도 속성
속성의 분류 : 단일값 속성과 다중값 속성
- 단일값 속성(Single-Valued Attribute)
값을 하나만 가질 수 있는 속성이다. 예로 고객 개체의 고객명, 적립금 속성이 있다.
- 다중값 속성(Multi-Valued Attribute)
값을 여러개 가질 수 있는 속성이다. 예로 고객 개체의 연락처 속성 혹은 책 개체의 저자 속성이 있다.
ERD에서 이중 타원으로 표현한다.
개체-관계 모델 : 속성의 분류 - 단순 속성과 복합 속성
- 단순 속성(Simple Attribute)
의미를 더는 분해할 수 없는 속성이다. 예로 고객 개체의 적립금 속성, 책 개체의 도서명, ISBN, 가격 속성이 있다.
- 복합 속성(Composite Attribute)
의미를 분해할 수 있는 속성이다. 예로 고객 개체의 주소 속성과 고객 개체의 생년월일 속성이 있다.
주소는 도, 시, 동, 우편번호 등으로 의미를 세분화할 수 있고 생년월일은 년, 월, 일로 의미를 세분화할 수 있다.
개체-관계 모델 : 속성의 분류 - 유도 속성(Derived Attribute)
기존의 다른 속성의 값에서 유도되어 결정되는 속성이다. 값이 별도로 저장되지 않는다.
예로 책 개체의 가격과 할인율 속성으로 계산되는 판매 가격 속성, 고객 개체의 출생년도 속성으로 계산되는 나이 속성이 있다.
ERD에서 점선 타원으로 표현한다.
개체-관계 모델 : 속성 - 널 속성(Null Attribute)
null 값이 허용되는 속성이다.
null 값은 아직 결정되지 않거나 모르는 값 또는 존재하지 않는 값으로 공백이나 0과는 의미가 전혀 다르므로 주의해야 한다.
개체-관계 모델 : 속성 - 키 속성(Key Attribute)
각 개체 인스턴스를 식별하는데 사용되는 속성이다.
모든 개체 인스턴스의 키 속성 값은 다르며 둘 이상의 속성들로 구성되기도 한다.
예로 고객 개체의 고객 아이디 속성이 있다.
ERD에서 밑줄로 표현한다.
개체-관계 모델 : 관계(Relationship)
- 개체와 개체가 맺고 있는 의미있는 연관성
- 개체 집합들 사이의 대응 관계, 즉 매핑(mapping)을 의미한다.
- ERD에서 마름모로 표현
관계의 예는 아래와 같다.
고객 개체와 책 개체 간의 구매 관계 : 고객은 책을 구매한다.
개체-관계 모델 : 관계의 유형
- 관계에 참여하는 개체 타입의 수 기준
- 이항 관계 : 개체 타입 2개가 맺는 관계
- 삼항 관계 : 개체 타입 3개가 맺는 관계
- 순환 관계 : 개체 타입 하나가 자기 자신과 맺는 관계
- 매핑 카디널리티 기준
- 일대일(1:1) 관계
- 일대다(1:n) 관계
- 다대다(n:m) 관계
매핑 카디널리티(Mapping Cardinality)란 관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수이다.
ERD에서 레이블로 표기한다.
쉽게 이야기하면 A, B 개체가 있을 때, A의 인스턴스가 B의 인스턴스 몇개와 연관되는지에 대한 기준인 것이다.
개체-관계 모델 : 관계의 유형 - 일대일(1:1) 관계
개체 A의 각 인스턴스가 개체 B의 인스턴스 하나와 관계를 맺을 수 있고, 개체 B의 각 인스턴스도 개체 A의 인스턴스 하나와 관계를 맺을 수 있다.
예로 남편 개체와 아내 개체 관계가 있다. 남편 개체 중 한 인스턴스는 아내 개체 중 한 인스턴스와만 관계를 맺을 수 있으며 그 반대도 마찬가지이다.
개체-관계 모델 : 관계의 유형 - 일대다(1:n) 관계
개체 A의 각 인스턴스가 개체 B의 인스턴스 여러개와 관계를 맺을 수 있지만, 개체 B의 각 개체 인스턴스는 개체 A의 인스턴스 하나와 관계를 맺을 수 있다.
예로 부서 개체와 사원 개체 관계가 있다. 회사에서 각 부서에는 여러 사원이 소속되어 있지만, 사원은 하나의 부서에만 속해있는 것과 같다.
개체-관계 모델 : 관계의 유형 - 다대다(n:m) 관계
개체 A의 각 인스턴스가 객체 B의 인스턴스 여러개와 관계를 맺을 수 있고, 개체 B의 각 인스턴스도 개체 A의 인스턴스 여러개와 관계를 맺을 수 있다.
예로 고객 개체와 책 개체 관계가 있다. 한 고객은 여러권의 책을 구매할 수 있고, 한 책은 여러 고객에게 팔릴 수 있다.
개체-관계 모델 : 관계의 참여 특성
- 필수적 참여(전체 참여)
모든 개체 인스턴스가 관계에 반드시 참여해야 하는 것을 의미한다. ERD에서 이중선으로 표현한다.
예로 고객 개체가 책 개체와의 구매 관계에 필수적으로 참여한다. 즉, 모든 고객은 책을 반드시 구매해야 한다.
- 선택적 참여(부분 참여)
개체 인스턴스 중 일부만 관계에 참여해도 되는 것을 의미한다.
예로 책 개체가 고객 개체와의 구매 관계에 선택적으로 참여한다. 즉, 고객이 구매하지 않은 책이 존재할 수 있다.
개체-관계 모델 : 관계의 종속성
- 약한 개체(Weak Entity)
다른 개체의 존재 여부에 의존적인 개체
- 오너 개체(Owner Entity) 또는 강한 개체
다른 개체의 존재 여부를 결정하는 개체
오너 개체와 약한 개체는 일반적으로 일대다의 관계를 가진다. 약한 개체는 오너 개체와의 관계에 필수적으로 참여하는 특징이 있다.
또 약한 개체는 오너 개체의 키를 포함하여 키를 구성하는 특징이 있다.
ERD에서 약한 개체는 이중 사각형으로 표현, 약한 개체가 오너 개체와 맺는 관계는 이중 마름모로 표현한다.
예로 직원 개체와 부양가족 개체와의 부양 관계가 있다. 직원은 오너 개체, 부양가족은 약한 개체로 직원이 부양하는 부양가족이 존재하며, 직원이 없으면 부양가족은 존재할 수 없다.
따라서 부양가족은 직원 개체와의 관계에 필수적으로 참여한다.
E-R 다이어그램의 예
- 개체 : 고객, 책, 출판사
- 관계 : 구매, 공급
- 키 속성 : 고객 아이디, ISBN, 출판사 번호
구매라는 관계도 속성을 가질 수 있다. 위 예에서는 구매일자, 결제방식인데 고객이 책을 구매하는 관계를 가져야만 구매일자, 결제방식 속성을 가질 수 있다.
E-R 다이어그램은 개념적 데이터 모델링의 결과물인 것을 기억해야 한다.
논리적 데이터 모델
ERD로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조이다.
컴퓨터 입장에서의 구조보다는 사용자가 생각하는 데이터베이스의 모습 또는 구조로 관계 데이터 모델, 계층 데이터 모델, 네트워크 데이터 모델 등이 있다.
데이터베이스의 논리적 구조는 데이터베이스 스키마(Schema)라고 할 수 있다.
논리적 데이터 모델 - 관계 데이터 모델
일반적으로 많이 사용되는 논리적 데이터 모델로 2차원 테이블 형태이다.
논리적 데이터 모델 - 계층 데이터 모델(Hierarchical Data Model)
- 트리 형태로 루트 역할을 하는 개체 존재하며 사이클 존재하지 않는다.
- 개체 간 상하 관계 성립 → 부모 개체, 자식 개체 존재
- 일대다(1:n) 관계만 허용
- 두 개체 사이에 하나의 관계만 정의할 수 있으며, 다대다(n:m) 관계를 직접 표현할 수 없다.
- 개념적 구조를 모델링하기 어려워 구조가 복잡해질 수 있으며 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않다.
두 개체 사이에 하나의 관계만 정의할 수 있기 때문에 상품 - 주문고객, 고객 - 판매상품을 따로 정의해야 한다.
주문고객과 판매상품은 n:m 관계지만 직접 표현할 수 없기 때문에 위 예처럼 정의한다.
논리적 데이터 모델 - 네트워크 데이터 모델(Network Data Model)
- 데이터베이스의 논리적 구조가 네트워크, 즉 그래프 형태로 사이클이 존재할 수 있다.
- 개체 간 일대다(1:n) 관계만 허용 → 오너(owner) 개체, 멤버(member) 개체 존재
- 두 개체 사이에 여러 관계를 정의할 수 있어 이름으로 구별
- 다대다(n:m) 관계를 직접 표현할 수 없다.
- 구조가 복잡하고 데이터의 삽입, 삭제, 수정, 검색이 쉽지 않다.
상품, 고객 간의 여러 관계를 정의할 수 있어 이름(판매, 주문)으로 구별한다.
위 예에서 사이클을 통해 상품과 고객 간의 n:m 관계를 표현한 것을 확인할 수 있다.
아래 강의를 듣고 작성한 글입니다.
데이터베이스설계
본 교과에서는 데이터베이스의 기본 개념과 DBMS 운용 능력등을 익히고 데이터베이스의 논리적 모델링 기법을 이용한 데이터베이스 설계를 목표로 한다.
www.kocw.net
'DB' 카테고리의 다른 글
| DB | 논리적 데이터 모델링 (2) | 2023.10.11 |
|---|---|
| DB | 개념적 데이터 모델링 (0) | 2023.08.06 |
| DB | 데이터베이스 시스템 정의와 구성 요소, 3단계 데이터베이스 구조 (2) | 2023.01.02 |
| DB | SQL 기초 연습 (2) (0) | 2022.08.26 |
| DB | SQL 기초 연습 (1) (0) | 2022.08.17 |