QA를 통해 본 효율적인 테이블 구성 예제 #3
정규화된 테이블을 가지고 근무기간 구해보기
기존 테이블을 좀 더 정규화를 한다면 좋겠습니다.
첨부파일에는 정규화된 테이블이 다음과 같이 구성되어 있습니다.
4개의 테이블로 구성됩니다.
개인자료 테이블: tbl인사정보, tbl인적사항
조회용 테이블: tblLK발령, tblL부서
인적사항 테이블에서 부서나 발령에 관련된 값을 일률적으로 입력할 때 쓰임.
인적사항 테이블의 두 필드에서 조회 탭의 내용을 확인하십시오.
< 정규화 하기 >
1) 정보를 주제별로 모아 주제별로 테이블을 만듭니다.
일단 정보가 적지만은 주제별로 구분한다면 인적사항과 인사정보로 나눌 수 있을 겁니다.
[인적사항 테이블]
일련번호 |
사번 |
주민등록번호 |
성명 |
기타 등등 |
1 |
94-1 |
993456-1234567 |
홍길동 |
|
2 |
94-2 |
321212-2234543 |
홍도야 |
|
3 |
94-3 |
3 21108-1234555 |
제갈공명 |
|
[인사정보 테이블]
일련번호 |
사번 |
발령일 |
부서 |
발령사항 |
1 |
94-1 |
94-08-08 |
사무원 |
임직 |
2 |
94-1 |
95-01-30 |
사무원 |
퇴직 |
3 |
94-1 |
96-08-05 |
경리 |
임직 |
4 |
94-1 |
97-09-30 |
경리 |
퇴직 |
2) 만들어진 두 테이블에서 기본 키를 찾아 봅시다.
개인당 하나의 사번을 운영하기로 한다면 인적사항 테이블에서는 사번이 기본 키가 됩니다.
인사정보에서는 하나의 필드만으로는 레코드를 구별할 수 없군요.
그러나 사번과 발령일 두 필드를 알면 그 레코드가 고유하다는 것을 알 수 있습니다.
따라서 사번과 발령일 두 필드를 대상으로 다중필드 기본 키를 만들도록 합니다.
일련번호 기본키는 사용하지 않아도 되므로 삭제합니다.
사번 |
주민등록
번호 |
성명 |
기타 등등.. |
94-1 |
993456-1234567 |
홍길동 |
|
94-2 |
321212-2234543 |
홍도야 |
|
94-3 |
321108-1234555 |
제갈공명 |
|
사번 |
발령일 |
부서 |
발령사항 |
94-1 |
94-08-08 |
사무원 |
임직 |
94-1 |
95-01-30 |
사무원 |
퇴직 |
94-1 |
96-08-05 |
경리 |
임직 |
94-1 |
97-09-30 |
경리 |
퇴직 |
3) 부서 필드에서 사무원, 경리가 발령사항 필드에서 임직과 퇴직이 반복되고 있습니다.
따라서 필요에 따라 이 부분은 참조테이블로 따로 만들 필요성이 있겠습니다.
< 부서 조회 테이블>
ID |
설명 |
1 |
사무원 |
2 |
경리 |
3 |
비서 |
4 |
일반 |
5 |
기타 |
<발령사항 조회 테이블>
ID |
설명 |
1 |
퇴직 |
2 |
이동 |
3 |
임직 |
4 |
휴직 |
조회 테이블은 반복되는 자료를 입력할 때 매우 유용합니다. 대개 콤보박스와 연결해서 사용합니다.
조회테이블에서 값을 조회할 때 실제 값(설명 필드)을 사용하기도 하고 코드 값(ID 필드)을 사용하기도 합니다.
인적사항_NF 테이블을 디자인 보기로 열고 부서필드와 발령 필드의 조회 탭을 클릭하여 설정된 속성을 확인 하십시오.
다음은 이 테이블을 이용하여 작업을 완수한 내용입니다.
어떻습니까? 잘 만들어진 테이블은 작업을 훨씬 쉽게 해준다는 것을 아시겠지요.
|