배움터  
  HOME > 배움터 > 무료강좌
무료강좌
 
액세스 2000, 김규경님의 데이터베이스 기초 다지기 - QA를 통해 본 효율적인 테이블 구성 예제 #1, Access 2000
 


QA를 통해 본 효율적인 테이블 구성 예제 #1

자료다운로드 : 근무기간 구하기.mdb,  
자료다운로드 : 근무기간 구하기97.mdb

데이터베이스 기초 강좌를 조만간 시작할 계획입니다. 다음 질문에 대한 답변 내용이 초보자들에게 도움이 되리라 생각되어 먼저 테이블의 구성의 효율성에 대해 예제를 통하여 공부하고자 합니다.

다음 사항이 준비되었나요?
   1) 테이블 만들기
   2) 질의 만들기
   3) 질의에서 계산필드 만들기
   4) 모듈 사용하기
   5) 조건문 만들기
   6) DateDiff() 함수에 대하여 도움말 찾아보기
   7) 연산자-정수연산자(\), 나머지 값 연산자(Mod) 도움말 찾아보기

근무기간 구하기

> 안녕하세요...
> 직원인사관리를 위해 프로그램을 만들던 중.... 
> 근무기간을 자동으로 나타낼 수 있는 방법을 알고자 질문을 띄웁니다.
> 단순히 입사한 후 한 번 퇴직한 사람은 근무기간을 구하는 건 어렵지 않은데요...
> 한 사람이 여러 번 입사와 퇴사를 하는 경우는 어떻게 해야 할 지 난감합니다.
> 예를 들자면...
> ========================================
> 성명 발령일 발령사항
> ========================================
> 홍길동 94-08-08 사무원 임직
> 홍길동 95-01-30 사무원 퇴직
> 홍길동 96-08-05 경리 임직
> 홍길동 97-09-30 경리 퇴직
> ========================================
> 위와 같은 경우는 94.8.8 - 95.1.30일 까지의 근무기간과 
> 96.8.5 - 97.9.30일 까지의 근무기간을 합산해야 하는데요.... 
> 어떻게 해야 하나요? 

질문을 이해하셨을 겁니다. 이제 하나씩 첨부된 파일로 원하는 작업을 할 수 있는가 확인해 나가도록 하겠습니다.

1) 기본적인 테이블은 구조를 확인합니다.
    기본키는 있나요?  
       없습니다.
    필드는 최소한의 정보만 가지고 있나요? 
      발령사항 필드에 부서정보와 발령구분정보가 같이 들어 있습니다.
    테이블을 주제에 해당되는 자료로 구성되어 있나요? 
      문제가 없을 듯 하지만 이름이 반복되고 있어 이것을 몇몇 관련정보를 추가하여 인적 사항이라는 
           테이블로 분리하는 것이 좋겠습니다.
    반복되는 자료는 무엇인가요? 
      이름 외에도 부서나 발령구분의 값이 반복되고 있습니다.

2) 내가 원하는 목적이 가능하도록 구조가 되어 있는가 확인합니다.
    근무기간 산정을 위해서는 해당 직원을 찾아야 하는데 그런 정보가 없습니다. 
    이름으로는 동명이인이 있으므로 다른 사람의 자료가 계산에 포함될 수 있습니다.
    따라서 그 직원을 고유하게 인식할 정보가 필요합니다.

이러한 내용을 기초로 다음을 고려합니다.

1) 테이블의 구성에 문제가 있지만 '하나의 필드에는 최소한의 자료만 들어가도록 구성해야 한다'는 <제1정규화>의 개념만 적용을 해서 사용하도록 하겠습니다.

발령사항에 사무원임직, 경리임직 등 부서 정보와 발령 정보가 같이 들어 있으므로 먼저 두 개의 필드로 나눕니다.  그리고 아래와 같이 2가지 경우를 생각해봅니다.  하나의 테이블만 운영한다는 관점에서 그렇지만 주제별로 정리가 된다면 불필요한 내용입니다. 

먼저, 재입사를 하더라도 이전 근무 때 부여 받은 사번을 계속 사용함으로써 개인당 오직 하나의 사번 만을 부여한다면

사번  성명  발령일  부서  발령사항
94-1 홍길동  94-08-08  사무원  임직
94-1 홍길동  95-01-30 사무원  퇴직
94-1 홍길동  96-08-05 경리  임직
94-1 홍길동  97-09-30 경리  퇴직

두 번째, 사번은 이용하되 재입사를 하더라고 새로운 사번을 부여하고자 한다면 사번으로는 개인을 인식할 수 없습니다.
주민등록번호를 추가하여 해당직원의 과거 기록을 인식할 수 있도록 하겠습니다.

사번  주민등록번호 성명  발령일  부서  발령사항
94-1 123456-1234567 홍길동  94-08-08  사무원  임직
94-1 123456-1234567 홍길동  95-01-30 사무원  퇴직
96-1 123456-1234567 홍길동  96-08-05 경리  임직
96-1 123456-1234567 홍길동  97-09-30 경리  퇴직

 

  목차 | 이전 | 다음