[ DB & SQL(RDBMS, NoSQL) ] 데이터 베이스 기초 이해_03. 정규화 ( 1NF, 2NF, 3NF 중심)

0
post-thumbnail

[ DB & SQL(RDBMS, NoSQL) ] 데이터 베이스 기초 이해_03.:정규화 ( 1NF, 2NF, 3NF 중심)

▽ 데이터 베이스 기초 이해_03 :정규화 ( 1NF, 2NF, 3NF 중심)

2. 정규화 ( 1NF, 2NF, 3NF 중심)


💬 면접 예상 질문(기본 개념 위주).

1. 정규화(Normalization)란 무엇인가요?

💬 구두 면접형 답변.

정규화는 데이터베이스 설계 시 데이터의 중복을 최소화하고, 삽입·삭제·갱신 이상(Anomaly)을 방지하기 위해 테이블을 구조적으로 나누는 과정입니다.
일반적으로 여러 정규형 단계(1NF, 2NF, 3NF 등)를 거치며 데이터를 구조화합니다.

📝 기술 블로그용 서술형 정리.
  • 정규화(Normalization)는 관계형 데이터베이스 설계에서 중복 데이터를 제거하고
    데이터의 일관성과 무결성을 유지하기 위해 테이블 구조를 체계적으로 분해하는 과정입니다.

  • 이 과정은 관계형 모델에서 발생할 수 있는
    데이터 이상(anomaly) — 삽입 이상, 삭제 이상, 갱신 이상 — 을 방지하는 데 목적이 있습니다.

  • 정규화는 제1정규형(1NF)부터 제5정규형(5NF) 혹은 도메인-키 정규형(DKNF)까지 존재하며,
    일반적으로는 3NF 또는 BCNF까지 수행하는 것이 실제 개발환경에서는 흔합니다.

  • 각 정규형은 엄격한 함수 종속성 기반의 조건을 요구하며,
    데이터 무결성을 강화하고 효율적인 질의를 가능하게 합니다.

2. 정규화의 목적은 무엇인가요?

💬 구두 면접형 답변.

정규화의 목적은 데이터 중복을 줄이고, 데이터 무결성을 유지하며,
삽입·삭제·갱신 시 이상 현상이 발생하지 않도록 하는 것입니다.

📝 기술 블로그용 서술형 정리.

정규화의 주요 목적은 다음과 같습니다:

  • 데이터 중복 최소화:

    • 중복된 데이터를 제거함으로써 저장 공간을 절약하고 관리 효율을 높입니다.
  • 데이터 무결성 유지:

    • 정규화를 통해 데이터의 일관성을 보장하며,
      불필요한 데이터 중복이 없어 데이터 오염 가능성이 줄어듭니다.
  • 이상 현상 방지:

    • 삽입 이상, 삭제 이상, 갱신 이상 등 비정상적인 데이터 조작 문제를 방지합니다.
  • 유지보수 용이성:

    • 데이터 구조가 체계화되어 있어 확장성과 유지보수가 용이해집니다.

3. 정규형(normal form)은 무엇인가요?

💬 구두 면접형 답변.

정규형은 정규화 과정에서 테이블이 어떤 수준까지 정제되었는지를 나타내는 단계입니다.
일반적으로 1NF부터 시작해 2NF, 3NF, BCNF 등으로 이어지며,
각 단계마다 특정한 제약 조건을 만족해야 합니다.

📝 기술 블로그용 서술형 정리.

정규형(Normal Form)은 데이터베이스 정규화의 단계를 정의하는 기준이며,
테이블이 특정 정규형에 해당한다는 것은 해당 단계의 조건을 만족하여
데이터 구조가 정제되었음을 의미합니다.

