본문 바로가기

외부 활동/JSCODE 데이터베이스 면접

4주차 면접예상 질문

이상 현상이 뭘까요?

일반적인 데이터 패턴에서 벗어나거나 예상치 못한 이벤트 또는 상태를 나타냅니다. 

이상 현상은 데이터의 무결성이나 일관성에 영향을 미칠 수 있으며,  

데이터베이스 설계에서 주의하여 방지해야 하며, 

정규화와 같은 기술을 사용하여 데이터 일관성을 유지하고 데이터베이스의 효율성을 향상시킬 수 있습니다.

 

 

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

데이터를 추가하려고 할 때 필수 정보가 부족하거나, 관련 정보가 없어서 데이터를 삽입할 수 없는 상황을 의미합니다.

 

 

 

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

데이터를 업데이트할 때 중복된 정보로 인해 데이터 일관성이 깨지는 상황을 의미합니다. 

예를 들어, 동일한 정보가 여러 행에 중복되어 있을 때 그 정보를 업데이트하지 않으면 데이터 불일치가 발생할 수 있습니다.

 

 

 

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

데이터를 삭제할 때 필요한 정보가 함께 손실되는 상황을 나타냅니다.

예를 들어, 특정 행을 삭제하면 해당 행에 연결된 다른 정보도 함께 삭제되어 데이터 무결성이 깨질 수 있습니다.

 

 

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

 

함수 종속성은 관계형 데이터베이스에서 특정 속성 또는 속성 집합이 다른 속성의 값에 종속되는 상황을 나타냅니다. 

다시 말해, 한 속성의 값이 주어지면 다른 속성의 값이 결정되는 관계를 의미합니다. 

이는 데이터베이스 설계에서 중요한 개념으로, 데이터의 일관성과 무결성을 보장하기 위해 사용됩니다.
데이터베이스 설계에서는 함수 종속성을 고려하여 테이블을 정규화하고, 

이를 통해 데이터 중복을 최소화하고 효율적인 데이터 구조를 만들 수 있습니다.

 함수 종속성은 또한 쿼리 작성과 데이터 검색을 용이하게 하여 데이터베이스의 성능을 향상시키는 데 기여합니다.

 

 

예를 들어, 학생 테이블에서 학번이라는 속성이 주어졌을 때,

 해당 학번에 대한 학생의 이름은 학번에 함수적으로 종속된다고 할 수 있습니다.

즉, 특정 학번은 항상 특정한 학생의 이름과 연결되어 있습니다. 

이러한 함수 종속성은 데이터의 중복을 방지하고 데이터 일관성을 유지하기 위해 사용됩니다.

 

 

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

한 속성이 다른 속성에 함수적으로 종속되면서, 그 종속이 다른 어떠한 속성에도 추가적으로 종속되지 않는 상태를 나타냅니다. 

즉, 어떤 특정 속성 값이 주어지면 다른 속성 값들은 그것에 완전히 종속되어 있으며, 다른 어떤 부분집합에는 종속되어 있지 않습니다.
완전 함수 종속성은 데이터의 무결성을 유지하고 중복을 방지하는 데에 중요한 역할을 합니다.

데이터의 일관성을 보다 강력하게 유지할 수 있으며, 데이터베이스의 효율성을 향상시킬 수 있습니다.

 

 

예를 들어, 학생 테이블에서 학번이 주어졌을 때 해당 학생의 이름과 학과가 완전 함수 종속성을 가진다고 할 수 있습니다. 학번이 주어지면 항상 특정한 학생의 이름과 학과가 결정되지만, 만약 학번에 대한 정보만 있으면 이름이나 학과 외에 다른 어떤 속성에는 종속되어 있지 않습니다.

 

 

 

 

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

한 속성이 다른 속성에 함수적으로 종속되면서, 그 종속이 해당 속성의 일부에만 발생하는 상황을 나타냅니다.

즉, 어떤 특정 속성 값이 주어졌을 때, 다른 속성 값이 그 일부에만 종속되어 있습니다.
부분 함수 종속성은 데이터의 무결성을 유지하는 데 중요한 역할을 합니다. 

데이터의 구조를 더 정확하게 표현하고, 중복을 최소화하여 데이터의 일관성을 강화할 수 있습니다.

 

 


