[Data Modeling] Normalizing Your Data Model

2025. 4. 1. 14:07·oracle DB

정규화

1NF: 모든 속성은 반드시 하나의 값을 가져야 한다.

2NF: Part-key Dependency(부분키 의존성)이 없어야 한다.

        주식별자 전체에 종속적이어야 한다.

3NF: 일반 속성간에는 서로 종속적이지 않는다.

 

0NF

 

0NF(비정규형) - 아직 정규화가 되지않은 상태

 

문제점

1. 중복데이터: 사원의 정보가 프로젝트 수 만큼 반복됨

2. 삽입 이상: 프로젝트에 참여하지 않은 사원은 등록 불가

3. 수정 이상: 부서 이름을 바꾸면 여러 행 수정해야 함

4. 삭제 이상: 사원이 참여한 프로젝트 삭제하면 사원 정보도 유실

 

1NF: 모든 속성은 반드시 하나의 값을 가져야 한다.

입력 이상 (=삽입이상) : 프로젝트에 참여한 사원만 사원정보를 등록할 수 있음

수정 이상 (=갱신이상) : 사원의 부서 번호 변경 시 참여 프로젝트 수 만큼의 건 수 만큼 변경해야 함

삭제 이상 : Tom사원의 프로젝트 참여 기록을 삭제하면 Tom사원의 기본 정보도 같이 삭제됨

                  → 중복되는 프로젝트 관련 속성을 분리

                       분리 시 연관성을 유지할 수 있도록 외래키를 정의해야 함

 

 

2NF: 주식별자 전체에 종속적이어야 한다.

입력 이상: 사원이 참여한 프로젝트만 입력될 수 있음

수정 이상: 부서, 매니저 정보 수정이 연관된 건수 모두 같이 변경해야 함

삭제 이상: 사원 정보가 삭제되면 부서, 매니저 정보도 같이 삭제됨

                  → 서로 종속적인 일반 속성들을 분리

 

 

3NF: 일반 속성간에는 서로 종속적이지 않는다.

입력 이상: 사원이 없으면 부서 정보, 매니저 정보를 입력할 수 없음

수정 이상: 부서, 매니저 정보 수정이 연관된 건수 모두 같이 변경해야 함

삭제 이상: 사원 정보가 삭제되면 부서, 매니저 정보도 같이 삭제됨

                    → 서로 종속적인 일반 속성들을 분리

 

 

ERD 그리기

 

사원엔터티의 사번과 매니저엔터티의 사번과 겹치기 때문에

사원엔터티에서 재귀관계를 이용하여 나타내기

 

 

 

 

연습문제

 

 

 

 

1NF : 모든 속성은 반드시 하나의 값을 가져야 한다.

- 제1정규형에 대해 만족

 

2NF: Part-key Dependency(부분키 의존성)이 없어야 한다.

중복되는 것 분리.

학생의 학번과 강좌의 강좌번호를 주식별자로 사용하겠다 ( 등록 에서)

등록에서 중복되는 것을 확인하고 분리.

-> 교수번호, 강좌명 중복

-> 등록에서 교수번호, 강좌명 삭제

 

 

3NF: 일반 속성간에는 서로 종속적이지 않는다.

 

 

 

 

 

정규형

'oracle DB' 카테고리의 다른 글

[Data Modeling] ERD 작성 연습문제11  (0) 2025.04.01
[Data Modeling] M:M  (0) 2025.04.01
[Data Modeling] 8. Assigning Unique Identifiers  (0) 2025.04.01
[Data Modeling] 7. Identifying Relationships  (0) 2025.04.01
[Data Modeling] ERD 작성  (0) 2025.03.31
'oracle DB' 카테고리의 다른 글
  • [Data Modeling] ERD 작성 연습문제11
  • [Data Modeling] M:M
  • [Data Modeling] 8. Assigning Unique Identifiers
  • [Data Modeling] 7. Identifying Relationships
strongyoung
strongyoung
  • strongyoung
    all is well
    strongyoung
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • Healthcare (4)
        • Data Architecture (1)
        • Intern (3)
      • oracle DB (28)
      • Bio analysis (11)
        • ML (2)
        • mini project (1)
        • final project (0)
      • Project (1)
      • paper (3)
        • paper review (1)
      • study (16)
        • certificate (12)
      • coding test (14)
        • Programmers_Python (10)
        • Programmers_OracleSQL (0)
        • 구름LEVEL_Python (4)
  • 블로그 메뉴

    • 홈
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코테1단계
    oracle ws
    코테
    구름LEVEL
    DBA
    파이썬
    프로그래머스
    프로그래머스입문
    oracledbms
    코딩테스트
    인스턴스복구
    오라클
    1단계코테
    구름레벨
    의료영상분할
    Oracle
    구름레벨코테
    Admin
    구름레벨파이썬
    코딩입문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
strongyoung
[Data Modeling] Normalizing Your Data Model
상단으로

티스토리툴바