일반적으로 다음과 같은 단계로 나뉩니다:

  • 1NF (제1정규형): 모든 속성값이 원자값(Atomic value)만을 가지는 상태

  • 2NF (제2정규형): 1NF를 만족하고, 기본 키의 부분 집합에만 종속된 속성이 없는 상태

  • 3NF (제3정규형): 2NF를 만족하고, 이행적 함수 종속이 제거된 상태

  • BCNF: 결정자가 후보 키인 조건을 추가로 만족

각 정규형 단계로 갈수록 중복이 줄어들고 무결성이 향상되지만,
조인의 복잡성이나 성능 저하 이슈가 발생할 수 있기 때문에
실제 개발과정에서는 3NF 또는 BCNF 수준까지 정규화를 진행한 후, 필요에 따라 반정규화를 고려합니다.

4. 1NF(제1정규형)의 정의와 조건은?

💬 구두 면접형 답변.

1NF는 테이블의 모든 속성값이 원자값, 즉 더 이상 분해할 수 없는 값을 가져야 한다는 조건입니다. 배열, 리스트, 중첩된 레코드 등은 허용되지 않습니다.

📝 기술 블로그용 서술형 정리.
  • 1NF(제1정규형)은 관계형 모델의 가장 기본적인 정규형으로,
    테이블 내 모든 속성의 값은 반드시 원자적(Atomic)이어야 합니다.

  • 즉, 하나의 셀에는 하나의 값만 존재해야 하며, 복합 구조(배열, 리스트, JSON 등)는 허용되지 않습니다.

  • 예시 (1NF 위반):
학생ID이름전화번호
1철수010-1111-2222, 010-3333-4444

→ 1NF 적용 후:

학생ID이름전화번호
1철수010-1111-2222
1철수010-3333-4444

1NF를 통해 데이터의 단일성과 일관성을 확보하며, 이후 정규화 단계의 기반이 됩니다.

5. 2NF(제2정규형)의 정의와 조건은?

💬 구두 면접형 답변.

2NF는 1NF를 만족하면서, 기본 키의 일부분에만 종속된 속성(부분 함수 종속)이 없어야 합니다.
즉, 모든 속성은 기본 키 전체에 완전 함수 종속되

📝 기술 블로그용 서술형 정리.

2NF(제2정규형)은 다음 두 조건을 만족해야 합니다:

  • 1NF를 만족할 것 !

  • 부분 함수 종속(Partial Dependency)이 없을 것 !

    • 부분 함수 종속이란, 기본 키가 복합 키일 경우, 기본 키의 일부 속성에만 종속되는 속성을 의미합니다.
    • 2NF는 이를 제거하여, 비프라이머리 속성이 기본 키 전체에 종속되도록 만든다.
  • 예시 (2NF 위반):
과목ID학생ID성적학생이름
101S001A홍길동

→ 기본 키가 (과목ID, 학생ID)인 경우, 학생이름은 학생ID에만 종속 → 부분 종속.

  • → 2NF 적용 후:

    • 학생 테이블: (학생ID, 학생이름)

    • 성적 테이블: (과목ID, 학생ID, 성적)

      • 2NF를 통해 데이터 중복을 줄이고, 데이터 삽입·삭제 이상을 방지할 수 있다.

6. 3NF(제3정규형)의 정의와 조건은?

💬 구두 면접형 답변.

2NF는 1NF를 만족하면서, 기본 키의 일부분에만 종속된 속성(부분 함수 종속)이 없어야 합니다.
즉, 모든 속성은 기본 키 전체에 완전 함수 종속되

📝 기술 블로그용 서술형 정리.

3NF(제3정규형)은 다음 조건을 만족해야 합니다:

  • 2NF를 만족할 것

  • 이행 함수 종속(Transitive Dependency)이 없을 것

    • 이행 종속이란 A → B, B → C가 존재할 때, A → C가 되는 함수 종속 관계를 의미합니다.
    • 이 경우 C는 B에 종속되고, B는 A에 종속되므로 C는 간접적으로 A에 종속됩니다.
    • 3NF는 이런 간접 종속을 제거한다.
  • 예시 (3NF 위반):
