4주차 - 이상현상, 정규화
1. 이상 현상이 뭘까요?
이상 현상(Anomaly)은 테이블을 잘못 설계해서 데이터 조작 시 발생하는 논리적 오류를 말합니다. 이상 현상에는 삽입 이상, 갱신 이상 그리고 삭제 이상이 있습니다.
모범 예상 답변
2. 삽입 이상(Insertion Anomaly)에 대해서 설명해주세요.
삽입 이상(Insertion Anomaly)은 데이터를 삽입할 때 원하지 않는 값을 포함해야만 테이블에 추가가 가능한 현상을 말합니다. 예를 들어 (아이디, 이메일, 이름, 비밀번호) NOT NULL 필드를 가지는 회원 테이블이 있습니다. 이 때 아이디, 이름, 비밀번호 필드만 가지고 신규 회원을 생성할 수 없습니다. 반드시 이메일 컬럼을 포함해야 하므로 원하지 않는 값을 포함하게 됩니다.
모범 예상 답변
3. 갱신 이상(Update Anomaly)에 대해서 설명해주세요.
갱신 이상(Update Anomaly)은 중복된 데이터 중 일부만 수정되어 내용이 불일치하는 현상을 말합니다. 예를 들어 (학번, 과목명, 성적, 이름) 필드를 가지는 강의 테이블이 있습니다. 100 학번 A가 데이터베이스와 자료구조 과목을 수강하고 있습니다. A가 수강하는 데이터베이스 과목의 이름을 B로 바꾸면 학번과 이름의 1:1 매핑 불일치가 일어납니다.
모범 예상 답변
4. 삭제 이상(Deletion Anomaly)에 대해서 설명해주세요.
삭제 이상(Deletion Anomaly)은 어떤 정보를 삭제했을 때 삭제를 원하지 않는 값도 삭제되는 현상을 말합니다. 예를 들어 (학번, 과목명, 성적, 이름) 필드를 가지는 강의 테이블이 있습니다. 100 학번 A가 받은 성적 80점만 삭제할 수 없습니다. 반드시 다른 컬럼의 정보(학번, 과목명, 이름)의 정보도 같이 삭제해야 합니다.
모범 예상 답변
5. 함수 종속성이 무엇인가요?
함수 종속성(Functional Dependency)는 두 필드의 집합이 다대일 관계로 사상되는 것을 말합니다. 어떤 테이블 R에 존재하는 필드들의 부분집합을 X와 Y라고 할 때, X의 값이 Y에 속한 어느 한 값에만 사상될 경우 Y는 X에 함수 종속되며 X -> 라고 표기합니다. 예를 들어 (생일, 나이) 필드를 가지는 회원 정보 테이블이 있습니다. 이 때 나이는 생일에 함수 종속 관계입니다. 생일을 알고 있다면 나이 필드를 참조하지 않아도 나이를 계산할 수 있습니다.
함수 종속의 성질
어떠한 테이블 R에 대해 X, Y, Z라는 필드의 집합이 있는 경우 함수 종속은 다음 성질을 만족합니다. (이를 암스트롱의 공리라고 합니다).
augmentation: X -> Y이면, XZ -> YZ이다.
transitivity: X -> Y이고 Y -> Z이면 X -> Z이다.
reflexivity: Y가 X의 부분집합이면 X -> Y이다.
self-determination: X -> X이다(자기 자신은 함수 종속적이다).
union: X -> Y이고 X -> Z이면, X -> YZ이다.
decomposition: X -> YZ이면, X -> Y이고 X -> Z이다.
모범 예상 답변
6. 완전 함수적 종속은 뭔가요?
완전 함수적 종속은 기본키에만 함수 종속이 일어나는 종속 관계를 말합니다. 만일 기본키가 복합키인 경우 기본키를 구성하는 모든 속성이 포함된 기본키의 부분집합에 종속됩니다. 예를 들어 (주민번호, 이름, 성별, 주소) 필드를 가지는 테이블이 있습니다. 테이블에서 주민번호 필드를 제외한 다른 필드로는 유일한 튜플을 식별할 수 없습니다. 이 경우 주민번호라는 속성에만 다른 속성이 종속되는 완전 함수 종속이 이루어졌다고 볼 수 있습니다.
모범 예상 답변
7. 부분 함수적 종속은 뭔가요?
부분 함수적 종속은 기본키가 복합키인 경우 기본 키의 일부 속성에 종속되는 종속 관계를 말합니다. 예를 들어 (이름, 성별, 주소, 지역번호) 필드를 가지는 테이블이 있습니다. 이 테이블의 기본키는 (이름, 성별)입니다. (이름, 성별) -> (주소), (이름, 성별) -> (지역번호)이면서 (이름) -> (주소) 관계도 성립할 수 있습니다. 이 경우 기본키와 기본키의 일부 속성에 종속되는 부분 함수 종속이 이루어졌다고 볼 수 있습니다.
모범 예상 답변
8. 이행적 함수적 종속은 뭔가요?
이행적 함수적 종속은 X, Y, Z라는 3개의 속성이 있을 때 X -> Y, Y -> Z 종속 관계가 있을 경우 X -> Z가 성립되는 종속 관계를 말합니다. 예를 들어 (이름, 성별, 주소, 지역번호) 필드를 가지는 테이블이 있습니다. 이 테이블의 기본키는 (이름, 성별)입니다. X(이름, 성별) -> Y(주소), X(이름, 성별) -> Z(지역번호) 종속 관계가 성립합니다. 이 때 Y(주소) -> Z(지역번호) 관계가 성립합니다. 이 경우에 X를 통해 Y, Z를 알고 Y -> Z가 성립되므로 이행 함수 종속이 이루어졌다고 볼 수 있습니다.
모범 예상 답변
9. 정규화(Normalization)에 대해서 설명해주세요.
정규화(normalization)는 RDBMS 설계에서 데이터 중복을 최소화하는 구조를 말합니다. 정규화된 DB는 무결성을 유지하므로 더욱 효율적으로 데이터 연산을 수행합니다. 조인이 많이 발생해서 성능 저하가 일어나면 반정규화(de-normalization)을 적용할 수도 있습니다.
장점?
이상 현상 제거
확장 시 구조 변경이 용이
연동된 응용 프로그램에 대한 낮은 영향력
단점?
릴레이션 분해로 JOIN 연산 증가
정규화에 따라 질의 응답 시간 증가
모범 예상 답변
10. 제 1 정규형에 대해서 설명해주세요.
제 1 정규화(1NF)는 테이블의 컬럼이 원자값(Atomic value)을 갖도록 테이블을 분해하는 것입니다. 제 1 정규화는 다음 규칙을 만족해야 합니다.
각 컬럼이 하나의 속성만을 가져야 합니다.
하나의 컬럼은 같은 종류나 타입의 값을 가져야 합니다.
각 컬럼이 유일한 이름을 가져야 합니다.
컬럼의 순서가 상관없어야 합니다.
모범 예상 답변
11. 제 2 정규형에 대해서 설명해주세요.
제 2 정규화(2NF)는 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것입니다. 제 2 정규화는 다음 규칙을 만족해야 합니다.
제 1 정규화를 만족해야 합니다.
모든 컬럼이 완전 함수 종속을 만족해야(부분 함수 종속이 없어야) 합니다.
모범 예상 답변
12. 제 3 정규형에 대해서 설명해주세요.
제 3 정규화(3NF)는 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것입니다. 제 3 정규화는 다음 규칙을 만족해야 합니다.
제 2 정규화를 만족해야 합니다.
기본키를 제외한 속성들 간의 이행 종속성(Transitive Dependency)가 없어야 합니다.
모범 예상 답변
13. BCNF 정규형에 대해서 설명해주세요.
BCNF(Boyce-codd Normal Form)은 3차 정규화의 확장판으로 모든 결정자가 후보키 집합에 속한 정규형을 말합니다. BCNF는 다음과 같은 규칙을 만족해야 합니다.
제 3 정규화를 만족해야 합니다.
모든 결정자가 후보키 집합에 속해야 합니다.
모범 예상 답변
14. 반정규화에 대해서 설명해주세요.
반정규화(de-normalization)는 성능 향상을 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 과정을 말합니다. 조인이 많이 발생해서 성능 저하가 일어나면 반정규화를 적용할 수 있습니다.
모범 예상 답변
참고 자료
Last updated