CS 면접 준비

데이터베이스 4주차 스터디 정리

Song쏭 2023. 11. 29. 21:45

📌 4주차 : 이상현상, 정규화

  • Anomaly
  • 함수적 종속
  • 정규화, 반정규화

  • 📌 1. 이상 현상이 뭘까요?
  • 📌 2. 삽입 이상(Insertion Anomaly)에 대해서 설명해주세요.
  • 📌 3. 갱신 이상(Update Anomaly)에 대해서 설명해주세요.
  • 📌 4. 삭제 이상(Deletion Anomaly)에 대해서 설명해주세요.
  • 📌 5. 함수 종속성이 무엇인가요?
  • 📌 6. 완전 함수적 종속은 뭔가요?
  • 📌 7. 부분 함수적 종속은 뭔가요?
  • 📌 8. 이행적 함수적 종속은 뭔가요?
  • 📌 9. 정규화(Normalization)에 대해서 설명해주세요.
  • 📌 10. 제 1 정규형에 대해서 설명해주세요.
  • 📌 11. 제 2 정규형에 대해서 설명해주세요.
  • 📌 12. 제 3 정규형에 대해서 설명해주세요.
  • 📌 13. BCNF 정규형에 대해서 설명해주세요.
  • 📌 14. 반정규화에 대해서 설명해주세요.

좋은 관계형데이터베이스를 설계하는 목적 중 하나가 정보의 이상 현상이 생기지 않도록 고려해 설계하는 것입니다.

 

📌 1. 이상 현상이 뭘까요?

이상 현상은 테이블을 설계할 때, 잘못 설계하여 데이터를 삽입, 삭제, 수정할 때 논리적으로 생기는 오류를 말합니다.

이상 현상은 갱신 이상, 삽입 이상, 삭제 이상으로 구성됩니다.

 

📌 2. 삽입 이상(Insertion Anomaly)에 대해서 설명해주세요.

자료를 삽입할 때 의도하지 않은 자료까지 삽입해야만 자료를 테이블에 추가가 가능한 현상입니다.


📌 3. 갱신 이상(Update Anomaly)에 대해서 설명해주세요.

중복된 데이터 중 일부만 수정되어 데이터 모순이 일어난 현상입니다.


📌 4. 삭제 이상(Deletion Anomaly)에 대해서 설명해주세요.

어떤 정보를 삭제하면 의도하지 않은 다른 정보까지 삭제되어버리는 현상입니다.

 

📌 5. 함수 종속성이 무엇인가요?

데이터베이스 릴레이션에서 두개의 속성 집합 간 제약의 일종입니다.

 

어떤 릴레이션 R에서, X와 Y를 각각 R의 속성(attribute) 집합의 부분 집합이라 한다면,

속성(attribute) X의 값 각각에 대해 시간에 관계없이 항상 속성(attribute) Y의 값이 오직 하나만 연관되어 있을 때

Y는 X에 함수 종속이라 하고, X → Y라고 표기합니다.

 

X를 결정자(determinant set)이라 하고, Y를 종속자(dependent attribute)라고 합니다.

 

R 내의 속성(attribute) 의 집합 X와 역시 R 내에 있는 또 다른 속성(attribute) 의 집합 Y에 대해, 각각의 X 값에 대해 최대 한 개의 Y 값에 연관되어 있을 때, 속성(attribute) 의 집합 X를 함수 결정(to functionally determine)하다고 합니다.


📌 6. 완전 함수적 종속은 뭔가요?

종속자가 기본키에만 종속되며, 

기본키가 여러 속성으로 구성되어 있을 경우

기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속된 경우입니다.


📌 7. 부분 함수적 종속은 뭔가요?

릴레이션에서 종속자가 기본키가 아닌 다른 속성에 종속되거나, 

기본키가 여러 속성으로 구성되어 있을 경우 기본키를 구성하는 속성 중 일부만 종속된 경우입니다.


📌 8. 이행적 함수적 종속은 뭔가요?

릴레이션에서 X, Y, X라는 3 개의 속성이 있을 때, 

X -> Y, Y -> Z 이란 종속관계가 있을 경우, X -> Z가 성립될 때 이행적 함수 종속이라고 합니다.

즉 X를 알면 Y를 알고 그를 통해 Z를 알 수 있는 경우입니다.

 

📌 9. 정규화(Normalization)에 대해서 설명해주세요.

이상현상을 예방하고 효과적인 연산을 하기 위해 데이터 정규화를 합니다.

 

정규화는 테이블 간에 중복된 데이터를 허용하지 않는다는 것입니다.

무결성을 유지할 수 있으며, DB의 저장 용량도 줄일 수 있습니다.

테이블을 어떻게 분해하는지에 따라 정규화 단계가 달라집니다.

 

📌 10. 제 1 정규형에 대해서 설명해주세요.

테이블 칼럼이 원자값(atomic value)을 갖도록 테이블을 분해하는 것입니다.
원자값이란 더 이상 쪼개질 수 없는 단위를 말합니다.


📌 11. 제 2 정규형에 대해서 설명해주세요.

제1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것입니다.
완전 함수 종속이란 기본키의 부분집합이 결정자가 되어선 안된다는 것입니다.


📌 12. 제 3 정규형에 대해서 설명해주세요.

제2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것입니다.
여기서 이행적 종속이라는 것은 A -> B, B -> C가 성립할 때 A -> C가 성립되는 것을 의미합니다.


📌 13. BCNF 정규형에 대해서 설명해주세요.

제3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것입니다.


📌 14. 반정규화에 대해서 설명해주세요.

정합성과 무결성이 보장되지 않더라도 조회시 성능을 높이기 위한 방법입니다.

입력, 수정, 삭제의 성능은 낮아집니다.

 

반정규화를 수행하는 경우는 다음과 같습니다.

1. 정규화에 충실하여 종속성, 활용성은 향상되었지만, 수행 속도가 느려진 경우
2. 다량의 범위를 자주 처리해야하는 경우
3. 특정 범위의 데이터만 자주 처리하는 경우
4. 요약/집계 정보가 자주 요구되는 경우