04. 데이터 모델링 유형
데이터 모델링 단계
요구사항 분석
개념 모델링: 핵심 엔티티 도출 및 관계 정의 (개념 ER모델)
논리 모델링: 업무 요건을 명확하게 표현, 설계 (상세 ER모델)
물리 모델링: 구현할 DBMS 특징에 맞게 표현
데이터베이스: 물리적 모델을 DB에 구현
점점 추상화/단순화에서 구체화/세분화로 발전
1. 개념적 데이터 모델링
비지니스 이해관계자와 분석가가 생성
간단한 다이어 그램 표현
데이터 프로젝트의 목적, 범위 및 설계에 대한 의견일치가 중요
데이터에 대한 청사진 제공
핵심 데이터 집합 도출, 관계 설정, 핵심속성 정의, 식별자 정의
예시 - 자동차 대리점
대리점에 대한 정보
대리점이 보유한 자동차 정보
대리점서 자동차를 구매한 고객 정보
향후 사용될 비즈니스 요구사항 또한 포함해야한다. - 모든 판매에는 최소 1명의 판매원과 1명 이상의 고객이 연결되어야한다. 등
2. 논리적 데이터 모델링
개념 데이터 클래스를 기술적 데이터 구조에 매핑
개념적 데이터 모델에서 식별된 데이터 개념과 복잡한 데이터 관계에 대한 자세한 내용 제공
데이터 유형, 엔터티 간의 관계, 키 속성 지정
데이터 아키텍트와 분석가 협업을 통해 생성
업무를 모델링 표기법으로 형상화
직관적이며, 특정 DB 모델 기반 논리적 스키마로 변환하는 과정
예시 - 자동차 대리점
대리점 엔티티: 대리점의 이름, 위치 정보는 텍스트 형식 필요 / 전화번호는 숫자 데이터 형식
고객 엔티티: 이메일 주소 필드는 255자 이하
판매 엔티티: 텍스트, YYYY-MM-DD 날짜, 10진수 금액 필드
3. 개념적 / 논리적 데이터 모델링 용어
개념적 모델링 | 논리적 DB 설계 |
Entity | Table |
Attribute | Column |
UID | Primary Key |
Relationship | Foreign Key |
Mandatory | Not null |
Optional | Null |
4. 물리적 데이터 모델링
논리적 데이터 모델을 특정 DBMS 기술에 매핑하고 소프트웨어의 용어를 사용
DBMS에 표현된 데이터 필드 유형
DBMS에 표현된 데이터 관계
성능 조정과 같은 추가 세부 정보
최종 설계 구현 전에 물리적 모델 생성
트랜잭션 고려, 비정규화 배제 고려
예시 - 자동차 대리점
대리점 엔티티: VARCHAR(50), INT
판매 엔티티: DATETIME, FLOAT
ERD
시스템의 엔티티들이 무엇이 있고 어떤 관계가 있는지 나타내는 다이어그램
관계형 DB에서 주로 널리 사용
엔티티와 속성들을 테이블과 컬럼들로 변환
논리적 ERD

물리적 ERD

05. 데이터 모델링 정규화
정규화
다양한 유형의 검사를 통해 데이터 모델을 좀 더 구조화하고 개선시키는 절차에 관련된 이론
기본 원칙은 하나의 테이블에는 중복된 데이터가 없도록 하는 것
데이터를 수학적인 방법에 의해 구조화시켜 체계적으로 관리
정규화 종류
1차 정규화: 도메인이 원자값, 복수의 속성값을 갖는 속성을 분리
2차 정규화: 부분 종속 속성의 분리, 주식별자에 종속적이지 않은 속성의 분리
3차 정규화: 이전 종속 속성의 분리, 속성에 종속적인 속성의 분리
BCNF 정규화: 다수의 주식별자 분리
4차 정규화: 다가 종속 속성 분리
5차 정규화: 결합 종속일 경우 2개 이상의 N개로 분리
함수의 종속성
데이터들이 어떤 기준값에 의해 종속되는 현상
기준값을 결정자, 종속되는 값을 종속자라 한다.
1차 정규화
모든 속성은 반드시 하나의 원자값만 보유
복수의 속성값을 가진 속성을 분리
하나의 컬럼에 여러개의 데이터값이 중복되어 있으면 안된다.
예시
취미에 다중값(축구, 게임, 독서)가 있는 경우
취미1, 취미2, 취미3이 있는 경우
취미 속성을 새로운 테이블로 분리해 학생과 취미 테이블 간에 1:N 관계를 생성

2차 정규화
주식별자를 구성하는 일부 속성에 종속적인 속성을 분리
각 속성들은 자신이 속한 테이블의 주식별자에 의해 완전 함수적 종속 관계가 이루어진다.
복합식별자일 경우만 해당
예시
점수 속성은 기본키(강의번호+학번)에 종속적이지만 이름은 종속적이지 않다.
학번만으로 이름이 검색 가능하다.
이 때 새로운 학생 추가시 점수에 Null 값을 입력해야하고(입력 이상), 강의번호 삭제시 학생까지 삭제된다.(삭제 이상)
학생테이블을 만들어 점수가 학생 테이블을 참조하게 한다.

3차 정규화
속성에서 종속적인 속성을 분리
이행적 함수 종속 제거, 기본키가 아닌 모든 속성간에서는 서로 종속될 수 없다.
예시
학생 테이블의 경우 기본키는 학번이며, 학과 속성의 경우 학과번호에 종속
기본키가 아닌 속성들 간에는 서로 종속관계가 될 수 없다.
학과 테이블을 따로 만들어 학생 테이블과 학과 테이블을 참조하도록 구성

BCNF 정규화
복잡한 식별자 관계에 발생하는 문제를 해결
테이블에 존재하는 식별자가 여러 개 존재하면 식별자가 중복되어 나타나는 현상을 제거
기본키가 아닌 속성이 기본키의 속성을 결정지을 수 없다.
예시
이 경우 교수 이름만으로도 강의(기본키 속성)을 결정 가능하다.

교수는 하나의 강의를 담당하는 조건이 있으므로 테이블 분리

4차 정규화
다치 종속이 없어야한다.
동시에 발생하는 여러 엔티티 타입간의 관계에서 기인하는 경우가 많다.
예시
학생번호 하나에 과목과 여러 개의 취미가 종속
강의, 취미가 관계가 없어도 같은 테이블에 학생이라는 컬럼에 다치 종속되어 중복이 발생

5차 정규화
중복을 제거하기 위해 분해할 수 있는 만큼 전부 분해
조인 종속이 없어야한다.
조인 연산을 했을 때 데이터 손실이 없어야한다.