Published 2020. 9. 17. 20:30
728x90
반응형

예시 테이블>

학생번호 학생명 수강과목번호 수강과목명 학점
s001 권정열 c101, c102 Oracle, JDBC A+, B+
s002 박보검 c102, c103 JDBC, Servlet/JSP A, C

 

 

1NF

더 이상 쪼갤 수 없는 원자값으로 나눔

학생번호 학생명 수강과목번호 수강과목명 학점
s001 권정열 c101 Oracle A+
s001 권정열 c102 JDBC B+
s002 박보검 c102 JDBC A
s002 박보검 c103 Servlet/JSP C

 

 

2NF

부분함수 종속 제거

학생번호를 알면 학생명 알 수 있음(결정자-종속자 관계)

수강과목번호를 알면 수강과목명 알 수 있음

학점은 학생번호와 수강과목 번호 둘다에 종속

학생번호 수강과목번호 학점
s001 c101 A+
s001 c102 B+
s002 c102 A
s002 c103 C

 

학생번호 학생명
s001 권정열
s002 박보검

 

수강과목번호 수강과목명
c101 Oracle
c102 JDBC
c103 Servlet/JSP

 

 

예시 테이블>

(결정자)학생번호 - (종속자)학생명, 학과번호

후보키(유일+최소) - 학생번호

슈퍼키(유일) - 학생번호, 학생번호&학생명, 학생번호&학생명&학과번호

학생번호 학생명 학과번호 학과명 학비
s001 권정렬 d001 교육심리학과 3500000
s002 박보검 d002 토목공학과 4500000

*슈퍼키(super key) - 한 행을 다른행과 구분할 수 있으면 슈퍼키(유일성)  
*후보키(candidate key) - 슈퍼키 중에서 최소성을 확보한 것

 

 

3NF

이행함수 종속 제거

학생번호 학생명 학과번호
s001 권정렬 d001
s002 박보검 d002

 

학과번호 학과명 학비
d001 교육심리학과 3500000
d002 토목공학과 4500000

 

 

예시 테이블>

전제조건 : 한 교수는 한 과목만 가르칠 수 있음,

              한 과목은 여러 교수에 의해 가르칠 수 있음

학생번호 과목번호 교수번호 학점
s001 c101 p201 A+
s001 c102 p202 B+
s002 c102 p203 A
s002 c103 p204 C

 

BCNF

3NF를 만족하면서 결정자 중에 후보키가 아니면 제거(후보키가 하나밖에 없다면 BCNF해당 X)

학생번호 과목번호 학점
s001 c101 A+
s001 c102 B+
s002 c102 A
s002 c103 C

 

과목번호 교수번호
c101 p201
c102 p202
c102 p203
c103 p204
반응형

'프로그래밍 > SQL' 카테고리의 다른 글

SQL과 NoSQL  (0) 2020.12.24
11.20(서브쿼리와 조인의 차이점)  (0) 2020.11.20
09.16(정규화)  (0) 2020.09.16
05.29(Trigger)  (0) 2020.05.29
05.28(PL/SQL)  (0) 2020.05.28
복사했습니다!