학생ID학과ID학과이름
S001D01컴퓨터공학과

→ 학과이름은 학과ID에 종속, 학과ID는 학생ID에 종속 → 이행 종속

  • → 3NF 적용 후:

    • 학생 테이블: (학생ID, 학과ID)

    • 학과 테이블: (학과ID, 학과이름)

3NF는 논리적 독립성과 데이터 일관성 유지에 큰 역할을 하며,
일반적으로 실무에서 가장 많이 사용되는 정규형입니다.

7. 1NF에서 2NF로 전환되는 예제를 설명해주세요.

💬 구두 면접형 답변.

1NF는 모든 컬럼이 원자값을 갖는 상태입니다. 하지만 기본 키가 복합키일 때, 일부 컬럼이 키의 일부에만 종속된다면 2NF를 만족하지 못합니다.
이 경우, 해당 종속 컬럼을 분리하여 별도의 테이블로 나누면 2NF로 전환됩니다.

📝 기술 블로그용 서술형 정리.

1NF → 2NF 전환 과정은 복합 기본 키에서 발생하는 부분 함수 종속성을 제거하는 작업입니다.
이를 위해 비정규화된 속성을 별도의 테이블로 분리해야 합니다.

  • 예시: 1NF 상태

[성적 테이블]
과목ID | 학생ID | 성적 | 학생이름
--------|---------|------|----------
101 | S001 | A | 홍길동
101 | S002 | B | 김철수

- 기본 키: (과목ID, 학생ID)

- 학생이름은 학생ID에만 종속 → 부분 종속 존재 → 2NF 위반
  • 2NF 적용 후

[학생 테이블]
학생ID | 학생이름
--------|----------
S001 | 홍길동
S002 | 김철수

[성적 테이블]
과목ID | 학생ID | 성적
--------|---------|------
101 | S001 | A
101 | S002 | B

✅ 이로써 학생이름은 학생ID에 완전히 종속되며, 모든 속성이 기본 키 전체에 종속됨 → 2NF 만족.

8. 2NF에서 3NF로 전환되는 예제를 설명해주세요.

💬 구두 면접형 답변.

2NF 상태에서는 기본 키의 일부에만 종속된 속성은 없지만, 이행 종속이 존재할 수 있습니다.
이 경우, 비키 속성이 다른 비키 속성에 종속된 구조를 분리하여 3NF로 전환합니다.

📝 기술 블로그용 서술형 정리.

2NF → 3NF 전환은 이행 함수 종속(Transitive Dependency)을 제거하는 과정입니다.
이행 종속은 기본 키가 아닌 속성이 다른 속성을 통해 간접적으로 기본 키에 종속되는 상태이다.

  • 예시: 2NF 상태

[학생 테이블]
학생ID | 학과ID | 학과이름
--------|--------|----------
S001 | D01 | 컴퓨터공학과
S002 | D02 | 수학과

- 학과이름은 학과ID에 종속

- 학과ID는 학생ID에 종속 → 이행 종속 존재 → 3NF 위반
  • 3NF 적용 후

[학생 테이블]
학생ID | 학과ID
--------|--------
S001 | D01
S002 | D02

[학과 테이블]
학과ID | 학과이름
--------|----------
D01 | 컴퓨터공학과
D02 | 수학과

✅ 이제 모든 속성이 기본 키에 직접적으로만 종속됨 → 3NF 만족

9. 함수 종속(Functional Dependency)이란 무엇인가요?

💬 구두 면접형 답변.

함수 종속이란 어떤 속성 A의 값이 정해지면, 다른 속성 B의 값이 하나로 결정되는 관계를 말합니다. 이를 A → B라고 표현하며, 데이터의 논리적 제약을 나타냅니다.

📝 기술 블로그용 서술형 정리.

함수 종속(Functional Dependency)은 릴레이션에서 속성 A가 주어지면 속성 B의 값이 유일하게 결정되는 관계를 의미합니다.

