본문 바로가기

Programming

데이터 모델링

데이터 모델링

데이터 모델링이란 현실 세계의 업무적인 프로세스를 물리적으로 데이터베이스화 하기 위한 과정이다.



개념적 모델링

개념적 모델링은 요구사항을 수집하고 분석한 결과를 토대로 업무의 핵심적인 개념을 구분하고 전체적인 뼈대를 만드는 과정이다. 여기서 핵심적인 개념을 구분한다는 것은 개체를 추출하고 각 개체들 간의 관계를 정의하여 ER 다이어그램(ERD)을 만드는 과정까지를 말한다.


논리적 모델링

논리적 모델링은 개념적 모델링에서 만든 ERD을 알맞게 매핑하여 실제 데이터베이스로 구현하기 위한 모델을 만드는 과정이다. 이 과정에서 실제 필요한 모든 속성을 추출하고, 정규화를 수행한다.
그리고 관계 스키마로 표현된다.


물리적 모델링

물리적 모델링은 작성된 논리적 모델을 실제 컴퓨터의 저장 장치에 저장하기 위해 물리적 구조를 정의하고 구현하는 과정이다. 데이터 사용량 분석 및 필드 데이터 타입과 크기 등을 설정한다.



ER 모델

강한 개체(엔티티) : 자신의 키 속성을 사용하여 고유하게 개체들을 식별할 수 있는 개체 타입
약한 개체(엔티티) : 자신의 키 속성을 갖기에 충분한 속성을 갖지 못한 개체로, 다른 개체에 종속되어 해당 
                   개체가 없으면 존재할 수 없다.
                약한 개체의 기본키는 소유엔티티의 기본키와 부분키를 결합하여 엔티티의 기본키로 사용한다.
식별자 속성       : 엔티티들을 식별할 수 있는 유일한 제약조건을 갖는 속성
복합 속성         : 두 개 이상의 속성으로 이루어진 속성
다중값 속성       : 속성 하나에 여러 개의 값을 가질 수 있는 속성
유도 속성          : 실제 값이 저장된 것이 아니라 저장된 값으로부터 계산해서 얻은 값을 사용하는 속성


차수에 따른 관계의 유형


관계 대응수에 따른 유형


관계의 참여 제약 조건

전체 참여 : 개체 집합의 모든 개체가 관계 에 참여
부분 참여 : 집합의 일부만 참여한다.


IE 표기법

점선 - 비식별자 관계, 즉 부모 개체의 키가 일반 속성으로 포함되는 관계이다.
실선 - 식별자 관계, 부모 개체의 키가 주식별자로 포함되는 관계이다.
일대다의 관계 - N 쪽에 새발을 표시한다.
선에 동그라미표시 - 선택적 참여로 ER 모델과는 달리 반대편 개체쪽에 참여관계를 표시한다.
선에 표시 작대기 하나 - 전체적 참여로 ER 모델과는 달리 반대편 개체쪽에 참여관계를 표시한다.
( 예를 들면 위 그림을 IE로 표기한다면 DEPARTMENT 개체 쪽에는 작대기 하나(전체 참여)가 
 EMPLOYEE 쪽에는 동그라미(부분참여)가 그려진다 )

매핑 규칙 ( 개념적 - > 논리적 설계 )

ERD 

 매핑 규칙 (관계 스키마 생성)

엔티티 타입
단일값 속성

 정규엔티티

 약엔티티

 복합속성 -> 단일값 속성 ( 분리해서 여러개 or 하나로 결합)
 유도속성 -> 사용자 선택 ( 생략 or 추가 )
 소유엔티티의 기본키와 약엔티티의 부분키를 결합하여 기본키를 
 설정한다. 

2진 관계

 1:1 관계 

 1:N 관계
 N:M 관계

 외래키는 전체참여가 있는 쪽의 엔티티에 포함한다.
 (불분명할 때는 어느 쪽에 위치시켜도 상관 없다.)
 N쪽의 엔티티로 외래키를 위치시킨다.
 별도의 관계 엔티티를 생성해서 각기 2개의 일대다 관계를 설정한다.
 (2개의 외래키 )

3진 관계

 

 별도의 관계 엔티티와 N개의 외래키를 설정한다.

다중값 속성 

 

 별도의 새로운 엔티티를 생성하여 새로운 관계를 설정한다.(외래키) 
 기존의 개체의 기본키와 속성값을 결합하여 기본키로 설정한다.


식별, 비식별 관계

식별 관계 - 부모테이블의 기본키가 자식테이블의 기본키의 구성원으로 전이하며 외래식별자가 주식별자의
            일부로 포함되는 경우이다.
비식별 관계 - 부모테이블의 기본키가 자식테이블의 일반속성의 구성원으로 전이하는 경우이다.


간단한 모델링 예시



생략 -ISA , 슈퍼타입 / 서브타입, 재귀적 관계 , 다대다 교차해소( 대리키 ) , ERWIN 사용



'Programming' 카테고리의 다른 글

Unity 용어정리  (0) 2015.02.10
정규화  (0) 2015.02.07
프로시저, 트리거, 사용자 정의 함수  (0) 2015.02.07
뷰(View)  (0) 2015.02.05
SQL 내장 함수  (0) 2015.02.04