-
[면접 준비] 정규화 및 정규화의 목적 설명하기면접 준비 2024. 8. 13. 09:50
학습 키워드: deep copy, shallow copy2024-08-13 면접 카타 질문
정규화에 대해서 말해보세요, 정규화의 목적은 무엇인가요:
DB 정규화(Normalization)란 테이블에서 중복된 데이터 및 이상 현상(anomaly)를 제거하기 위해 테이블을 여러 개로 나누는 과정입니다. 테이블을 나누기 때문에 필연적으로 Join 연산이 늘어나고, 이로인해 성능 저하가 발생할 수 있습니다. 따라서 성능 저하가 문제가 되는 경우에는 반 정규화(De-normalization)를 적용하기도 합니다.
정규화에는 여러 단계가 있으며 주로 아래의 단계들이 사용됩니다.
1NF(First Normal Form): 제 1 정규형은 각 컬럼이 원자성(Atomicity)을 가져야하며, 하나의 컬럼은 같은 종류나 타입의 값만을 가져야합니다. 또한, 각 컬럼이 고유한 이름을 가져야하고, 컬럼의 순서가 상관이 없어야한다는 규칙이 적용됩니다.
2NF: 제 2 정규형은 제 1 정규형이 만족된 상황에서 모든 컬럼에 부분적 종속(Partial Dependency)이 없는 형태여야 합니다. 부분 종속이란 여러 PKey에서 일부 컬럼에만 종속되는 상황을 말합니다. 다른 말로는 '기본 키의 부분 집합이 결정자(Determinant)가 되어서는 안된다' 라고 표현합니다.
3NF: 제 2 정규형을 만족한 상태에서 기본 키를 제외한 속성들 간 이행 종속성(Transitive Dependency)이 없어야 한다는 조건이 붙습니다. 이행 종속성이란 A->B 이고 B->C 일 때 A->C 가 성립하는 상태를 말합니다. 예를 들어 기본 키인 A로 B도 알 수 있고 C도 알 수 있지만, B 값 또한 고유하여 B를 통해 C를 알 수 있는 상태가 되면 이행 종속성이 존재하는 것이므로 제 3 정규형에 위배됩니다.
BCNF(Boyce-Codd Normal Form): 제 3 정규형에서 모든 결정자가 후보 키(Candidate Key) 집합에 속해야 한다는 조건이 추가된 형태입니다. 다르게 말하면 기본 키가 아닌 컬럼에 다른 컬럼이 종속되어서는 안된다는 뜻입니다.
--
728x90'면접 준비' 카테고리의 다른 글
[면접 준비] JOIN 설명하기 (0) 2024.08.14 [면접 준비] 무결성 설명하기 (0) 2024.08.14 [면접 준비] Primary Key, Foreign Key, ER 모델이란? (0) 2024.08.13 [면접 준비] 해시 테이블과 이진 검색트리 비교하기 (0) 2024.08.13 [면접 준비] 이진 트리, 이진 검색 트리, 힙의 차이점 / Binary Heap, Red-Black Tree, B+ Tree (0) 2024.08.12