11회차 데이터베이스 | 정규화와 역정규화 관련 질문 내용 정리

728x90

24.02.06 화 나온 질문 공유

  1. 정규화 개념, 장단점 설명
    정규화 : 데이터 일관성, 데이터 중복 최소화를 위해 한 릴레이션이 하나의 의미만 갖도록 릴레이션을 분해하는 과정
    장점: 데이터베이스에 조작 시 이상현상 문제 해결
    단점: 릴레이션의 분해로 인해 릴레이션 간의 조인 연산 많아져 질의 응답 시간 느려질 수 있음
  2. 이상현상 설명
    이상현상 : 데이터 중복으로 인한 부작용을 말하는데, SELECT시에는 문제가 없어도 데이터 조작 (삽입/삭제/수정) 시 문제가 발생하는 것을 의미한다.
    1) 삽입 이상 : 튜플 삽입 시 특정 속성에 NULL입력해야 하는 현상
    2) 삭제 이상 : 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄 삭제 현상
    3) 수정 이상 : 튜플 수정 시 중복된 데이터의 일부만 수정되어 데이터 일관성 훼손되는 현상

  3. 정규화 각 단계
    1NF : 모든 속성값은 원자값을 가져야 한다.
    2NF : 부분 종속성 제거 (즉, 복합 PK의 일부 키에 한 번 더 부분 종속되는 경우를 제거)
    3NF : 이행 종속성 제거  (즉, 기본키 아닌 속성이 기본키에 이행적 함수 종속되는 경우를 제거) 직접 종속하도록
    BCNF : 모든 결정자가 후보기가 되도록 분해 
    4NF : 다치 종속성 제거 (1대 N 종속성 분해)
    5NF : 조인 종속성 제거 

  4. 역정규화 설명, 필요성, 장단점
    역정규화 : 데이터베이스 사용의 성능 향상을 위해 의도적으로 정규화 원칙 위배하는 행위 
    필요성 : 정규화에 너무 충실하다가 되려 수행 속도가 느려진 경우 or 자주 요구되는 데이터를 미리 합쳐둘 경우
    장점: 성능 상의 이점. 속도 향상 
    단점 : 무결성 깨뜨림 

  5. 정규화 목적, 함수적 종속성
    정규화 목적 : 데이터 중복 최소화하고, 데이터 조작 시 발생하는 이상현상 방지하기 위함  
    함수적 종속성 : 어떤 속성 A 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계. A-> B (B는 A에 종속된다)

관련 질문 모음

✅ 정규화에 대해 설명해주세요.

정규화는 하나의 릴레이션에 하나의 의미만 존재하도록 릴레이션을 분해하는 과정이며, 데이터의 일관성, 최소한의 데이터 중복, 최대한의 데이터 유연성을 위한 방법입니다.

제1 정규형 : 테이블의 컬럼이 원자 값(Atomic Value; 하나의 값)을 갖도록 분해합니다.

제2 정규형: 제1 정규형을 만족하고, 기본키가 아닌 속성이 기본키에 완전 함수 종속이도록 분해합니다.

※ 여기서 완전 함수 종속이란 기본키의 부분집합이 다른 값을 결정하지 않는 것을 의미

제3 정규형 : 제2 정규형을 만족하고, 이행적 함수 종속을 없애도록 분해합니다

.※ 여기서 이행적 종속이란 A → B, B → C가 성립할 때 A → C가 성립되는 것을 의미

BCNF 정규형 : 제3 정규형을 만족하고, 함수 종속성 X → Y가 성립할 때 모든 결정자 X가 후보키가 되도록 분해합니다

✅ 정규화에는 어떤 장점이 있고 어떤 단점이 있는지 아는대로 설명해주세요.

장점1) 데이터베이스 변경 시 이상현상이 발생하는 문제점을 해결할 수 있다.

장점2) 데이터베이스 구조 확장 시 정규화된 데이터베이스는 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다.

단점1) 릴레이션의 분해로 인해 릴레이션 간의 연산(JOIN 연산)이 많아진다. 이로인해 질의에 대한 응답 시간이 느려질 수 있다.

특징 >> 정규화를 수행한다는 것은 이상현상을 제거하는 것이다. 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다. 따라서 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다.

✅ 역정규화 하는 이유에 대해 아는대로 설명해주세요.

