ITmembers.net 아카이브 · 2002–2009

컴퓨터활용능력 1급 실기 스페셜 강좌

[문제1] DB 구축(30점) - 문제와 해설(2)


  1. 판매 관리 업무를 수행하기 위해 데이터베이스를 구축하였다.
    다음의 지시사항에 따라 '판매내역' 테이블을 완성하시오.(20점)
    • 이 테이블의 기본키(PK)는 '판매번호'와 '순번'으로 구성된다. 기본키를 설정하시오.
    • 새로운 레코드가 추가되는 경우 '순번' 필드에는 기본식으로 1이 입력되도록 설정하시오.
    • '수량' 필드에는 값이 반드시 입력되도록 설정하시오.
    • '단가' 필드에는 반드시 0보다 큰 값이 입력되도록 설정하시오.
    • '상품번호' 필드에 대해서 인덱스(중복기능)을 설정하시오.

  2. '판매내역' 테이블의 '상품번호'는 '상품' 테이블의 '상품번호'를 참조하며 두 테이블간의 관계는 M:1이다.
    두 테이블에 대해 다음과 같이 관계를 설정하시오.(5점)
    • 두 테이블간에 항상 참조무결성을 유지하도록 설정하시오.
    • '상품' 테이블의 '상품번호가' 변경되면 이를 참조하는 '판매내역' 테이블의 '상품번호'도 따라 변경되도록 설정하시오.
    • '판매내역' 테이블에서 참조하고 있는 '상품' 테이블의 레코드를 삭제할 수 없도록 하시오.

  3. A:\에 존재하는 거래처.xls 파일에 대한 연결 테이블을 작성하시오.(5점)
    • 거래처.xls 파일의 첫 번째 행은 필드의 이름이다.
    • 연결테이블의 이름은 '거래처'로 할 것.


  1. '판매내역' 테이블의 '상품번호'는 '상품' 테이블의 '상품번호'를 참조하며 두 테이블간의 관계는 M:1이다. 두 테이블에 대해 다음과 같이 관계를 설정하시오.

    이와 같은 문제를 풀려면 테이블 간의 '관계'에 대해 이해를 해야 합니다.

    테이블 간의 관계(Relationship)에 대한 자세한 설명은 아래 강좌를 참조해 주세요~


    액세스에서 관계를 설정하려면 아래와 같이 [도구]-[관계] 메뉴를 사용합니다.



    위의 지시를 보면,
    '판매내역' 테이블의 '상품번호'는 '상품' 테이블의 '상품번호'를 참조하며 두 테이블간의 관계는 M:1이고,
    두 테이블간에 항상 참조무결성을 유지해야 하고,
    '상품' 테이블의 '상품번호가' 변경되면 이를 참조하는 '판매내역' 테이블의 '상품번호'도 따라 변경되어야 하고,
    '판매내역' 테이블에서 참조하고 있는 '상품' 테이블의 레코드를 삭제할 수 없도록 해야 합니다.

    먼저 [도구]-[관계]를 선택해 관계 박스를 나타낸 다음, 판매내역 테이블과 상품 테이블을 관계 박스로 끌어놓으면 아래와 같은 모양이 됩니다.



    위 그림에서 판매내역의 상품번호 필드를 끌어다가 상품 테이블의 상품번호로 끌어다 놓으면 아래와 같은 '관계 편집' 대화 상자가 나타납니다.



    관계 편집 대화 상자에서 '항상 참조 무결성 유지'와 '관련 필드 모두 업데이트'를 차례대로 선택합니다.
    마지막으로 [만들기] 버튼을 누르면,
    아래와 같은 관계가 만들어집니다.



    이렇게 하면 위의 지시 사항을 모두 따르게 된 것입니다.

    '판매내역' 테이블에서 참조하고 있는 '상품' 테이블의 레코드를 삭제할 수 없도록 해야 합니다.라는 지시사항에 해당되는 것은 별도로 조치할 필요가 없습니다.
    '항상 참조 무결성 유지'를 체크하면, 서로 관계가 있는 레코드는 삭제할 수 없도록 자동 설정되기 때문입니다.

    이 문제의 핵심은 참조 무결성에 대한 이해입니다.
    참조 무결성에 대한 자세한 설명은, 관계형 데이터베이스(3)-참조무결성 강좌를 참조하세요~


아마 대한상공회의소에서 이 문제를 낼 때는 위와 같은 방식으로 문제를 해결하라고 한 것 같습니다.
그러나 위와 같이 끝내면 실제 문제에서 충족시키는 요건을 만족하지 못하게 됩니다. (무슨 말이나고요??)

위 문제의 조건 중에,
'상품' 테이블의 '상품번호가' 변경되면 이를 참조하는 '판매내역' 테이블의 '상품번호'도 따라 변경되어야 한다는 게 있습니다.
위의 그림에서처럼 '관련 필드 모두 업데이트'를 체크하면 되어야 하지만, 실제 해보면 안됩니다.
시험장에서 배포한 mdb 파일에서 '상품' 테이블의 '상품번호' 필드 실제 값을 바꾸려해도 변경이 안된다는 것입니다.

이는, 상품번호 필드의 데이터 형식이 '일련번호' 형식으로 되어 있기 때문입니다.
일련번호 형식은 시스템에서 자동으로 값을 부여하기 때문에 사용자가 임의로 바꿀 수 없습니다.
만약 문제에서 제시한 조건을 정말로(?) 만족하게 하려면 오른쪽 그림과 같이 상품 테이블의 상품번호 필드의 데이터 형식을 '숫자'로 바꿔줘야 합니다.(그런데, 이렇게 하면 새로운 '상품' 테이블에서 새로운 상품을 추가할 때마다 '상품번호'를 직접 입력해야겠죠...)

설명이 또 길어졌네요.
[문제1]의 마지막 3번 지시사항 해결은 다음 시간에 하겠습니다.

이상, 새해 첫날, 동주아빠 손병목이었습니다.