[데이터 모델링] 데이터모델링 이해 (단계, ER 다이어그램, 데이터베이스 정규화)
데이터모델링의 단계와, ERD 다이어그램, 데이터베이스 정규화에 대한 내용을 구분하여 알아보고자 한다.
데이터 모델링의 단계 :
데이터 모델링은 현실세계의 기업 업무에서 발생하는 데이터를 물리적 으로 데이터베이스화하기 위한 과정
개념 데이터 모델링, 논리 데이터 모델링, 물리 데이터 모델링의 3단계 로 나눌 수 있으며 물리 데이터 모델링은 물리적 설계라고도 함
― 개념 데이터 모델링 : 조직 또는 사용자의 데이터 요구사항을 찾아 분석하며 핵심 엔티티와 그들 간의 관계를 발견
― 논리 데이터 모델링 : 개념 데이터 모델링 단계에서 정의한 핵심 엔 티티와 관계를 기반으로 하여 상세 속성을 정의하고 식별자를 확정 하는 등 정규화와 같은 상세화 과정을 수행
― 물리 데이터 모델링 : 논리 데이터 모델을 기반으로 목표 DBMS의 특성과 구현 환경 등을 감안한 데이터 구조를 도출하고 컬럼의 데 이터 타입과 크기를 정의
ERD(Entity Relationship Diagram) 정의 :
ERD(Entity Relation Diagram)는 엔티티와 이들 간의 관계를 알기 쉽게 약속된 도형을 사용하여 일목요연하게 그림으로 표현
ER모델의 구성요소는 엔티티(Entity), 관계(Relationship), 속성(Attribute) 을 기본으로 하여 관게수, 식별자, 서브타입 등으로 세분화 할 수 있음
― 문장 형식의 업무 처리 규정을 약속된 도형 형태로 나타내어 전체 업무 및 데이터의 구조를 쉽게 파악할 수 있음
― 문장으로 기술하지 않고 공통적인 약속을 통해 표현함으로써 업무의 파악과 이해가 용이함
― 데이터베이스를 구현할 때 정규화(Normalization)된 테이블을 만들기 위한 근거 자료로 활용
엔티티(Entity)
의미 있는 유용한 정보를 제공하기 위하여 기록‧관리하고자 하는 데이 터의 유형으로 사람, 사물, 장소, 개념 또는 사건 등을 표현
― 현업에서 관리하고자 하는 데이터를 엔티티라고 하며, 특징을 표현 하기 위한 하나 이상의 속성이 있어야 함
관계(Relationship)
엔티티 간에 존재하는 업무의 상호연관성으로 해당 엔티티와 관련된 업무가 수행되는 규칙을 의미
― 업무가 변경됨에 따라 관계는 변할 수 있음
― 두 엔티티 사이의 관계에 따라 1:N, 1:1, M:M 관계로 분류
속성(Attribute)
엔티티와 관계의 성질을 나타내는 쪼갤 수 없는 정보의 단위로 엔티 티에 저장되는 개체 집합의 특성을 설명하는 항목
― 속성은 식별자와 설명자로 구분할 수 있음
데이터베이스 정규화 :
이상발생요인인 데이터의 중복을 최소화하기 위하여 속성들간의 관계인 함수적 종속성을 기반으로 일정한 조건을 만족하는 형태로 엔티티 를 분해해가는 과정
이상(Anomaly) 현상은 데이터 입력시 발생하는 입력이상, 데이터 수정 시 발생하는 수정이상, 데이터 삭제시 발생하는 삭제이상 등이 있음
― 정규화되지 않은 스키마의 경우 중복에 따른 이상현상을 비롯하여 특 정 정보의 표현 불가현상, 널(NULL) 값의 보유 등의 문제점을 내포
― 삽입 이상 : 입력시 불필요한 데이터가 같이 입력되는 현상
― 수정 이상 : 일부 데이터 갱신시 특정 속성값이 불일치 되는 현상
― 삭제 이상 : 데이터 삭제시 유지해야할 정보가 같이 삭제되는 현상
데이터베이스 정규화 절차 :
함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되 도록 분해해서 이상현상이 발생하지 않도록 Step By Step Approach 로 수행
기본 정규형으로는 제 1‧2‧3‧보이스/코드 정규형이 있으며, 제 4‧5 정규형 은 고급 정규형으로 분류
― 제 1차 정규형 : 반복 또는 복수 값을 갖는 속성을 제거(반복 그룹 제거)하며 모든 속성은 반드시 하나의 값을 가져야 함
― 제 2차 정규형 : 기본 키(Primary Key)에 종속되지 않는 속성을 제거하며 모든 속성은 반드시 기본 키 완전 함수 종속이어야 함
― 제 3차 정규형 : 기본 키가 아닌 일반 속성에 종속적인 속성을 제 거하며 기본 키가 아닌 모든 속성 간에는 서로 종속될 수 없음(이행종속성 제거)
'Public > 소프트웨어공학' 카테고리의 다른 글
[소프트웨어 공학] 소프트웨어 아키텍처 개념 및 구조 (0) | 2020.08.18 |
---|---|
[데이터모델링] 데이터모델링 검증 및 구현 (0) | 2020.07.27 |
[데이터모델링] 데이터베이스의 이해 (정의, 특징, 설계) (0) | 2020.07.27 |