Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Database] 2. 정규화의 종류에 대해서 설명해보세요 #58

Open
nathan29849 opened this issue Oct 31, 2022 · 1 comment
Open
Labels
DB DB 질문

Comments

@nathan29849
Copy link
Member

nathan29849 commented Oct 31, 2022

2. 정규화의 종류에 대해서 설명해보세요

키워드

제 1 정규형, 제 2 정규형, 제 3 정규형, BCNF, 제 4 정규형, 제 5 정규형

@nathan29849 nathan29849 added the DB DB 질문 label Oct 31, 2022
@nathan29849
Copy link
Member Author

nathan29849 commented Oct 31, 2022

정규화란?

  • 관계형 데이터베이스의 설계에서 중복을 최소화 하기위해 데이터를 구조화 하는 프로세스를 정규화라고 한다.
  • 이상현상이 안 생기는 좋은 테이블이 갖추어야 할 조건을 만족하게 하는 것이다.

정규화의 종류

정규화의 종류로는 제 1 정규형, 제 2 정규형, 제 3 정규형, BCNF, 제 4 정규형, 제 5 정규형이 있다.

제 1 정규형

  • 테이블은 반드시 하나 이상의 키를 갖고 있어야 한다.
  • 애트리뷰트의 도메인이 오직 원자 값만을 포함한다.(단일 값을 의미)
  • 즉, 기본 키가 있고, 애트리뷰트가 원자 값을 가지면, 제 1 정규형이라고 본다.

제 2 정규형

  • 제 1 정규형을 만족한다.
  • 후보 키가 아닌 애트리뷰트들이 후보 키에 대해 완전 함수적 종속인 경우여야 한다.
    • 후보 키에 대해 부분 함수적 종속이 발생하면 안된다.
    • 완전 함수적 종속 : A, B, C -> X라고 할 때(3개의 애트리뷰트가 하나의 애트리뷰트에 종속적), A, B, C 중 하나라도 제거하면 함수적 종속이 발생하지 않는 경우

제 3 정규형

  • 제 2 정규형을 만족한다.
  • 후보 키가 아닌 애트리뷰트들에서 이행종속이 발생하지 않아야 한다.
    • 이행 종속 : X->Y 이고, Y->Z이면, X->Z이다.

BCNF(Boyce/Codd Normal Form)

  • 릴레이션의 함수 종속 관계에서 모든 결정권자가 후보 키여야 한다.
  • X -> Y인 모든 X, Y에 대하여
    • (1) Y가 X의 부분집합이거나,
    • (2) X가 후보 키여야 한다.
  • 후보 키가 아닌 애트리뷰트가 다른 애트리뷰트를 함수적으로 결정하면 BCNF가 아니다.

제 4 정규형

  • 릴레이션이 BCNF를 만족하면서, 함수 종속이 아닌 다치 종속을 제거
    • 다치 종속 : 두 개의 독립된 애트리뷰트가 1:N 관계로 대응하는 것
  • 즉, 애트리뷰트의 값이 원자 값이 아닌 값을 여러 개 같는 릴레이션을 분해하여 애트리뷰트가 원자 값을 갖도록 하는 정규형
  • 예시
회원번호 이름 취미
2314 나단 축구, 수영
7212 로니 헬스, 달리기
11234 진구 굴렁쇠
회원번호 이름 취미
2314 나단 축구
2314 나단 수영
7212 로니 헬스
7212 로니 달리기
11234 진구 굴렁쇠

제 5 정규형

  • 릴레이션이 제 4 정규형을 만족하면서, 후보 키를 통하지 않는 조인 종속을 제거
    • 조인 종속 : 마치 조인한 것과 같이 릴레이션의 중복이 발생하는 것
회원번호 이름 취미
2314 나단 축구, 수영
7212 로니 헬스, 달리기
11234 진구 굴렁쇠
회원번호 이름
2314 나단
7212 로니
11234 진구
회원번호 취미
2314 축구
2314 수영
7212 헬스
7212 달리기
11234 굴렁쇠

@zbqmgldjfh zbqmgldjfh changed the title [Datbase] 2. 정규화의 종류에 대해서 설명해보세요 [Database] 2. 정규화의 종류에 대해서 설명해보세요 Nov 1, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DB DB 질문
Projects
None yet
Development

No branches or pull requests

1 participant