정규화를 거치면 릴레이션 간의 연산(JOIN 연산)이 많아지는데, 이로인해 성능이 저하될 우려가 있습니다.역정규화를 하는 가장 큰 이유는 성능 문제가 있는(읽기작업이 많이 필요한) DB의 전반적인 성능을 향상시키기 위함입니다.

✅ 이상 현상 종류에 대해 설명해주세요.

이상현상은 데이터의 중복으로 인한 부작용을 말합니다

  1. 삽입 이상 : 데이터를 삽입하는 데 필요없는 속성도 함께 추가해야함
  2. 갱신 이상 : 데이터를 갱신한 이후 일관성이 위반됨
  3. 삭제 이상 : 데이터를 삭제하는 데 의도하지 않은 것이 함께 삭제됨, 정보 손실이 일어남

✅ 정규화와 비정규화를 설명하십시오.

정규화 는 데이터 무결성을 유지하기 위해 잘 정의 된 방식으로 테이블을 분할하여 데이터베이스에서 중복 데이터를 제거하는 프로세스입니다. 즉, 관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업입니다. 이 프로세스는 많은 저장 공간을 절약합니다.

비정규화 는 복잡한 쿼리 속도를 높이고 성능을 향상시키기 위해 테이블에 중복 데이터를 추가하는 프로세스입니다.

✅ 정규화의 장점은?

답변: 데이터베이스 변경 시 이상 현상을 제거하고, 데이터베이스 구조 확장 시 재디자인을 최소화합니다.

✅ 정규화의 단점은?

답변: 릴레이션 분해로 인해 릴레이션 간의 연산(join)이 많아집니다. 이로 인해 응답 시간이 느려질 수 있습니다.

✅ ER 모델은 무엇입니까?

답변 : ER 모델은 데이터베이스의 개념적 뷰를 정의하는 엔터티-관계 모델입니다.

ER 모델은 기본적으로 실제 실체와 그 연관 / 관계를 보여줍니다. 여기서 엔티티는 데이터베이스의 속성 세트를 나타냅니다.

✅ 엔터티(Entity), 엔터티 타입(Entitiy type) 및 엔터티 집합(Entitiy set)을 정의하십시오.

답변 : 엔터티는 실세계에서 독립적으로 존재하는 장소, 클래스 또는 객체 일 수 있습니다.

엔터티 타입은 유사한 특성을 가진 엔터티 집합을 나타냅니다.

데이터베이스에 설정된 엔티티는 특정 엔티티 유형을 갖는 엔티티의 집합을 나타냅니다.

✅ 이상현상이란?

답변 : 릴레이션에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하는 것을 말합니다.

✅ 이상의 종류에 대해 말하세요.

답변 :

삽입 이상 은  원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말한다.

삭제 이상 은 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점을 말한다.

갱신 이상 은 정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점을 말한다

✅ 정규화란 ?

관계형 데이터베이스에서 중복을 최소화하기 위해 데이터를 구조화하는 작업입니다. 좀 더 구체적으로는 불만족스러운 나쁜 릴레이션의 애트리뷰트들을 나누어서 좋은 작은 릴레이션으로 분해하는 작업을 말합니다.

정규화 과정을 거치게 되면 정규형을 만족하게 됩니다. 정규형이란 특정 조건을 만족하는 릴레이션의 스키마의 형태를 말하며 제 1 정규형, 제 2 정규형, 제 3 정규형, … 등이 존재합니다.

✅정규형 필요 조건을 말하시오.

1. 제 1 정규형

애트리뷰트의 도메인이 오직 원자값만을 포함하고, 튜플의 모든 애트리뷰트가 도메인에 속하는 하나의 값을 가져야 합니다. 즉, 복합 애트리뷰트, 다중값 애트리뷰트, 중첩 릴레이션 등 비 원자적인 애트리뷰트들을 허용하지 않는 릴레이션 형태를 말합니다.

2. 제 2 정규형

모든 비주요 애트리뷰트들이 주요 애트리뷰트에 대해서 완전 함수적 종속이면 제 2 정규형을 만족한다고 볼 수 있습니다.

완전 함수적 종속이란, X -> Y 라고 가정했을 때, X 의 어떠한 애트리뷰트라도 제거하면 더 이상 함수적 종속성이 성립하지 않는 경우를 말합니다. 즉, 키가 아닌 열들이 각각 후보키에 대해 결정되는 릴레이션 형태를 말합니다.

