정규화란?
: 이상 문제(anomaly)를 해결하기 위해 속성 간 종속 관계를 분석하고 릴레이션을 분해하는 과정
: 릴레이션의 속성, 객체, 관계를 파악하여 데이터의 중복성을 최소화하는 과정
이상 문제 (anomaly)
: 속성 간에 존재하는 여러 종속 관계를 하나의 릴레이션에 표현함으로 인해 발생하는 현상
: 데이터를 DB 테이블에 CUD 할 때 생기는 문제
- 삽입 이상 : 데이터를 저장할 때 원하지 않는 정보가 함께 삽입되는 경우
- 삭제 이상 : 튜플을 삭제함으로써 유지되어야 하는 정보까지도 연쇄적으로 삭제
- 갱신 이상 : 중복된 튜플 중 일부의 속성만 갱신시킴으로써 정보의 모순성 발생
정규화 과정
함수적 종속
: 어떤 릴레이션에서 속성들의 부분 집합을 x, y라고 할 때, 특정 튜플에서 x의 값이 y의 값을 함수적으로 결정한다면 y가 x에 함수적 종속되었다고 한다.
=> x가 y를 결정 짓는 것
이 표의 경우 학생 번호와 학년이 종속되어 있음
제 1 정규형 (1NF)
도메인이 원자값이 아닐 때 = 도메인이 가장 작은 단위가 아닐 때
분해해서 도메인이 원자값이 되도록 해야 한다.
제 2 정규형 (2NF)
부분 함수 종속 제거
=> 모든 칼럼이 완전 종속을 만족하도록 분해
위의 예시에서는 학번이 학부를 결정한다.
=> 학번이 x, 학부가 y일 때 함수적 종속 (x, y가 반대되면 안 된다.)
학번 + 과목코드가 학부와 등록금을 결정한다.
만약 컴공 학생이 전과하면 학번, 과목 코드, 등록금을 모두 바꿔야 한다.
제 3 정규형 (3NF)
이행 함수 종속 제거
예시에서는 학번이 학부를 결정하고, 학부가 등록금을 결정한다.
일어날 수 있는 예시
- 컴공 등록금을 고치면 모든 컴공의 등록금을 다 고쳐야 한다.
- 경영학부 학생이 관뒀는데 경영학부의 데이터가 사라진다.
- 학부가 결정이 안 됐는데 학생 데이터를 입력해야 한다.
따라서 이렇게 세 개의 릴레이션으로 나눠야 한다.
'CS > DB' 카테고리의 다른 글
[DB] SQL 문법 (1) | 2024.11.29 |
---|---|
[DB] 워드프레스 서버 - DB 서버 연동 실습 (1) | 2024.11.28 |
[DB] SQL 연습 (윈도우 MySQL Workbench) (0) | 2024.11.28 |
[DB] DBMS란? / ERD 다이어그램 / 관계 데이터 모델 (2) | 2024.11.27 |
[DB] 데이터베이스란? / DB 서버 실습 (윈도우 클라이언트 - 리눅스 서버 연동) (0) | 2024.11.27 |