정규화와 반정규화
기존 수강 테이블 ➡️
1NF ➡️
수강 정지 일자는 수강 정지 횟수만큼 생성될수 있으므로
별도 테이블 생성
2NF
⬇️
수강-과목(FK)의 속성들은, 수강 테이블에 포함될 수 있는 내용이므로 수강-과목(FK) 테이블은 제거
3NF ➡️
3NF로 생성된 3개의 테이블에서, ‘잔여정지횟수’ 정보가 3번 중복됨
반정규화
반정규화를 통해, 최종 수강-정지-정지 일자 테이블 생성
특이사항
정규화와 반정규화 과정을 통해, ‘정지’ 관계 테이블이 생성되었다. ‘수강’ 관계 테이블과 동일하게 ‘학생, 과목’의 기본키를 외래키이자 키본키로 갖는다.
‘정지’ 관계 테이블의 ‘잔여 정지 횟수’는 ‘환급 과정’과 ‘등록 개월’, ‘과목 코드’에 의해 값이 결정되는 유도된 애트리뷰트이다. 그러나 실제 DB에서는 편의성을 위해, 테이블에 ‘잔여 정지 횟수’ 속성을 추가할 예정이다.