3. 제 3 정규형

어떠한 비주요 애트리뷰트도 기본키에 대해서 이행적으로 종속되지 않으면 제 3 정규형을 만족한다고 볼 수 있습니다.

이행 함수적 종속이란, X - >Y, Y -> Z의 경우에 의해서 추론될 수 있는 X -> Z의 종속관계를 말한다. 즉, 비주요 애트리뷰트가 비주요 애트리뷰트에 의해 종속되는 경우가 없는 릴레이션 형태를 말합니다.

4. BCNF(Boyce-Codd) 정규형

여러 후보 키가 존재하는 릴레이션에 해당하는 정규화 내용입니다. 복잡한 식별자 관계에 의해 발생하는 문제를 해결하기 위해 제 3 정규형을 보완하는데 의미가 있습니다. 비주요 애트리뷰트가 후보키의 일부를 결정하는 분해하는 과정을 말합니다.

✅ 함수적 종속성이란 무엇인가 ?

어떤 속성 A의 값을 알면 다른 속성 B의 값이 유일하게 정해지는 의존 관계를 '속성 B는 속성 A에 종속한다' 라고 하는 것을 함수적 종속성 이라 합니다.

✅ 함수적 종속성이란 무엇인가요 ?

  • 릴레이션 R에서 X값을 알면 Y를 알 수 있고, X값에 의해 Y값이 달라질 때, Y는 X에 함수적 종속이다.

✅ 반정규화란 무엇인가 ?

반정규화는 정규화된 엔티티, 속성, 관계를 시스템의 성능 향상 및 개발과 운영의 단순화를 위해 중복 통합, 분리 등을 수행하는 데이터 모델링 기법 중 하나입니다.

디스크 I/O 량이 많아서 조회 시 성능이 저하되거나, 테이블끼리의 경로가 너무 멀어 조인으로 인한 성능 저하가 예상되거나, 칼럼을 계산하여 조회할 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하게 됩니다. 일반적으로 조회에 대한 처리 성능이 중요하다고 판단될 때 부분적으로 반정규화를 고려하게 됩니다.

✅ 이상 현상의 종류에 대해 설명하시오.

삽입 이상(insertion anomalies) : 원하지 않는 자료가 삽입된다든지, 삽입하는데 자료가 부족해 삽입이 되지 않아 발생하는 문제점을 말합니다.

삭제 이상(deletion anomalies) : 하나의 자료만 삭제하고 싶지만, 그 자료가 포함된 튜플 전체가 삭제됨으로 원하지 않는 정보 손실이 발생하는 문제점을 말합니다.

수정(갱신)이상(modification anomalies) : 정확하지 않거나 일부의 튜플만 갱신되어 정보가 모호해지거나 일관성이 없어져 정확한 정보 파악이 되지 않는 문제점을 말합니다.

✅ 반정규화에 대해서 설명해주세요

반정규화란 데이터베이스의 사용 성능향상을 위해 의도적으로 데이터에 중복을 허용하고,

데이터를 합치는 것을 의미합니다.

반정규화를 하면 성능상의 이점은 있으나, 무결성을 깰 수 도 있다는 단점이있습니

✅ 정규화의 목적이 무엇인가요?

A. 데이터의 중복을 최소화하고 테이블의 삽입, 삭제, 갱신 과정에서 발생하는 이상현상을 방지하기 위함입니다.

✅ 함수적 종속에 대해 설명하세요.

A. 테이블 속성들간의 관계에 대한 제약조건으로 속성A가 속성B를 결정할 때 B는 A에 함수적으로 종속된다고 한다.

✅ 완전 함수적 종속에 대해 설명하세요.

A. 완전함수적 종속 : 속성들의 집합 X에 대해 Y가 함수적으로 종소될 때, X의 부분집합에 대하여서는 함수적으로 종속되지 않는 경우 Y는 X에 대하여 완전 함수적 종속이라고 한다.

✅ 역정규화 하는 이유는 무엇인가요 ?

A. 정규화를 진행할 수록 하나의 테이블을 여러 테이블로 나누게 되는데, 만약 데이터 호출 시 여러 테이블을 불러서 JOIN을 해줘야한다면 이 비용도 만만치 않기 때문에 역정규화를 한다.

728x90