DB 이야기/DB 도메인 설계

디비 이야기 14. ERD와 이상, 정규화

김푸른초푸른 2020. 3. 8. 14:04

1. ERD란? 

= 객체(E)-관계(R) 다이아그램(D)으로 테이블처럼 데이터를 담고 있는 도식이다 

 

A <---<- B

: B는 A를 하나만 선택가능 하지만 A는 B를 여러개 선택가능하다   

 

선 종류= 점선 - 선택적 관계이며 없어도 문제가 없다 / 실선 - 필수적 관계이며 무조건 있어야하는 관계다 

 

2. 이상현상 

원인 1) 데이터 삽입시 불필요한 NULL이 삽입원인 2) 삭제시 연쇄 삭제원인 3) 수정시 데이터 일관성이 깨짐 

 

3. 정규화 

= 데이터의 정합성을 확보하고 이상현상 발생을 피하기 위해 테이블을 분할하고 생성한다  

 

[특징]

= 정확성 / 일치성 / 단순성 

 

4. 정규화 종류 

1) 제1정규형 

= 관계형 DBMS에서 테이블 당 한 셀에 한 값만 저장가능 

EX) 한 셀 안에 책 5권, 인성평가 등등 

-> 콤마를 사용하여 열거 불가능! (수정, 삭제시 문제 해결)

 

2) 제2정규화 

= 기본키와 키본키가 아닌 열 간의 종속관계(의존성)가 있을시 이를 별도의 테이블로 분리시킴

-> 정보 중복현상 방지(원인 1 해결)

 

3) 제 3 정규화 

= 최종정규화

 

5. 정규화 장,단점

장점) - 정규화 정도가 높은지 낮은지로 판정 

 

1) 높을시 

= 유연한 데이터 구축 / 데이터의 정확성을 놓인다 

 

2) 낮을시 

= 물리적 접근이 단순하고 / 데어터 결합처리가 감소한다 


6. 비정규화

= 정규화는 데이터 중복성을 줄이기 위해 사용하는데 조인같은 결합함수와 사용시 부하가 발생되어 정규화 이후 비정규화를 진수행한다

 

7. 반정규화 

= 정규화된 모델을 성능향상과 개발,운영의 단순화를 위해 중복,분리,통합 등을 수행한다 

* 정규화된 모델 -> 조회성능향상 -> 데이블, 칼럼, 관계 중복성 방지! 


8. 성능 데이터 모델링

목적 : DB 성능을 향상시키며 위의 정규화, 반, 비정규화 등이 사용되는 이유다. 

 

9. 성능 데이터 고려사항

-> 다음과 같은 프로세스로 진행한다 

1) 데이터 모델링시 정규화를 정확하게 한다 

2) 데이터베이스의 용량산정을 수행한다

3) 용량과 트랜젝션의 유형에 따라 반정규화 수행

4) 이력 모델 / PK,FK / 슈퍼타입, 서브타입 조정을 한다

5) 성능관점에서 데이터 모델을 검증한다 

 

10. ERD 관계 설정하기

1] 실선과 점선의 차이점

 

1-1] 점선으로 표현

2. 필수참여 조건

2-1] 1:1 필수참여

PK와 FK로 사용할 경우에는 무조건 필수 참여다!

 

2-2] 1: 다 참여

0모양은 선택참여다

 

2-3] 다:다 참여

 

 

 

ERD 관계 참고 : https://velog.io/@kon6443/DB-ERD-%EA%B4%80%EA%B3%84-%EC%8B%9D%EB%B3%84%EC%9E%90-%EA%B4%80%EA%B3%84