이를 수학적으로 다음과 같이 표현합니다:

A → B
  • 이는 A가 같다면 B도 항상 같다는 것을 의미

  • A: 결정자(Determinant), B: 종속자(Dependent)

  • 예시.

    • 학번 → 이름

    • 같은 학번이면 항상 같은 이름 → 함수 종속 성립

함수 종속은 정규화에서 부분 종속, 이행 종속, 완전 종속 등의 개념의 근간이 되며,
데이터 무결성 유지에 중요한 역할을 합니다.

10. 기본 키와 완전 함수 종속의 관계는?

💬 구두 면접형 답변.

완전 함수 종속이란 어떤 속성이 기본 키 전체에 종속되는 관계입니다.
즉, 기본 키의 일부분만으로는 결정되지 않고, 전체가 있어야만 결정됩니다.
이는 2NF에서 매우 중요한 개념입니다.

📝 기술 블로그용 서술형 정리.

완전 함수 종속(Full Functional Dependency)이란,
어떤 속성이 기본 키 전체에 종속되며,
기본 키의 일부분만으로는 종속 관계가 성립하지 않는 경우를 말합니다.

  • 📌 수식 표현:
X → Y, but ∀ Z ⊂ X, Z ↛ Y

즉, X 전체에 의해 Y가 결정되지만, X의 진부분집합 Z만으로는 Y를 결정할 수 없다면,
Y는 X에 완전 함수 종속입니다.

  • 📌 예시

(학생ID, 과목ID) → 성적 ← 완전 함수 종속
학생ID → 이름 ← 단일 종속 (가능성 있음)

완전 함수 종속은 2NF에서 매우 중요한 개념으로, 부분 함수 종속 제거 여부 판단의 기준이 됩니다.

11. 부분 함수 종속(Partial Dependency)이란 무엇인가요?

💬 구두 면접형 답변.

부분 함수 종속은 어떤 속성이 복합 기본 키의 일부에만 종속되는 경우를 말합니다.
이는 2NF에서 제거 대상이 되며, 이를 제거하면 테이블이 2NF를 만족하게 됩니다.

📝 기술 블로그용 서술형 정리.

부분 함수 종속(Partial Dependency)
어떤 속성이 복합 기본 키의 일부에만 종속되는 현상을 말합니다.

  • 📌 공식 표현:
X → Y  이면서, X는 복합 키이고, Z ⊂ X, Z → Y
  • 📌 예시.
과목ID, 학생ID → 성적
학생ID → 학생이름
  • 학생이름은 학생ID에만 종속됨 → 과목ID는 관계 없음

  • 따라서 학생이름은 (과목ID, 학생ID)에 부분 함수 종속됨

✅ 이처럼 부분 함수 종속이 존재하면 2NF를 만족하지 않음,
이를 제거해 테이블을 분리하면 2NF로 정규화됩니다.

12. 이행 함수 종속(Transitive Dependency)이란 무엇인가요?

💬 구두 면접형 답변.

이행 함수 종속은 A → B, B → C와 같이 비기본키 컬럼이
또 다른 비기본키 컬럼을 결정짓는 경우입니다.
이는 3NF에서 제거해야 할 종속입니다.

📝 기술 블로그용 서술형 정리.

이행 함수 종속(Transitive Dependency)은 어떤 속성 A가 B를 결정하고,
다시 B가 C를 결정할 때 발생합니다.

즉, A → B → C가 존재하면, A → C는 이행 함수 종속입니다.

  • 📌 정식 정의:
A → B, B → C 이고, A → C, 단 B는 후보 키가 아닐 때
  • 📌 예시.
학생ID → 학과ID
학과ID → 학과이름
⇒ 학생ID → 학과이름 (이행 종속)

✅ 이 경우 학과이름은 기본 키 학생ID에 이행 종속됨 → 3NF 위반

📌 해결: 학과 테이블을 분리하여 학과ID ↔ 학과이름을 별도로 관리

