데이터베이스 정규화

0

TIL

목록 보기
21/29

정규화의 개념

잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하게 될 경우 이상 현상이 발생한다.

주로 관계형데이터베이스를 이용하는 DBMS에서 발생 (mysql, oracle etc.)

이 블로그의 게시글을 참고하여 작성했습니다.

제1정규화

도메인 원자값 만족
테이블에 한 행, 한 열에 2개이상의 값이 있으면 안됌
이 행이 다른 행과 어떤 이유로 구분이 되는지 파악되지 않기 때문에 (모든 행은 식별자로 완전하게 구분)

제2정규화

키가 아닌 값들은 모두 key에 종속되어야 한다.

나눌 수 있을 때까지 나눈다!

필드가 학번,수강학기, 과목명, 성적, 제한인원으로 구성된 경우
key값은 학번이다. (primary key)
제한인원 같은 경우 학번과는 크게 관련이 없다. 다시 말해 학번에 종속되지 않는다.

따라서 별도의 테이블로 만들어줘야 한다.

TABLE1 : 학번,수강학기, 과목명, 성적
TABLE1 : 수강학기, 과목명, 제한인원

으로 구분을 하면 제2정규화를 만족하게 된다.

제3정규화

제2정규화를 만족하고 테이블 내의 모든 속성이 키에만 의존

필드가 학번,이름,메일,대학, 학과로 구성된 경우

대학필드 같은 경우 학과를 알면 자연스레 알 수가 있다.
(경제학과는 경상대학에 속하기 때문에 경제학과인 것을 알면 경상대학 소속임을 알 수 있음)
이렇게 한 테이블 내에서 key에만 종속되는 것이 아니라 한 필드가 다른 필드에 종속되었을 때 (한 필드로 다른 필드를 알 수 있을때) 이행종속성이 발생했다고 함.

profile
기록을 통해 한 걸음씩 성장ing!

0개의 댓글