이상 현상과 함수 종속
쉽게 말하면
한 표에 여러 사실을 섞어 적으면 같은 내용이 여러 줄에 반복돼요. 그러면 고칠 때 몇 줄을 빠뜨리거나, 넣고 싶은 걸 못 넣거나, 지우다가 다른 정보까지 사라지는 문제가 생겨요. 이게 이상 현상이에요. 어떤 칸이 어떤 칸을 결정하는지(함수 종속)를 보면 무엇을 따로 떼어야 할지 알 수 있어요.
시험용 정의
이상 현상(Anomaly)은 한 테이블에 서로 다른 사실이 섞여 중복이 생길 때, 데이터를 넣거나(삽입), 고치거나(갱신), 지울(삭제) 때 생기는 문제다. 원인은 함수 종속이 잘못 묶인 것이고, 이를 바로잡는 과정이 정규화다.
비유로 이해하기
주소록 한 장에 친구 이름과 그 친구 회사의 회사 주소를 함께 적어 두면, 회사가 이사할 때 그 회사 다니는 친구 줄을 전부 고쳐야 하고(갱신), 친구가 한 명도 없는 회사는 적을 수 없고(삽입), 마지막 친구를 지우면 회사 주소도 사라진다(삭제).
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 결정자 | 다른 속성 값을 정해 주는 속성. 학번을 알면 이름이 정해지므로 학번이 결정자 |
| 종속자 | 결정자에 의해 값이 정해지는 속성. 위 예의 이름 |
| 후보키 | 행을 유일하게 구별할 수 있는 최소한의 속성(조합). 그중 하나를 기본키로 고른다 |
| 복합키 | 속성 두 개 이상으로 이루어진 키. (학번, 과목)처럼 |
세 가지 이상 현상
| 이상 | 무슨 일이 생기나 | 수강(학번, 과목, 학생이름, 과목담당교수) 예 |
|---|---|---|
| 삽입 이상 | 원하지 않는 값까지 함께 넣어야 데이터를 넣을 수 있다 | 아직 수강생이 없는 새 과목과 담당교수를 넣을 수 없다 (학번이 키의 일부라 NULL 불가) |
| 갱신 이상 | 중복된 값 중 일부만 고쳐져 서로 맞지 않게 된다 | 학생 이름을 바꿀 때 그 학생 행을 모두 고쳐야 한다 |
| 삭제 이상 | 지우려는 데이터 말고 다른 정보까지 함께 사라진다 | 어떤 과목의 마지막 수강생 행을 지우면 그 과목의 담당교수 정보도 사라진다 |
함수 종속
속성 X의 값을 알면 속성 Y의 값이 하나로 정해질 때 "Y는 X에 함수 종속된다"고 하고 X → Y로 쓴다. 예: 학번 → 학생이름, (학번, 과목) → 성적.
- 완전 함수 종속: Y가 키 전체에만 종속된다. (학번, 과목) → 성적
- 부분 함수 종속: Y가 복합키의 일부에만 종속된다. (학번, 과목) 중 학번 → 학생이름. 제2정규형이 없앤다
- 이행 함수 종속: X → Y, Y → Z 이면 X → Z가 "건너서" 생긴다. 사원번호 → 부서번호 → 부서명. 제3정규형이 없앤다
시험에 이렇게 나와요
- 삽입·갱신·삭제 이상을 표 예시에서 골라내기
- 함수 종속 표기 X → Y 읽기, 결정자와 종속자
- 부분 함수 종속(2NF 대상)과 이행 함수 종속(3NF 대상) 구분
- 이상 현상의 원인 = 여러 사실이 한 테이블에 섞인 중복
출제 범위·공식 안내 기반
확인 문제
Q1. 수강 테이블에 (학번, 과목, 학생이름)이 함께 있다. 어떤 학생이 개명해서 이름을 고칠 때 그 학생의 행을 모두 고쳐야 한다. 이 문제는?
- 조인 이상
- 삭제 이상
- 삽입 이상
- 갱신 이상
정답 보기
4번 갱신 이상
같은 사실(학생 이름)이 여러 행에 중복되어 있어 한 곳만 고치면 값이 서로 달라진다. 이것이 갱신 이상이다.
Q2. 주문 테이블에 고객 주소가 함께 있어 고객이 이사하면 그 고객의 모든 주문 행을 고쳐야 한다. 어떤 이상인가?
- 삽입 이상
- 이상 없음
- 삭제 이상
- 갱신 이상
정답 보기
4번 갱신 이상
중복된 고객 주소를 일부만 고치면 값이 어긋나는 갱신 이상이다.
Q3. 사원번호 → 부서번호, 부서번호 → 부서명 일 때 사원번호 → 부서명 종속을 무엇이라 하나?
- 다치 종속
- 부분 함수 종속
- 이행 함수 종속
- 완전 함수 종속
정답 보기
3번 이행 함수 종속
부서번호를 거쳐 생기는 이행 함수 종속. 제3정규형에서 부서 테이블로 분리한다.
Q4. 기본키가 (학번, 과목코드)인 테이블에서 '학생이름'이 학번에만 종속된다. 이 종속은?
- 부분 함수 종속
- 결정자 종속
- 이행 함수 종속
- 완전 함수 종속
정답 보기
1번 부분 함수 종속
복합키의 일부(학번)에만 종속되므로 부분 함수 종속. 제2정규형 위반이다.
Q5. 이상 현상이 생기는 근본 원인은?
- 인덱스가 없어서
- 여러 사실이 한 테이블에 섞여 중복이 생겨서
- 외래키가 많아서
- 데이터 양이 많아서
정답 보기
2번 여러 사실이 한 테이블에 섞여 중복이 생겨서
한 테이블에 여러 주제가 섞이면 같은 사실이 여러 행에 반복되고, 고칠 때마다 어긋난다.
Q6. 함수 종속 X → Y에서 X를 무엇이라 하나?
- 종속자
- 결정자
- 외래키
- 도메인
정답 보기
2번 결정자
X가 Y를 결정하므로 X는 결정자, Y는 종속자다.
헷갈리기 쉬운 O·X
X → Y에서 X를 종속자, Y를 결정자라고 한다.
정답 보기
X X가 결정자, Y가 종속자다.
삭제 이상은 한 행을 지울 때 원하지 않는 정보까지 함께 사라지는 문제다.
정답 보기
O 마지막 수강생을 지우면 과목 담당교수 정보도 사라지는 식이다.
이상 현상은 데이터가 중복 없이 한 곳에만 저장될 때 주로 생긴다.
정답 보기
X 중복이 원인이다. 정규화로 중복을 없애면 이상 현상이 줄어든다.