13. BCNF(Boyce-Codd Normal Form)란 무엇인가요?

💬 구두 면접형 답변.

BCNF는 3NF보다 강화된 정규형으로, 모든 결정자가 후보 키여야 합니다.
3NF는 후보 키가 아닌 결정자가 있을 수 있지만, BCNF는 이를 허용하지 않습니다.

📝 기술 블로그용 서술형 정리.

BCNF(Boyce-Codd Normal Form)는 3NF보다 더 엄격한 정규형입니다.
함수 종속의 결정자(Determinant)가 반드시 후보 키여야 한다는 조건이 추가 됩니다.

  • 📌 정식 조건:
모든 함수 종속 A → B 에 대해, A는 반드시 후보 키여야 한다.
  • 📌 차이점 (3NF vs BCNF)

    • 3NF: B가 기본 속성이면 결정자가 후보 키 아니어도 허용

    • BCNF: B가 무엇이든 A는 반드시 후보 키여야 함

  • 📌 예시.

[교수강의 테이블]
교수명 | 과목 | 강의실

함수 종속:
교수명 → 강의실
과목 → 강의실

후보 키: (교수명, 과목)

→ 교수명이나 과목이 후보 키 아님에도 결정자 역할 → BCNF 위반

✅ 해결: BCNF를 만족하도록 테이블을 분해

14. 정규화와 반정규화(Denormalization)의 차이는?

💬 구두 면접형 답변.

정규화는 중복을 제거하고 데이터 무결성을 높이기 위한 작업이고, 반정규화는 성능 향상을 위해 일부러 중복을 허용하거나 테이블을 합치는 작업입니다.
상황에 따라 균형 있게 사용해야 합니다.

📝 기술 블로그용 서술형 정리.

정규화(Normalization)반정규화(Denormalization)
데이터 모델링 과정에서 서로 상반된 전략입니다.

항목정규화반정규화
목적데이터 중복 제거, 무결성 유지조회 성능 향상, 조인 최소화
장점갱신/삭제 이상 방지, 일관성 보장성능 최적화, 단순화된 쿼리 작성 가능
단점조인 증가로 성능 저하 가능데이터 중복 증가, 일관성 유지 어려움
사용 시점시스템 안정성과 정합성 우선 시대규모 트래픽 시스템, 리포팅/집계 시스템
  • 📌 예시

    • 정규화된 구조: 주문, 고객, 상품 테이블 분리

    • 반정규화 구조: 주문 테이블에 고객이름, 상품이름 컬럼을 포함하여 조회 속도 개선

✅ 실제 설계에서는 정규화로 시작한 뒤,
쿼리 패턴, 조회 빈도, 트래픽 상황에 따라 부분적 반정규화를 적용하는 것이 일반적입니다.

15. 정규화를 지나치게 하면 어떤 문제가 발생할 수 있나요?

💬 구두 면접형 답변.

정규화를 과도하게 적용하면 조인 연산이 많아져 쿼리 성능이 떨어질 수 있습니다.
또한 데이터 구조가 지나치게 복잡해져 개발과 유지보수가 어려워질 수 있습니다.

📝 기술 블로그용 서술형 정리.

정규화는 데이터 중복 제거와 무결성 확보에 매우 효과적이지만,
지나치게 적용될 경우 아래와 같은 문제가 발생할 수 있습니다.

  • 📌 문제점

    • 조인 연산 증가: 지나친 테이블 분리로 인해 SELECT 시 많은 JOIN이 필요함 → 성능 저하

    • 복잡한 쿼리: 쿼리 작성이 어려워지고 디버깅/리팩토링 난이도 상승

    • 개발 생산성 저하: 단순한 조회나 수정에도 여러 테이블을 동시에 다뤄야 함

    • 과도한 관리 포인트: 테이블 수 증가 → 이관, 백업, 권한 관리가 번거로움

✅ 실제 개발에서는 정규화와 반정규화 사이에서 균형을 맞추는 전략이 중요합니다.