예를 들어, 학생 테이블에서 학번과 학과에 대한 속성이 있을 때, 학번이 주어졌을 때 학과와 동시에 특정 교수의 연구실이 결정된다고 가정해 봅시다. 그러면 교수의 연구실은 학과에 부분 함수 종속성을 가지게 됩니다. 왜냐하면 학번이 주어지면 학과와 함께 특정 교수의 연구실이 결정되지만, 학과의 일부 속성이 아닌 전체에 종속되지 않습니다.

 

 

 

 

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

한 속성이 다른 속성에 간접적으로 함수적으로 종속되는 관계를 나타냅니다.

즉, A가 B에 함수적으로 종속되고, B가 C에 함수적으로 종속되면, A가 C에 대해서도 간접적으로 함수적으로 종속된다는 것을 의미합니다.
이행적 함수 종속성은 데이터의 일관성과 무결성을 유지하기 위해 데이터베이스 설계에서 고려해야 하는 중요한 개념입니다. 

데이터의 종속성을 명확하게 파악하여 데이터베이스를 정규화하고 구조화함으로써 

중복을 최소화하고 데이터의 효율적인 관리를 가능케 합니다.

 

 

 

예를 들어, 학생 테이블에서 학번이 주어졌을 때, 학번은 학생의 학과에 직접 함수적으로 종속되지만, 학과가 해당 교수의 연구실에 종속되고 교수의 연구실이 특정 기기에 종속되면, 학번은 간접적으로 해당 기기에 대해서도 함수적으로 종속될 수 있습니다. 이런 경우, 학번이라는 속성과 해당 기기 간에 추이 함수 종속성이 성립합니다.

 

 

 

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

정규화는 관계형 데이터베이스에서 데이터 중복을 최소화하고 데이터의 일관성, 무결성을 유지하기 위한 과정으로,

테이블을 특정 규칙에 따라 나누거나 구조화하는 프로세스를 의미합니다.
정규화의 목표는 데이터의 삽입, 갱신, 삭제 시 발생할 수 있는 이상 현상(anomaly)을 방지하고, 

데이터베이스의 효율성을 향상시키는 것입니다. 
데이터베이스의 구조가 보다 일관되고 효율적으로 설계될 수 있으며, 쿼리 수행과 데이터 유지보수가 용이해집니다.

 

 

 

 

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

테이블의 각 속성이 원자 값(Atomic Value)만을 가지며, 중복된 값이 없어야 하는 기본적인 정규화의 규칙을 나타냅니다.
1NF를 만족시키기 위해서는 각 속성은 더 이상 나뉘어질 수 없는 단일 값이어야 하며, 

배열이나 목록과 같은 다중 값 형태가 포함되면 안 됩니다. 

또한, 특정 행의 각 값은 유일해야 하며, 중복된 데이터가 허용되지 않습니다.
제1 정규형을 준수하면 데이터 중복이 줄어들고, 데이터의 일관성 및 무결성이 증가하게 되어 데이터베이스의 효율성을 높일 수 있습니다.

 

 

예를 들어, 학생 테이블에서 주소라는 속성이 "도시, 주"와 같은 형태로 되어 있다면 이는 제1 정규형을 위배하게 됩니다.

이를 1NF로 만들기 위해서는 주소를 도시와 주로 따로 분리하여 각각의 속성으로 나타내야 합니다.

 

 

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

제2 정규형(Second Normal Form, 2NF)은 테이블이 제1 정규형을 만족하면서,

기본키에 속하지 않는 모든 속성이 기본키에 완전 함수 종속(dependent)되어야 하는 규칙을 나타냅니다.
2NF를 위해 기본키에 속하지 않는 모든 속성은 해당 테이블의 기본키 전체에 종속되어야 하며, 부분적으로 종속되어서는 안 됩니다.

이를 통해 테이블의 구조를 정리하고 데이터의 중복을 최소화할 수 있습니다.
2NF를 준수하면 데이터의 구조가 더욱 명확해지고, 중복을 효과적으로 제거할 수 있습니다. 

이로써 데이터베이스의 성능과 유지보수가 향상됩니다.

 

