테이블 관계 설정
여러 테이블에 저장된 정보들을 연결하여 가져올 수 있도록 하기 위해 테이블 간의 관계를 설정
- 관계 설정시 쿼리, 폼, 보고서에서 여러 테이블 정보를 편리하게 사용 가능
- 기본 테이블의 기본키 필드, 관련 테이블의 외래키 필드를 서로 대응시켜 관계를 설정
→ 기본키 필드와 외래키 필드의 데이터 형식은 같아야 함
- 열려 있는 테이블에는 관계 설정 불가
* 관계 설정에 관여한 테이블이 열려 있을 경우
참조 무결성
- 기본키 필드 값과 외래키 필드 값이 동일하도록 유지해 주는 제약 조건
- 사용자가 실수로 관련 데이터를 삭제하거나 변경하는 것을 방지
- 참조 무결성 설정 조건
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
# 주의사항!
* 관계 설정에 관여한 테이블이 열려 있을 경우
- 관계 설정에 관여한 테이블이 열려 있을 경우, 관계 설정 불가!
댓글 영역