더 나은 개발자가 되고싶다..

DataBase 정규화 하기 본문

코딩/MySql

DataBase 정규화 하기

오맹이 2019. 4. 12. 14:16

정규화는 "이상 발생 요인인 데이터의 중복 저장을 최소화 하기 위해 함서적 종속성을 기반으로 해서 일정한 조건을 만족하는 형태로 엔티티를 분해해 가는 과정" 이라는데 뭔소린지 모르겠다.

 

정규화 되지 않은 DB의 문제점

- 정보의 중복에 따른 이상현상

- 특정 정보의 표현 불가

- NULL값 보유

- 정복의 부정확

 

이상현상 : 정규화가 되지 않은 테이블을 이용하여 데이터 운영을 하는 과정에서 발생하는 문제


이상 현상 및 사례

 

수강지도 업무 처리 규정

- 학생(학번)이 과목(과목번호)를 수강 신청하고 성적을 취득한다.

- 한 학생은 한 사람의 지도 교수(지도교수명)로부터 지도를 받는다

- 한 학생은 한 학과(학과명)에 속한다.

- 각 지도 교수는 어느 한 학과에만 속한다.

 학번 학과명 지도교수명 지도교수학과명 과목번호 성적
100 컴퓨터 P1 컴퓨터 C413 A
100 컴퓨터 P1 컴퓨터 E412 A
200 컴퓨터 P2 전기 C123 B
300 컴퓨터 P3 컴퓨터 C321 A
300 컴퓨터 P3 컴퓨터 C324 C
300 컴퓨터 P3 컴퓨터 C413 A
400 컴퓨터 P1 컴퓨터 C312 A
400 컴퓨터 P1 컴퓨터 C324 A
400 컴퓨터 P1 컴퓨터 C413 B
400 컴퓨터 P1 컴퓨터 E412 C

이상 현상 발생 : 

1. 학번 500인 학생의 지도교수가 P4라는 사실을 입력할 경우?

2. 학번 200인 학생의 행이 하나만 있는 상황에서 교과목 C123의 등록을 취소하는 경우

3. 학번 400인 학생의 지도 교수가 P1에서 P3로 변경되는 경우

 

삽입 이상: 입력시 원하지 않는 불필요한 데이터가 같이 입력되는 현상 (지도 교수 입력시 학과까지 입력, 학과를 같이 입력하지 않으면 역시 이상현상 발생)

삭제 이상: 한 건의 데이터 삭제시 유지해야 할 정보가 같이 삭제되는 현상 (지도 교수의 담당 학과까지 삭제)

수정 이상: 일부 데이터의 갱신시 특정 속성값이 불일치 되는 현상(일부 데이터의 지도 교수 수정시 지도 교수가 불일치)

 


정규화 절차

 

정규과 절차

1차 정규형 : 반복 또는 복수 값을 갖는 속성의 제거 모든 속성은 반드시 하나의 값을 가져야 한다.

2차 정규형 : 기본키에 종속되지 않는 속성의 제거, 모든 속성은 반드시 기본 키 완전 함수 종속되어야한다.

3차 정규형 : 기본 키가 아닌 일반 속성에 종속적인 속성의 제거, 기본 키가 아닌 모든 속성 간에는 서로 종속이 될수 없다.