16. 정규형 간의 포함 관계를 설명해주세요.

💬 구두 면접형 답변.

정규형은 단계적으로 포함 관계를 갖고 있습니다.
예를 들어 3NF를 만족하는 테이블은 자동으로 1NF, 2NF도 만족합니다.
각 정규형은 이전 단계의 제약 조건을 포함하고 있습니다.

📝 기술 블로그용 서술형 정리.

정규형은 단계적으로 강화되는 형태이며, 상위 정규형은 하위 정규형의 조건을 모두 포함합니다.

  • 📌 정규형 포함 관계
BCNF ⊂ 3NF ⊂ 2NF ⊂ 1NF
  • 1NF: 반복 속성 제거, 원자값

  • 2NF: 부분 함수 종속 제거

  • 3NF: 이행 함수 종속 제거

  • BCNF: 모든 결정자가 후보 키

  • 📌 예시

    • 어떤 테이블이 3NF면 → 2NF와 1NF도 만족

    • 하지만, 3NF라고 해서 반드시 BCNF는 아님 (후보 키가 아닌 결정자가 존재할 수 있음)

✅ 따라서 상위 정규형으로 갈수록 무결성은 높아지지만 성능/복잡성 고려도 필요합니다.

17. 제4정규형(4NF)의 개념은 무엇인가요?

💬 구두 면접형 답변.

4NF는 다치 종속(Multivalued Dependency)을 제거하는 정규형입니다.
하나의 기본 키에 여러 독립적인 다중값 속성이 존재할 경우, 이를 분리해 4NF로 정규화합니다.

📝 기술 블로그용 서술형 정리.

제4정규형(4NF)다치 종속(Multivalued Dependency)을 제거하는 데
초점을 맞춘 정규형입니다.
다치 종속은 한 키에 여러 속성이 서로 독립적이면서 여러 값들을 동시에 가질 때 발생합니다.

  • 📌 정의
모든 다치 종속 A ↠ B에 대해, A는 반드시 후보 키여야 한다.
  • 📌 예시
학생ID | 자격증 | 외국어

→ 한 학생이 여러 자격증과 여러 외국어를 가지고 있음
→ 자격증과 외국어는 서로 독립적

⇒ 다치 종속 발생: 학생ID ↠ 자격증, 학생ID ↠ 외국어
⇒ 4NF 위반

📌 해결: 자격증, 외국어를 각각 테이블로 분리하여 정규화

18. 정규화는 데이터 중복 제거 외에 어떤 장점이 있나요?

💬 구두 면접형 답변.

중복 제거 외에도 데이터 무결성 보장, 변경 이상 방지, 유지보수 용이성 향상 같은 장점이 있습니다.
또한 데이터가 체계적으로 구조화되어 오류를 예방할 수 있습니다.

📝 기술 블로그용 서술형 정리.

정규화는 단순히 데이터 중복을 제거하는 데 그치지 않고, 다양한 추가적 장점을 제공합니다.

  • 📌 주요 장점

    • 데이터 무결성 향상: 불필요한 중복이 사라지며 일관성 유지

    • 삽입/갱신/삭제 이상 방지: 이상 현상(Anomaly) 발생률 감소

    • 유지보수 용이성 증가: 스키마 구조가 명확하고 예측 가능

    • 확장성과 이식성 향상: 추후 구조 변경에도 유연하게 대응

    • 정제된 데이터 기반으로 분석 용이

✅ 따라서 데이터 정합성을 우선시하는 시스템에서는 정규화가 핵심적인 역할을 수행합니다.

19. 정규화는 무조건 수행해야 하나요?

💬 구두 면접형 답변.

꼭 그렇지는 않습니다.
시스템의 목적과 사용 패턴에 따라 정규화와 반정규화는 적절히 병행해야 합니다.
정규화가 중요한 곳도 있지만, 성능이 더 중요한 곳에서는 반정규화가 유리할 수 있습니다.

