데이터베이스 정규화

From CS Wiki
Revision as of 22:06, 30 April 2019 by 정처기정리 (talk | contribs) (새 문서: ;Database Normalization == 이상(Anomaly) 현상 == * 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상 * 데이터들이 불필요하게 중복되...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Database Normalization

이상(Anomaly) 현상

  • 정규화를 거치지 않은 데이터베이스에서 발생할 수 있는 현상
  • 데이터들이 불필요하게 중복되어 릴레이션 조작에 예기치 못한 문제 발생
  • 애트리뷰트들의 종속관계를 하나의 릴레이션에 표현하기 때문에 발생

이상 종류

삽입할때 잘못 삽입됨, 갱신할때 잘못 갱신됨 등의 일반적인 내용이다. 아래 정규화과정에서 예시 참고
  • 삽입 이상(Insertion Anomaly)
    • 데이터 삽입 시 의도와 다른 값들도 삽입됨
  • 삭제 이상(Delete Anomaly)
    • 데이터 삭제 시 의도와 다른 값들도 연쇄 삭제됨
  • 갱신 이상(Update Anomaly)
    • 속성값 갱신 시 일부 튜플만 갱신되어 모순 발생

정규화 과정

1NF

First Normal Form
1NF를 만족하려면 도메인이 원자값이어야 한다.
  • 1NF를 만족하지 않는 릴레이션
수강과목 수강자
수학 홍길동
과학 임꺽정, 신사임당
사회 홍길동, 임꺽정
  • 수강자 속성이 원자값이 아니다.
  • 발생할 수 있는 이상(Anomaly)의 예
    • 갱신이상: 홍길동이 사회과목을 '역사'로 바꾸었다. 그럼 임꺽정이 듣고 있는 사회 과목도 바뀌어버린다.
      • UPDATE 과목 SET 수강과목 = '역사' WHERE 수강과목 = '사회' AND 수강자 = '홍길동'
    • 삭제 이상: 임꺽정이 '과학' 과목을 수강취소했다. 그럼 신사임당의 수강 정보도 삭제된다.
      • DELETE FROM 과목 WHERE 수강과목 = '과학' AND 수강자 = '임꺽정'