2과목을 아무리 잘 봐도 1과목에서 일곱 문항을 놓치면 떨어집니다. 열 문항짜리 과목이 시험 전체의 스위치를 쥐고 있습니다.
풀고 시작
문제 1. 1과목에서 가장 자주 갈리는 자리는 어디일까요?
1과목에는 계산이 거의 없습니다. 대신 부분 종속과 이행 종속, 식별 관계와 비식별 관계처럼 짝을 이루는 용어가 많고, 그 짝을 뒤집어 놓으면 아는 사람도 걸립니다.
열 문항이 스위치인 이유
배점표만 보면 1과목은 이십 점짜리입니다. 오십 문항 중 열 문항이니 당연합니다. 그런데 합격 조건을 다시 읽어 보면 그림이 달라집니다. 총점 육십 점 이상에 더해 과목별 사십 퍼센트 미만이면 과락이라는 조건이 붙어 있습니다.
계산해 보겠습니다. 1과목에서 세 문항만 맞히면 삼십 퍼센트라 과락입니다. 이때 2과목을 마흔 문항 전부 맞혀도 결과는 불합격입니다. 총점으로는 사십삼 문항, 팔십육 점인데도 그렇습니다. 반대로 2과목에서 열여섯 문항만 맞히고 1과목을 열 문항 다 맞히면 총점 이십육 문항으로 오십이 점이라 이번에는 총점이 모자랍니다.
정리하면 1과목은 네 문항이 생사를 가르는 구간이고, 그 위로는 총점에 기여하는 평범한 문항입니다. 그래서 목표를 이렇게 잡으시면 됩니다. 네 문항은 반드시, 여섯 문항은 되도록. 여섯 문항을 넘기면 2과목에서 열 문항을 틀려도 여유가 생깁니다.
짝으로 외워야 하는 것들
1과목이 어려운 이유는 개념이 깊어서가 아니라 비슷한 이름이 짝으로 존재하기 때문입니다. 하나만 알면 반드시 그 짝과 헷갈립니다. 그래서 처음부터 짝으로 묶어 외우는 편이 안전합니다.
짝
가르는 한 문장
부분 함수 종속 · 이행 함수 종속
앞은 복합키의 일부에, 뒤는 키가 아닌 속성에 종속됩니다
제2정규형 · 제3정규형
앞이 부분 종속을, 뒤가 이행 종속을 없앱니다
식별 관계 · 비식별 관계
부모의 키가 자식의 키에 들어가면 식별, 일반 속성이면 비식별입니다
본질식별자 · 인조식별자
업무에 원래 있던 값이면 본질, 시스템이 만든 값이면 인조입니다
주식별자 · 보조식별자
관계에 참조되면 주식별자, 유일하지만 참조되지 않으면 보조식별자입니다
기본 엔터티 · 중심 엔터티 · 행위 엔터티
스스로 존재하면 기본, 기본에서 나오면 중심, 둘이 만나 생기면 행위입니다
유형 · 개념 · 사건 엔터티
눈에 보이면 유형, 관리 개념이면 개념, 업무가 일어나 생기면 사건입니다
논리적 독립성 · 물리적 독립성
개념과 외부 사이가 논리, 내부와 개념 사이가 물리입니다
표를 외우라는 말이 아닙니다. 왼쪽을 보고 오른쪽을 말할 수 있는지를 확인하시라는 뜻입니다. 말이 막히면 그 짝이 시험장에서 갈립니다.
분류 문항의 함정
1과목 문항의 상당수는 분류를 묻습니다. 그런데 분류 기준이 여러 축으로 겹쳐 있다는 점이 함정입니다.
식별자를 예로 들어 보겠습니다. 식별자는 대표성으로 나누면 주식별자와 보조식별자이고, 스스로 생성 여부로 나누면 내부식별자와 외부식별자이며, 속성 수로 나누면 단일식별자와 복합식별자이고, 대체 여부로 나누면 본질식별자와 인조식별자입니다. 네 개의 축이 동시에 존재합니다. 그래서 하나의 식별자가 주식별자이면서 내부식별자이면서 복합식별자이면서 인조식별자일 수 있습니다.
문항이 "다음 중 성격이 다른 하나는"이라고 물으면, 어느 축에서 다른지를 먼저 정해야 답이 나옵니다. 축을 정하지 않고 보기를 비교하면 넷 다 그럴듯해 보입니다. 분류 문항을 만나면 축부터 찾으십시오.
엔터티도 같습니다. 유무형으로 나누는 축과 발생 시점으로 나누는 축이 따로 있습니다. 주문은 무형이면서 사건이고 중심 엔터티입니다. 세 말이 모두 맞습니다. 서로 다른 축의 이름이기 때문입니다.
정규화는 순서로 기억합니다
정규화는 단계마다 없애는 것이 다르고, 그 순서가 그대로 문항이 됩니다. 한 줄씩 붙여 기억하시면 됩니다.
제1정규형은 한 칸에 값 하나입니다. 반복되는 그룹과 여러 값을 담은 칸을 없앱니다. 제2정규형은 복합키의 일부에만 매달린 속성을 걷어냅니다. 그래서 기본키가 하나짜리면 1정규형만으로 2정규형이 자동으로 성립합니다. 이 문장이 자주 묻는 자리입니다. 제3정규형은 키가 아닌 속성끼리 서로를 결정하는 관계를 걷어냅니다. 보이스코드 정규형은 여기서 한 걸음 더 나가 모든 결정자가 후보키여야 한다고 요구합니다. 제4정규형은 다중값 종속, 제5정규형은 조인 종속을 다룹니다.
반정규화는 이 반대 방향인데, 시험에서 갈리는 지점은 정의가 아니라 판단입니다. 반정규화는 실패가 아니라 성능을 얻고 일관성 관리 부담을 지불하는 의도된 결정입니다. 그리고 정규화된 모델이 있어야 무엇을 되돌린 것인지 알 수 있으므로 순서가 뒤바뀌면 안 됩니다.
인출 문제
문제 1. 1과목 10문항 중 몇 문항을 맞혀야 과락을 면하나요?
사십 퍼센트 미만이 과락이므로 네 문항 이상이 필요합니다. 세 문항이면 2과목을 다 맞혀도 떨어집니다.
문제 2. 기본키가 단일 속성인 릴레이션이 제1정규형을 만족하면 자동으로 만족하는 정규형은?
부분 종속은 복합키가 있어야 생기므로 단일키면 2정규형이 자동입니다. 이행 종속은 여전히 남을 수 있어 3정규형은 따로 확인해야 합니다.
문제 3. 식별자 분류에서 본질식별자와 인조식별자를 가르는 축은?
같은 식별자가 여러 축에서 동시에 분류됩니다. 본질과 인조는 값의 출처를 보는 축입니다.
문제 4. 부분 함수 종속과 이행 함수 종속의 차이를 바르게 설명한 것은?
부분 종속은 복합키가 있을 때만 생기고 이행 종속은 일반 속성끼리의 종속입니다. 각각 2정규형과 3정규형에서 걷어냅니다.
더 풀기
출제기준의 세세항목을 따라 이 강의 범위에서 새로 낸 문제입니다. 모의고사도 여기에서 뽑습니다.
묶음 1
문제 1. 사원번호가 부서코드를 결정하고 부서코드가 부서명을 결정할 때 부서명은 사원번호에 어떤 종속인가요?
중간을 거쳐 간접적으로 결정되므로 이행 종속입니다. 이것을 없애는 것이 제3정규형입니다.
문제 2. 주문번호와 상품번호가 복합키인 테이블에 상품명이 있다면 위반한 정규형은?
상품명은 상품번호만으로 정해지므로 복합키의 일부에만 종속됩니다. 부분 종속이고 2정규형 위반입니다.
문제 3. 한 칸에 등산과 독서를 쉼표로 이어 저장한 취미 컬럼이 위반한 정규형은?
원자값 원칙을 어긴 것이라 1정규형 위반입니다. 값 단위로 조회하거나 집계할 수 없게 됩니다.
문제 4. 모든 결정자가 후보키여야 한다는 요구를 하는 정규형은?
3정규형을 강화한 형태로, 후보키가 아닌 속성이 다른 속성을 결정하는 상황을 없앱니다.
문제 5. 서로 무관한 두 다중값 속성이 한 릴레이션에 있어 불필요한 조합이 생길 때 필요한 정규형은?
다중값 종속을 다루는 것이 4정규형입니다. 조인 종속은 5정규형의 주제입니다.
문제 6. 정규화 과정에서 릴레이션을 분해할 때 반드시 지켜야 하는 성질은?
무손실 분해가 전제입니다. 다시 붙였을 때 없던 행이 생기면 잘못된 분해입니다.
문제 7. 다음 중 갱신 이상에 해당하지 않는 것은?
갱신 이상은 삽입과 삭제와 수정 세 가지입니다. 정렬 이상이라는 용어는 없습니다.
문제 8. 마지막 수강생을 지웠더니 과목 정보까지 사라지는 현상은?
한 행에 여러 주제가 섞여 있어 한쪽을 지울 때 다른 주제도 함께 사라지는 경우입니다.
문제 9. 아직 수강생이 없는 과목을 등록하려는데 수강 정보를 함께 넣어야만 행을 만들 수 있는 현상은?
원하지 않는 정보까지 있어야 입력이 가능한 상태가 삽입 이상입니다.
문제 10. 정규화가 성능을 반드시 나쁘게 한다는 말이 오해인 이유로 가장 알맞은 것은?
조회에서는 조인 비용이 늘지만 저장과 갱신에서는 유리합니다. 성능은 양쪽을 함께 보아야 합니다.
묶음 2
문제 1. 엔터티가 되기 위한 조건으로 보기 어려운 것은?
계약이나 주문처럼 무형인 것도 엔터티가 됩니다. 유무형은 분류 기준일 뿐 자격 조건이 아닙니다.
문제 2. 주문 상세는 발생 시점으로 볼 때 어떤 엔터티인가요?
주문과 상품이라는 두 엔터티가 만나 생기므로 행위 엔터티입니다.
문제 3. 부서는 유무형 기준으로 볼 때 어떤 엔터티인가요?
눈에 보이는 물체가 아니라 관리 목적으로 정의한 개념입니다. 발생 시점 기준으로는 기본 엔터티에 가깝습니다.
문제 4. 인스턴스가 하나뿐인 대상을 엔터티로 만들면 안 되는 이유로 가장 알맞은 것은?
회사가 하나뿐인데 회사 엔터티를 두면 늘 한 건입니다. 설정값으로 두는 편이 맞습니다.
문제 5. 속성이 더 이상 쪼갤 수 없어야 한다는 원칙을 어긴 예로 가장 알맞은 것은?
시군구로 집계해야 한다면 그 주소는 여러 뜻이 뭉쳐 있는 것입니다. 다만 통째로만 쓴다면 나누지 않는 편이 나을 수도 있습니다.
문제 6. 다른 속성으로부터 계산해 얻을 수 있는 속성을 무엇이라 하나요?
단가와 수량을 곱한 금액이 대표적입니다. 조회 비용을 줄이는 대신 값이 어긋날 위험을 안습니다.
문제 7. 시스템이 관리 편의를 위해 새로 만든 코드 속성은 어떤 분류인가요?
업무에 원래 없던 것을 설계자가 만든 것이 설계 속성입니다.
문제 8. 다대다 관계를 물리 모델에서 그대로 둘 수 없는 이유는?
한 칸에 여러 값을 담을 수 없으므로 관계 엔터티를 두어 두 개의 일대다로 풀어야 합니다.
문제 9. 식별 관계를 계속 이어 갈 때 생기는 문제로 가장 알맞은 것은?
부모 키를 계속 물려주므로 세대가 깊어질수록 키가 커집니다.
문제 10. 실제로는 부모 없이 존재할 수 없는데 비식별 관계로 두면 생기는 문제는?
구조로 막지 않으면 프로그램 하나의 실수로 규칙이 무너집니다.
묶음 3
문제 1. 세 단계 스키마에서 사용자마다 다른 관점을 기술하는 것은?
외부 스키마가 사용자별 뷰입니다. 통합 구조는 개념, 저장 방식은 내부입니다.
문제 2. 개념 스키마가 바뀌어도 응용 프로그램을 고치지 않아도 되는 성질은?
개념과 외부 사이의 독립이 논리적 독립성입니다. 내부와 개념 사이가 물리적 독립성입니다.
문제 3. 저장 구조나 접근 방법을 바꾸어도 개념 스키마를 고치지 않아도 되는 성질은?
인덱스를 새로 만들거나 저장 방식을 바꾸어도 위쪽 구조는 그대로여야 합니다.
문제 4. 좋은 데이터 모델이 피하려는 세 가지로 바르게 묶인 것은?
성능은 물리 설계에서 다루는 별개의 축입니다.
문제 5. 업무에 항목 하나가 늘 때마다 테이블 구조를 고쳐야 하는 상태를 무엇이라 하나요?
작은 변화가 구조 변경을 요구하는 상태입니다. 값이 두 곳에 있는 것은 중복입니다.
문제 6. 기본키가 보장하는 무결성은?
기본키의 유일성과 NULL 아님이 개체 무결성입니다. 참조 무결성은 외래키가 담당합니다.
문제 7. 자식이 가리키는 부모가 반드시 존재하거나 값이 비어 있어야 한다는 규칙은?
관계가 가리키는 대상이 실제로 있는지를 보는 규칙입니다.
문제 8. 트랜잭션의 원자성을 가장 잘 설명한 것은?
나머지는 각각 일관성과 고립성과 지속성의 설명입니다.
문제 9. 모델이 트랜잭션을 표현한다는 말의 뜻으로 가장 알맞은 것은?
주문과 주문 상세가 양쪽 필수라면 둘은 함께 생기고 함께 사라져야 합니다. 그것이 트랜잭션 범위의 실마리입니다.
문제 10. 다음 중 1과목 학습에 대한 설명으로 옳지 않은 것은?
과락 조건 때문에 열 문항 중 네 문항이 생사를 가릅니다. 배점만 보고 뒤로 미루면 위험합니다.