공든탑앱 열기

이상 현상과 함수 종속

SQLD (SQL 개발자) · 데이터 모델과 SQL · 약 9분

쉽게 말하면

한 표에 여러 사실을 섞어 적으면 같은 내용이 여러 줄에 반복돼요. 그러면 고칠 때 몇 줄을 빠뜨리거나, 넣고 싶은 걸 못 넣거나, 지우다가 다른 정보까지 사라지는 문제가 생겨요. 이게 이상 현상이에요. 어떤 칸이 어떤 칸을 결정하는지(함수 종속)를 보면 무엇을 따로 떼어야 할지 알 수 있어요.

시험용 정의

이상 현상(Anomaly)은 한 테이블에 서로 다른 사실이 섞여 중복이 생길 때, 데이터를 넣거나(삽입), 고치거나(갱신), 지울(삭제) 때 생기는 문제다. 원인은 함수 종속이 잘못 묶인 것이고, 이를 바로잡는 과정이 정규화다.

비유로 이해하기

주소록 한 장에 친구 이름과 그 친구 회사의 회사 주소를 함께 적어 두면, 회사가 이사할 때 그 회사 다니는 친구 줄을 전부 고쳐야 하고(갱신), 친구가 한 명도 없는 회사는 적을 수 없고(삽입), 마지막 친구를 지우면 회사 주소도 사라진다(삭제).

자세히

먼저 알아 둘 말

말뜻
결정자다른 속성 값을 정해 주는 속성. 학번을 알면 이름이 정해지므로 학번이 결정자
종속자결정자에 의해 값이 정해지는 속성. 위 예의 이름
후보키행을 유일하게 구별할 수 있는 최소한의 속성(조합). 그중 하나를 기본키로 고른다
복합키속성 두 개 이상으로 이루어진 키. (학번, 과목)처럼

세 가지 이상 현상

이상무슨 일이 생기나수강(학번, 과목, 학생이름, 과목담당교수) 예
삽입 이상원하지 않는 값까지 함께 넣어야 데이터를 넣을 수 있다아직 수강생이 없는 새 과목과 담당교수를 넣을 수 없다 (학번이 키의 일부라 NULL 불가)
갱신 이상중복된 값 중 일부만 고쳐져 서로 맞지 않게 된다학생 이름을 바꿀 때 그 학생 행을 모두 고쳐야 한다
삭제 이상지우려는 데이터 말고 다른 정보까지 함께 사라진다어떤 과목의 마지막 수강생 행을 지우면 그 과목의 담당교수 정보도 사라진다

함수 종속

속성 X의 값을 알면 속성 Y의 값이 하나로 정해질 때 "Y는 X에 함수 종속된다"고 하고 X → Y로 쓴다. 예: 학번 → 학생이름, (학번, 과목) → 성적.

  • 완전 함수 종속: Y가 키 전체에만 종속된다. (학번, 과목) → 성적
  • 부분 함수 종속: Y가 복합키의 일부에만 종속된다. (학번, 과목) 중 학번 → 학생이름. 제2정규형이 없앤다
  • 이행 함수 종속: X → Y, Y → Z 이면 X → Z가 "건너서" 생긴다. 사원번호 → 부서번호 → 부서명. 제3정규형이 없앤다

시험에 이렇게 나와요

출제 범위·공식 안내 기반

확인 문제

Q1. 수강 테이블에 (학번, 과목, 학생이름)이 함께 있다. 어떤 학생이 개명해서 이름을 고칠 때 그 학생의 행을 모두 고쳐야 한다. 이 문제는?

  1. 조인 이상
  2. 삭제 이상
  3. 삽입 이상
  4. 갱신 이상
정답 보기

4번 갱신 이상

같은 사실(학생 이름)이 여러 행에 중복되어 있어 한 곳만 고치면 값이 서로 달라진다. 이것이 갱신 이상이다.

Q2. 주문 테이블에 고객 주소가 함께 있어 고객이 이사하면 그 고객의 모든 주문 행을 고쳐야 한다. 어떤 이상인가?

  1. 삽입 이상
  2. 이상 없음
  3. 삭제 이상
  4. 갱신 이상
정답 보기

4번 갱신 이상

중복된 고객 주소를 일부만 고치면 값이 어긋나는 갱신 이상이다.

Q3. 사원번호 → 부서번호, 부서번호 → 부서명 일 때 사원번호 → 부서명 종속을 무엇이라 하나?

  1. 다치 종속
  2. 부분 함수 종속
  3. 이행 함수 종속
  4. 완전 함수 종속
정답 보기

3번 이행 함수 종속

부서번호를 거쳐 생기는 이행 함수 종속. 제3정규형에서 부서 테이블로 분리한다.

Q4. 기본키가 (학번, 과목코드)인 테이블에서 '학생이름'이 학번에만 종속된다. 이 종속은?

  1. 부분 함수 종속
  2. 결정자 종속
  3. 이행 함수 종속
  4. 완전 함수 종속
정답 보기

1번 부분 함수 종속

복합키의 일부(학번)에만 종속되므로 부분 함수 종속. 제2정규형 위반이다.

Q5. 이상 현상이 생기는 근본 원인은?

  1. 인덱스가 없어서
  2. 여러 사실이 한 테이블에 섞여 중복이 생겨서
  3. 외래키가 많아서
  4. 데이터 양이 많아서
정답 보기

2번 여러 사실이 한 테이블에 섞여 중복이 생겨서

한 테이블에 여러 주제가 섞이면 같은 사실이 여러 행에 반복되고, 고칠 때마다 어긋난다.

Q6. 함수 종속 X → Y에서 X를 무엇이라 하나?

  1. 종속자
  2. 결정자
  3. 외래키
  4. 도메인
정답 보기

2번 결정자

X가 Y를 결정하므로 X는 결정자, Y는 종속자다.

헷갈리기 쉬운 O·X

X → Y에서 X를 종속자, Y를 결정자라고 한다.

정답 보기

X X가 결정자, Y가 종속자다.

삭제 이상은 한 행을 지울 때 원하지 않는 정보까지 함께 사라지는 문제다.

정답 보기

O 마지막 수강생을 지우면 과목 담당교수 정보도 사라지는 식이다.

이상 현상은 데이터가 중복 없이 한 곳에만 저장될 때 주로 생긴다.

정답 보기

X 중복이 원인이다. 정규화로 중복을 없애면 이상 현상이 줄어든다.

함께 보면 좋은 개념