본문 바로가기
Backend/Oracle DB

11. 학사관리 DB 모델링 연습 (정규화, 테이블 시나리오, 테이블 정의서)

by 개발개발빈이 2022. 5. 18.

 학사관리 테이블 시나리오 : 잘못 설계된 테이블의 예

학생 테이블 시나리오
과목 테이블 시나리오

    - 발견된 문제점

        ① 학생테이블에서 홍길동의 수강신청과목이 추가될수록 칼럼이 계속 추가되는 현상이 보이고 있음

        ② Null값이 많이 발생되고 있음 (비효율적)

 

    - 문제 발생 이유 : 서로 다른 주제가 같이 있음 → 수강테이블 분리 필요!

 

 학사관리 업무분석

    - 학생과 과목은 다대다(N:N) 관계 : 학생 1명이 N개의 과목을 들을 수 있고,

                                                  과목 1개가 N명의 학생을 수용할 수 있으므로 N:N 관계이다

 

    - 다:다 (N:N) → 반드시 교차테이블이 있어야 함

    - 학생, 수강, 과목 3개의 테이블 필요 (굉장히 일반적인 테이블 구조)

다대다 테이블의 비슷한 다른 예

 

 학사관리 테이블 시나리오 : 재설계

학사관리 테이블 시나리오

 

 학사관리 테이블 정의서

    - 총 3개의 테이블: 학생(student), 과목(subject), 수강(enroll)

 

 학사관리 테이블

    - 모델링을 바탕으로 만들어진 테이블

    - 행 추가까지 완료 → 다음 포스팅에는 이 테이블들로 join 연습할 예정

학생(student)
과목(subject)
수강(enroll)


정규화(Normalization)

    - 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스

    - 정규화의 목적

        ① 데이터베이스의 변경시 이상 현상 제거

        ② 데이터베이스 구조 확장시 재 디자인 최소화

        ③ 사용자에게 데이터 모델을 더욱 의미있게

        ④ 다양한 질의 지원

 

 정규화의 종류

    ① 제 1 정규형

        - 모든 속성은 반드시 하나의 값을 가져야함 (원자값)

        - 하나의 셀에 하나의 정보

제1정규형 전후

    ② 제 2 정규형

        - 모든 속성은 반드시 기본키 전부에 종속되어야 한다 (기본키 일부에만 종속되어서는 안됨)

        - 참조무결성 : 수강테이블의 학번과 과목코드는 반드시 학생테이블과 과목테이블에 존재해야 한다           

 

    제 3 정규형

        - 기본키가 아닌 모든 속성 간에는 서로 종속될 수 없다 (속성 간 종속성 배제)

댓글