-
데이터 정규형 (1NF, 2NF, 3NF, BCNF)SQL 2023. 1. 7. 14:32
데이터 정규화
-attribute간의 종속 관계를 분석, 여러개의 릴레이션으로 나눔
-데이터 중복으로 인한 일관성 훼손을 방지
정규형
-정규화의 정도를 나타내는 용어
학생과 과목, 교수를 하나의 테이블로 표현 = 데이터의 중복이 발생
-> 수정 이상 발생 가능
수정 이상
1)갱신 이상 - 중복된 데이터의 일부만 수정하여 일관성 훼손
2)삽입 이상 - 하나의 레코드에 여러 주제 -> 입력할 데이터가 없는 경우가 존재 (ex-담당 교수가 없는 학생)
3)삭제 이상 - 하나의 레코드에 여러 주제 -> 필요 이상의 데이터가 삭제
(ex- a과목을 듣는 유일한 학생이 퇴학 -> 과목 정보도 같이 삭제)
위 테이블을 위와 같이 쪼개면 효율적
제 1 정규형 (1NF)
관계형 모델의 릴레이션의 속성은 모두 원자값
(관계형 모델이면 1NF)
제 2 정규형 (2NF)
키에 속하지 않는 모든 attribute가 키에 완전 함수 종속
함수적 종속성 ( X -> Y )
X가 Y를 결정 = X값을 알면 Y 값을 알 수 있음
( X - A ) -> Y인 A값이 존재하면 부분 함수 종속,
A값이 존재하지 않으면 완전 함수 종속
key = {학번, 과목번호}
여기서 학번 -> 이름과 같이 key의 일부가 다른 attribute를 결정하므로 2NF가 아님
"학번"이 key인 학생 테이블과 "과목 번호"가 key인 과목 테이블
그리고 학번과 과목번호로 학점을 결정하는 학점 테이블
이 3가지로 나누면 제 2정규형을 만족
제 3 정규형 (3NF)
키가 아닌 모든 attribute들은 기본 키에 이행적 종속되지 않음
A->B이고 B->C면 A->B->C
C는 A에 이행적 종속
과목 번호가 다른 모든 값들을 결정하는데,
교수 번호도 교수 이름과 연구실을 결정하므로
과목 테이블과 교수 테이블을 분리
BCNF
릴레이션의 모든 결정자가 후보키
Area와 Area가 결정하는 County_name을 따로 분리하면 BCNF 만족
분할의 2가지 조건
1)무손실 조인 분할
분할된 테이블들은 다시 조인했을때 원래 테이블이 나와야 함 (필수조건)
2)종속 유지 부할
테이블의 원래 함수적 종속을 최대한 지니도록 분할 (권장사항)
[DB] 8. 정규형 (1NF, 2NF, 3NF, BCNF)
[목차] 1. 제1 정규형 2. 제2 정규형 3. 제3 정규형 4. BCNF 정규형이란 정규화된 결과를 말하며, 제1 정규형, 제2 정규형, 제3 정규형, BCNF, 제4 정규형, 제5 정규형이 있다. 실무적으로 제4, 제5 정규형은
rebro.kr
각 정규형의 부족한 점을 잘 설명해주는 글
'SQL' 카테고리의 다른 글
SQL - DML, DDL, DCL (0) 2023.10.05 SQL - 내장함수 (0) 2023.02.21 SQL - JOIN (0) 2023.02.21 SQL - SELECT (0) 2023.02.21 관계대수 ( Relational Algebra ) (0) 2023.01.07