잘못 설계된 테이블로 삽입, 삭제, 수정 같은 데이터 조작을 하게 될 경우 이상 현상이 발생한다.
주로 관계형데이터베이스를 이용하는 DBMS에서 발생 (mysql, oracle etc.)
이 블로그의 게시글을 참고하여 작성했습니다.
도메인 원자값 만족
테이블에 한 행, 한 열에 2개이상의 값이 있으면 안됌
이 행이 다른 행과 어떤 이유로 구분이 되는지 파악되지 않기 때문에 (모든 행은 식별자로 완전하게 구분)
키가 아닌 값들은 모두 key에 종속되어야 한다.
나눌 수 있을 때까지 나눈다!
필드가 학번
,수강학기
, 과목명
, 성적
, 제한인원
으로 구성된 경우
key값은 학번
이다. (primary key)
제한인원
같은 경우 학번과는 크게 관련이 없다. 다시 말해 학번
에 종속되지 않는다.
따라서 별도의 테이블로 만들어줘야 한다.
TABLE1 : 학번
,수강학기
, 과목명
, 성적
TABLE1 : 수강학기
, 과목명
, 제한인원
으로 구분을 하면 제2정규화를 만족하게 된다.
제2정규화를 만족하고 테이블 내의 모든 속성이 키에만 의존
필드가 학번
,이름
,메일
,대학
, 학과
로 구성된 경우
대학
필드 같은 경우 학과
를 알면 자연스레 알 수가 있다.
(경제학과는 경상대학에 속하기 때문에 경제학과인 것을 알면 경상대학 소속임을 알 수 있음)
이렇게 한 테이블 내에서 key에만 종속되는 것이 아니라 한 필드가 다른 필드에 종속되었을 때 (한 필드로 다른 필드를 알 수 있을때) 이행종속성이 발생했다고 함.