이 장에서는 액세스 테이블에서 연관된 필드를 중심으로 여러 개의 테이블을 연결하는 방법에 대해서 살펴본다.
- 관계 설정 - 관계 편집
1. 관계설정
액세스와 같은 관계형 데이터베이스에서는 여러 개의 테이블이 있는 데이터들을 연관시켜 작업을 한다. 하나의 거대한 테이블 보다는 연관된 필드를 중심으로 한 여러 개의 테이블이 좀 더 효과적으로 작동하기 때문이다. 이를 위해 기본 키를 설정하게 되는 데 그 다음 단계가 바로 테이블간의 관계 설정이다. 관계란 여러 테이블의 데이터를 연결시키는 방법인데 이런 연결이 효과적일수록 전체 데이터베이스가 효과적이고 탄력적으로 기능을 수행하게 될 것이다.
① 관계를 설정하기 위해서 [데이터베이스] 도구에서 [관계: ] 아이콘을 선택한다.
※ 그림을 클릭하면 확대해서 보실 수 있습니다.
<참고하기> 데이터베이스에 아무런 관계도 정의 되지 않았다면 [테이블표시] 창이 자동으로 관계 창과 함께 나타난다.
② [도서대여] 와 [회원관리] 테이블을 추가하고 [닫기]를 선택한다.
③ 관계를 지으려는 테이블 필드를 마우스로 끌어서 다른 테이블에 있는 관련 필드에 놓는다.
④ [관계] 대화상자가 표시된다. 두 열에 표시되는 필드 이름이 정확한지 확인하고 [만들기]를 선택한다.
⑤ 해당 테이블 간에 관계가 설정되었다. 두 테이블 간의 기본 키와 외부 키 사이에 선으로 연결되었다.
<참고하기> - 기본 키 : 테이블 내에 레코드를 구별해 주는 역할을 한다. 즉 한 레코드가 고유함을 증명한다. 따라서 중복되어 입력될 수 없다. - 외부 키 : 자신이 참조하고 있는 필드가 다른 테이블 내에 기본 키임을 증명한다.
⑥ 관계 창을 닫으면 변경 사항 여부를 물어 온다. [예]를 선택한다.
<참고하기> [F11]키를 누르면 다른 어떤 창에서도 데이터베이스 창으로 전환할 수 있다.
2. 관계 편집
① 설정된 관계를 편집하기 위해서 [데이터베이스] 도구에서 아이콘을 선택하고 관계 선에서 마우스 오른쪽 단추를 눌러 [관계편집] 메뉴를 선택한다.
② [조인형식] 단추를 누른다.
③ 관계가 설정된 두 테이블간에 데이터를 어떻게 표시할지를 선택할 수 있다.
<참고하기> ● 액세스에서 만들어지는 관계의 종류는 관련된 필드가 정의되는 방법에 따라 달라진다. - 일대다 관계는 관련된 필드 중 한 개만 기본 키이거나 고유 인덱스가 있는 경우에 만들어진다. - 일대일 관계는 관련된 필드 모두 기본 키이거나 고유 인덱스가 있는 경우에 만들어진다. - 다대다 관계는 실제로 두 테이블의 외래 키가 기본 키로 구성된 제3 테이블에 대한 두 개의 일대다 관계로 만들어진다. 즉 다대다 관계에서는 두 테이블을 직접 연결할 수 없고 제3의 테이블을 이용하여 관계를 설정 할 수 있다.
④ 관계를 삭제하려면 삭제할 관계 선에서 마우스 오른쪽 단추를 눌러 [삭제]를 선택한다.
⑤ 관계 창에서 테이블 제거하려면 삭제할 테이블을 누른 다음 [Delete]키를 누른다.
<참고하기> 관계 창에서 테이블을 삭제하면 관계 창에서 테이블과 그 관계가 제거된다. 이렇게 하면 관계 창의 표시에만 영향을 미치고 테이블과 관계는 데이터베이스에 그대로 남는다.
● 참조 무결성 강화 참조 무결성이란 관련된 테이블 레코드 간의 관계를 유효하게 하고, 사용자가 실수로 관련 데이터를 삭제하거나 변경하지 않도록 하기 위해서 액세스가 사용하는 규칙이다.
① 다음 조건을 모두 만족할 때 참조 무결성을 설정할 수 있다.
- 기본 테이블에서 일치하는 필드가 기본 키이거나 고유 인덱스를 갖는다. - 관련 필드의 데이터 형식이 같아야 한다. 단 예외적으로 일련 번호 필드는 필드크기 속성을 정수(Long)로 설정해서 숫자 필드에 연결될 수 있으며, 일련 번호 필드의 필드크기 속성을 복제 ID로 설정해서 필드크기 속성을 복제 ID로 설정한 숫자 필드에 연결될 수 있다. - 두 테이블 모두 같은 액세스 데이터베이스에 속해야 한다. 테이블이 연결 테이블이면 액세스 형식 테이블이고 저장되어 있는 데이터베이스를 열어야 참조 무결성을 설정할 수 있다. 형식이 다른 데이터베이스에 있는 연결 테이블에 대해서는 참조 무결성을 강화할 수 없다.
② 참조 무결성이 강화되면 다음 규칙을 따라야 한다.
- 기본 테이블의 기본 키에 존재하지 않는 관련 테이블의 외부 키 필드에는 값을 입력할 수 없다. 그러나 외부 키에 Null 값을 입력하여 레코드가 관련되지 않음을 나타낼 수 있다. 예를 들어, 존재하지 않는 고객의 주문 내용은 있을 수 없지만 고객일련번호 필드에 Null 값을 입력하여 주문한 사람이 없음을 나타낼 수 있다. - 관련된 테이블에 일치하는 레코드가 존재할 때는 기본 테이블에서 레코드를 삭제할 수 없다. 예를 들어 A 테이블에 할당된 주문 내용이 있으면 B테이블에서 해당하는 레코드를 삭제할 수 없다. - 레코드에 관련된 레코드가 있으면 기본 테이블에서 기본 키를 바꿀 수 없다. 예를 들어 A테이블에 있는 할당된 주문이 있으면 B 테이블에서 해당하는 필드를 바꿀 수 없다.
③ 참조 무결성 설정방법 관계에 대한 규칙을 강화하려면 관계를 만들 때 항상 참조 무결성 유지 확인란을 선택한다. 참조 무결성을 강화한 후에는 관련 테이블에서 이 규칙이 위반될 때 메시지가 표시되고 내용을 변경할 수 없게 된다.
- 관계를 설정하기 위해서 [데이터베이스] 도구에서 [관계: ]아이콘을 선택한다. - 설정된 관계 선에서 마우스 오른쪽 단추를 눌러 [관계편집] 메뉴를 선택한다.
- 관계에 대한 규칙을 강화하려면 관계를 만들 때 [참조 무결성 강화] 확인란을 선택하고 [확인]을 선택한다.
- 참조 무결성이 강화되면 기존의 단순 관계 지정 때와는 달리 관계선의 양끝이 굵게 표시되며 관계의 종류가 나타난다. 일대일 관계는 양끝에 1이 표시 되며 일대다 관계는 1이 다쪽에는 ∞가 표시된다.
- 참조 무결성을 강화한 다음 관련된 테이블에서 이 규칙을 위배하면 메시지가 표시되고 변경할 수 없게 된다.
④ 관련필드 모두 새로 고침과 관련 레코드 모두 삭제 옵션
관련 필드 모두 업 데이트와 관련 레코드 모두 삭제 확인란을 선택하면 관련 레코드 삭제나 변경에 대한 조건을 무시하고 참조 무결성을 유지할 수 있다. 관련 필드 모두 업 데이트 확인란을 선택했을 때 기본 테이블의 기본 키 값을 변경하면 자동으로 관련 레코드에 있는 대응 값이 모두 고쳐진다. 관련 레코드 모두 삭제 확인란을 선택했을 때 기본 테이블의 레코드를 삭제하면 관련 테이블의 관련 레코드가 삭제된다.