📝 기술 블로그용 서술형 정리.

정규화는 무조건적인 규칙이 아닌, 데이터 모델링의 기본 원칙 중 하나로 이해해야 한다.

  • 📌 정규화가 필요한 경우

    • 데이터 무결성이 중요한 시스템 (예: 금융, 병원, ERP)

    • 복잡한 트랜잭션 관리가 필요한 구조

  • 📌 반정규화가 고려되는 경우

    • 조회 성능이 중요한 경우 (예: 검색 시스템, 로그 시스템)

    • 실시간 응답성이 중요한 대규모 트래픽 환경

✅ 따라서 시스템 요구사항에 맞춰 정규화와 반정규화를 병행하는 하이브리드 모델링이 현실적입니다.

20. 정규화된 테이블과 그렇지 않은 테이블의 차이를 예로 설명해주세요.

💬 구두 면접형 답변.

정규화된 테이블은 중복이 없고 각 데이터가 제 역할을 합니다.
반면 정규화되지 않은 테이블은 중복 데이터가 많고 수정할 때 불일치가 발생할 수 있습니다.
예를 들어 고객 이름이 여러 행에 반복되는 경우가 그 예입니다.

📝 기술 블로그용 서술형 정리.

정규화된 테이블과 정규화되지 않은 테이블의 주요 차이점은
데이터 중복, 무결성, 유지보수 측면에서 구분됩니다.

  • 📌 비교 예시.
항목정규화 X 예시정규화된 예시 (고객/주문 분리)
테이블 구조주문 테이블에 고객이름, 주소 포함주문: 고객ID, 고객: 이름+주소
중복 여부고객 정보가 주문마다 반복고객 정보는 고객 테이블에 1회만 저장
무결성주소 수정 시 모든 주문행 수정 필요고객 테이블만 수정하면 전체 반영
유지보수어려움 (중복으로 인해 에러 발생 가능)용이 (테이블 간 관계 명확)

✅ 정규화된 테이블은 구조가 명확하고 오류 가능성이 낮아지며,
데이터 정합성을 유지하는 데 더 유리합니다.

💬 면접 예상 질문(실무적인 요소 위주).

1. 개발과정에서 정규화를 적용할 때 가장 먼저 고려할 요소는 무엇일까요?

2. 지나친 정규화로 인해 성능 문제가 발생할 수 있는 경우는??

3. 반정규화를 결정한다면, 이유와 방식은?

4. JOIN이 많아지는 정규화 모델을 최적화 할 방법은??

5. 조회 성능을 위해 비정규화한 테이블 설계한다면?

6. OLTP 환경에서 정규화 수준을 어떻게 조절해야 할까??

7. 정규화를 적용했지만 데이터 중복이 발생하는 케이스는?

8. 데이터 분석을 위해 정규화를 일부 포기해야 하는 경우는?

9. 정규화를 통해 해결 가능한 데이터 무결성 문제는??

10. 정규화가 아닌 다른 방식으로 중복을 관리한다면, 방법과 이유는?

11. 외래 키 설정 없이 관계를 유지할 수 있는 경우는?

12. 테이블을 나누는 기준을 설정한다면??

13. 실무에서 정규화를 문서화하거나 커뮤니케이션하는 방법은?

14. 다대다(N:M) 관계를 정규화할 때 고려하는 포인트는?

15. 정규화 수준이 낮은 상태의 레거시 DB를 개선한다면?

16. 정규화와 관련된 장애나 이슈들의 사례는?

17. 외부 팀과 협업 시 정규화 수준 차이로 인한 충돌이 발생한다면?

18. 데이터 마이그레이션 시 정규화 상태를 어떻게 유지해야 하나요?

19. 정규화를 유지하면서도 읽기 성능을 향상시키기 위한 방법은?

20. 정규화 설계가 추후 비즈니스 로직 변경에 어떤 영향을 줄까?

0개의 댓글