상세 컨텐츠

본문 제목

[개미의 걸음 3과목 데이터베이스 일반] DB구축③ 테이블 관계 설정

자격증/컴활 1급

by IT개미 데이터 2020. 12. 8. 23:23

본문

728x90

테이블 관계 설정

여러 테이블에 저장된 정보들을 연결하여 가져올 수 있도록 하기 위해 테이블 간의 관계를 설정

  • 관계 설정시 쿼리, 폼, 보고서에서 여러 테이블 정보를 편리하게 사용 가능
  • 기본 테이블의 기본키 필드, 관련 테이블의 외래키 필드를 서로 대응시켜 관계를 설정
        → 기본키 필드와 외래키 필드의 데이터 형식은 같아야 함
  • 열려 있는 테이블에는 관계 설정 불가

* 관계 설정에 관여한 테이블이 열려 있을 경우 

 

참조 무결성

  • 기본키 필드 값과 외래키 필드 값이 동일하도록 유지해 주는 제약 조건
  • 사용자가 실수로 관련 데이터를 삭제하거나 변경하는 것을 방지
  • 참조 무결성 설정 조건
        1. 기본 테이블에서 사용할 필드는 기본키이거나 고유 인덱스가 있어야 한다.
        2. 관계 설정에 사용되는 두 테이블의 필드의 데이터 형식이 같아야 한다.
        3. 기본 테이블과 관련 테이블 모두 Access데이터베이스의 테이블이어야 한다.

참조 무결성의 강화 규칙

* 기본 테이블의 기본키 필드에 존재하지 않는 데이터는 관계가 설정된 테이블의 외래키 필드 값으로 입력 불가
* 기본 테이블과 관계가 설정된 테이블에 일치하는 레코드가 존재할 때는 기본 테이블에서 레코드를 삭제 및 변경 불가
* 기본 테이블의 기본키 필드 값이 바뀌면 자동으로 관계가 설정된 테이블의 관련 필드의 값이 모두 수정되도록 설정 가능
* 기본 테이블에서 레코드 삭제시 자동으로 관계가 설정된 테이블의 관련 레코드 모두 삭제 가능

 

 

 

예제 문제

출처 : 대한상공회의소 홈페이지

 

 

1. "관계" 데이터베이스 도구 실행 

 

  • '데이터베이스 도구 → 관계' 클릭

 

2. 통행목록, 지역정보 테이블 불러오기

  • '디자인 → 테이블 표시' 클릭
  • 통행목록, 지역정보 테이블 추가

 

3. 참조하기

  • 참조하는 <지역정보>테이블의 '지역코드'필드를 클릭한 후 참조할 <통행목록>테이블의 '입구ID'필드로 드래그
  • 참조하는 테이블에 고유 인덱스를 설정하지 않으면 연결되지 않으므로 기본키 설정이 필요한 경우 먼저 진행
  • 데이터 형식이 같아야하므로 다른 경우 일치시켜준다!
        → [일련번호]형식은 자동으로 번호가 매겨지는 것으로 숫자형 데이터!!

 

4. 참조 조건 설정

  • 두 테이블 간의 항상 참조 무결성 유지를 위해 '항상 참조 무결성 유지' 클릭
        → 기본 테이블에 존재하지 않는 과목코드를 연결 테이블에 생성할 수 없음
  • 참조 필드의 값이 변경되면 관련 필드의 값도 변경되도록 하기 위해 '관련 필드 모두 업데이트' 클릭
        → 기본 테이블의 기본키 값이 바뀔 때마다 연결된 테이블의 해당 필드 값이 자동으로 변경됨
  • 다른 테이블에서 참조하고 있는 레코드를 삭제할 수 없도록 하기 위해 '관련 레코드 모두 삭제' 클릭 안함
        → 기본 테이블에서 레코드를 삭제해도 연결된 테이블의 관련 레코드들이 삭제되지 않음

 

 

※ 발생 오류1. 참조 무결성 강화 설정 오류

항상 참조 무결정 유지 클릭시 발생할 수 있는 오류

     오류 해결 방법 : 삭제 쿼리 작성

  • [만들기 → 쿼리]의 쿼리 디자인 클릭
  • [디자인 → 쿼리 유형]에서 삭제 쿼리 선택
  • 조건 입력
        → NOT IN (SELECT 참조 필드 FROM 참조 테이블)

 발생 오류2. 관계 설정 오류

    오류 해결 방법 : 기본키 설정

 

 발생 오류2. 기본키 설정 오류

    오류 해결 방법 : 업데이트 쿼리

 

※ 공백이 들어간 모든 자료들을 검색하는 "널값검색 쿼리 제작"

  • [만들기 → 쿼리]의 쿼리 디자인 클릭
  • 모든 필드명 클릭해서 쿼리에 추가
  • 필드명마다 조건에 IS NULL 입력
        → 단, OR조건이므로 필드의 조건은 전부 다른 줄에 입력
                       필드명1     필드명2     필드명3
              조건    IS NULL
              또는                   IS NULL
                                                      IS NULL            

 

# 주의사항!

* 관계 설정에 관여한 테이블이 열려 있을 경우 

  • 관계 설정에 관여한 테이블이 열려 있을 경우, 관계 설정 불가!
728x90

관련글 더보기

댓글 영역