예를 들어, 강의 테이블에서 (학번, 강의번호)로 이루어진 복합 기본키가 있을 때, 강의명은 학번에 대한 부분적 함수 종속이라고 할 수 있습니다. 즉, 기본키 중 일부인 학번에만 종속되어 있기 때문에 2NF를 위배하게 됩니다. 이를 해결하기 위해 강의명을 (강의번호, 강의명)으로 따로 분리하여 새로운 테이블로 만들 수 있습니다.

 

 

 

 

 

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

제3 정규형(Third Normal Form, 3NF)은 테이블이 제2 정규형을 만족하면서,

기본키에 속하지 않는 속성 간에 이행적 함수 종속(transitive dependency)이 없어야 하는 규칙을 나타냅니다.
3NF를 위해, 테이블의 모든 비기본키 속성은 기본키에 직접적으로 종속되어야 하며,

다른 비기본키 속성에는 간접적으로 종속되어서는 안 됩니다.

이를 통해 테이블의 구조를 더욱 세분화하고 중복을 최소화할 수 있습니다.
3NF를 준수하면 데이터의 중복이 최소화되고, 데이터베이스의 일관성과 효율성이 향상됩니다. 

데이터의 구조가 더욱 명확해지며, 쿼리 작성과 유지보수가 용이해집니다.

 

 

예를 들어, 학생 테이블에서 (학번, 강의번호)로 이루어진 복합 기본키가 있고, 강의번호에 대한 강의명이 종속되어 있다면 이는 3NF를 위배합니다. 강의번호가 기본키에 종속된 강의명에 대한 이행적 함수 종속이기 때문입니다. 이를 해결하기 위해 (강의번호, 강의명)을 새로운 테이블로 만들어 기본키로 사용할 수 있습니다.

 

 

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

 

 

BCNF(Boyce-Codd Normal Form)는 테이블이 제3 정규형을 만족하면서, 

모든 결정자(candidate key)가 테이블의 모든 비기본키 속성에 대해 완전 함수 종속되어 있어야 하는 규칙을 나타냅니다.
BCNF를 위해, 테이블의 모든 결정자가 기본키인 경우를 제외하고는 다른 비기본키 속성에 대해 완전 함수 종속되어서는 안 됩니다.

이를 통해 테이블의 구조를 더욱 세분화하고 중복을 최소화할 수 있습니다.
BCNF를 준수하면 데이터 중복이 최소화되고, 데이터베이스의 일관성과 효율성이 향상됩니다. 

데이터의 구조가 명확해지며, 쿼리 작성과 유지보수가 더욱 용이해집니다.

 

 

예를 들어, 학생 테이블에서 (학번, 강의번호)로 이루어진 복합 기본키가 있을 때, 강의번호에 대한 강의명이 모든 비기본키 속성에 대해 완전 함수 종속되어 있다면 BCNF를 위배합니다. 이를 해결하기 위해서는 (강의번호, 강의명)을 새로운 테이블로 만들어서 이 관계를 기본키로 사용할 수 있습니다.

 

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

데이터베이스 설계에서 정규화된 데이터 구조를 통합하거나 중복을 증가시켜 성능을 향상시키는 프로세스를 의미합니다.
정규화는 중복을 최소화하고 데이터 일관성을 유지하기 위해 테이블을 분리하고 관련성을 강조하는 과정이지만,

때로는 쿼리의 성능 향상이나 특정한 사용 사례에서의 간편한 데이터 접근을 위해 비정규화가 사용됩니다. 

예를 들어, 복잡한 조인 연산을 줄이거나 쿼리의 실행 속도를 높이기 위해 데이터 중복을 허용하는 경우가 있습니다.

비정규화를 통해 중복된 데이터를 갖는 테이블을 생성하면 읽기 작업은 훨씬 빠르게 수행될 수 있지만, 

쓰기 작업이 복잡해질 수 있고 데이터의 무결성이 유지하기 어려워질 수 있습니다. 

따라서, 비정규화는 성능 향상을 위한 선택 사항이며, 사용 시에는 신중하게 고려되어야 합니다.

 

 

 

'외부 활동 > JSCODE 데이터베이스 면접' 카테고리의 다른 글

5주차 면접 예상질문  (0) 2023.12.06
5주차 : 트랜잭션, 회복  (2) 2023.12.06
4주차 이상 현상, 정규화  (1) 2023.11.28
3주차 면접 예상 질문  (0) 2023.11.20
3주차 인덱스  (0) 2023.11.20