데이터베이스 기초

관계형 데이터베이스의 표를 정규화하는 주된 목적은?

  1. A표의 수를 줄여서 어떤 검색이든 조인 없이 빠르게 할 수 있게 하는 것
  2. B데이터를 암호화하여 허가받지 않은 이용자가 읽지 못하게 하는 것
  3. C데이터의 중복을 없애고, 갱신했을 때 내용이 서로 어긋나는 등의 이상을 막는 것
정답과 해설 보기

정답: C. 데이터의 중복을 없애고, 갱신했을 때 내용이 서로 어긋나는 등의 이상을 막는 것

정규화는 열 사이의 함수 종속(어떤 열의 값이 정해지면 다른 열의 값이 하나로 정해지는 관계)에 근거하여 표를 분할하고, 같은 사실이 여러 곳에 기록되지 않게 하는 설계 절차입니다. 예를 들어 사원 표의 각 행에 부서명까지 적어 두면, 부서명을 바꿀 때 그 부서 사원의 행을 모두 고쳐 써야 하며, 고쳐 쓰다가 빠뜨리면 내용이 서로 어긋납니다(갱신 이상). 그 밖에도 사원이 아직 없는 부서를 등록할 수 없다(삽입 이상), 마지막 한 명의 사원을 삭제하면 부서 정보까지 사라진다(삭제 이상) 같은 문제가 생깁니다. 부서 정보를 부서 표로 나누어 두면 부서명은 한 곳만 고치면 됩니다. 한편 표가 나뉘는 만큼 검색할 때 조인이 늘어나므로, 정규화하면 검색이 빨라진다고는 할 수 없습니다.

이 분야 연습하기 분야로 돌아가기

데이터베이스 기초의 다른 문제

  1. 수주 표(수주번호, 상품번호, 수량, 고객번호, 고객명)의 기본 키는 {수주번호, 상품번호}이고, 함수 종속은 {수주번호, 상품번호} → 수량, 수주번호 → 고객번호, 고객번호 → 고객명이다. 이 표를 제3정규형까지 정규화한 결과로 올바른 것은?
  2. 사원 표(사원번호, 이름, 부서코드, 부서명)의 기본 키는 사원번호이며, 모든 열은 하나의 값만 가진다. 함수 종속은 사원번호 → 이름, 사원번호 → 부서코드, 부서코드 → 부서명이다. 이 표의 정규형으로 올바른 것은?
  3. 읽기가 대부분을 차지하는 집계용 데이터베이스에서 정규화한 표를 일부러 하나로 합쳐 같은 데이터를 중복해서 갖게 하는 설계(반정규화)를 하는 경우가 있다. 이 설계의 장점과 단점의 조합으로 올바른 것은?
  4. E-R 다이어그램에서 학생과 과목 사이에 '한 학생은 여러 과목을 수강하고, 한 과목은 여러 학생이 수강한다'는 다대다 관계가 있다. 이 관계를 관계형 데이터베이스의 표로 구현하는 방법으로 적절한 것은?
  5. 계좌 표에서 트랜잭션을 시작하고, 계좌 A의 잔액에서 300을 빼는 UPDATE와 계좌 B의 잔액에 300을 더하는 UPDATE를 실행했다. 그 후 COMMIT 대신 ROLLBACK을 실행했다. 계좌 표는 어떻게 되는가?