테이블 관계 설명
적용 대상
Microsoft 365용 Access Access 2024 Access 2021 Access 2019 Access 2016

데이터베이스를 제대로 디자인하려면 중복되는 데이터가 있어서는 안 됩니다. 이를 위해 데이터를 여러 개의 주제 기반 테이블로 구분하여 각 데이터가 한 번씩만 나타나도록 할 수 있습니다. 그런 다음, Access 분할된 정보를 다시 결합할 수 있는 방법을 제공합니다. 관련된 테이블에 공통 필드를 배치하여 이 작업을 수행합니다. 그러나 이 단계를 올바르게 실행하려면 테이블 간의 관계를 이해하고 데이터베이스에서 이러한 관계를 지정해야 합니다.

이 문서의 내용

소개

데이터베이스의 각 주체에 대한 테이블을 만든 후에는 필요할 때 해당 정보를 다시 모을 수 있는 방법을 Access 제공해야 합니다. 이를 위해 서로 관련된 테이블에 공통 필드를 배치하고 테이블 사이의 관계를 정의합니다. 이렇게 하면 여러 테이블의 정보를 함께 표시하는 쿼리, 폼 및 보고서를 만들 수 있습니다. 예를 들어 다음 폼에는 여러 테이블에서 가져온 정보가 포함되어 있습니다.

5개 테이블의 관련 정보가 동시에 표시되는 주문 폼

1. 이 폼의 정보를 가져오는 위치는 고객 테이블...

2. ...주문 테이블...

3. ...제품 테이블...

4. ...및 제품 정보 테이블입니다.

청구지 상자의 고객 이름은 고객 테이블에서, 주문 번호 및 수주일 값은 주문 테이블에서, 제품 이름은 제품 테이블에서, 그리고 단가 및 수량 값은 주문 정보 테이블에서 각각 검색됩니다. 이러한 테이블은 다양한 방식으로 서로 연결되어 있으며 각 테이블의 정보를 폼으로 가져옵니다.

위 예제에서는 동일한 주문에 대한 정보가 표시되도록 테이블의 필드를 조정해야 합니다. 이 조정 작업은 테이블 관계를 사용하여 실행합니다. 테이블 관계는 키 필드의 데이터를 연결하여 설정하는데, 이러한 필드는 보통 양쪽 테이블에 모두 있는 이름이 같은 필드가 됩니다. 대부분의 경우 이러한 일치 필드는 한 테이블에서는 각 레코드에 대해 고유 식별자를 제공하는 기본 키가 되고 다른 테이블에서는 외래 키가 됩니다. 예를 들어 직원 테이블 및 주문 테이블의 직원 번호 필드 간에 테이블 관계를 만들어 각 직원과 해당 직원이 담당하는 주문을 연결할 수 있습니다.

직원 테이블의 기본 키 및 주문 테이블의 외래 키로 사용되는 직원 번호

1. 직원 번호는 두 테이블에 각각 기본 키와

2. 외래 키로 나타납니다.

맨 위로 이동

테이블 관계 유형

Access 세 가지 유형의 테이블 관계가 있습니다.

  • 일대다 관계

    Customers 테이블과 Orders 테이블을 포함하는 주문 추적 데이터베이스를 예로 들어 보겠습니다. 고객은 원하는 수만큼 주문을 할 수 있습니다. 즉, 고객 테이블에 표시되는 특정 고객에 대해 주문 테이블에는 여러 개의 주문이 표시될 수 있습니다. 고객 테이블과 주문 테이블 간의 관계는 일대다 관계입니다.

    데이터베이스 설계에 일대다 관계를 나타내려면 관계의 "일" 쪽의 기본 키를 추가 필드로 추가하거나 관계의 "다" 쪽에 있는 테이블에 필드로 추가합니다. 예를 들어, 이 경우에 새로운 필드인 고객 테이블의 ID 필드를 주문 테이블에 추가하고 고객 ID라고 지정합니다. 그런 다음Access Orders 테이블의 고객 ID 번호를 사용하여 각 주문에 대해 올바른 고객을 찾을 수 있습니다.

  • 다대다 관계

    이제 Products 테이블과 Orders 테이블 간의 관계를 살펴보겠습니다. 단일 주문은 두 개 이상의 제품을 포함할 수 있습니다. 반면, 단일 제품은 여러 주문에 나타날 수 있습니다. 따라서 주문 테이블의 각 레코드에 대해 제품 테이블에는 많은 레코드가 존재할 수 있습니다. 추가로 제품 테이블의 각 레코드에 대해 주문 테이블에는 많은 레코드가 존재할 수 있습니다. 이 관계를 다대다 관계라고 합니다. 테이블 간의 기존의 다대다 관계를 검색하려면 관계의 양쪽 모두를 고려하는 중요함을 참고합니다.

    다대다 관계를 표시하려면 보통 접합 테이블이라고 하는 별도의 세 번째 테이블을 만들어 다대다 관계를 두 개의 일대다 관계로 분할해야 합니다. 그런 다음 다대다 관계를 형성하는 두 테이블의 기본 키를 이 세 번째 테이블에 삽입합니다. 그러면 세 번째 테이블에 관계의 각 발생(인스턴스)이 기록됩니다. 예를 들어 주문 테이블과 제품 테이블 간에는 제품 정보 테이블에 대해 두 개의 일대다 관계를 만들어 정의할 수 있는 다대다 관계가 있습니다. 즉, 하나의 주문에 많은 제품이 있을 수 있으며 각 제품이 많은 주문에 포함될 수 있습니다.

  • 일대일 관계

    일대일 관계에서 첫 번째 테이블의 각 레코드는 두 번째 테이블의 한 레코드와만 연결되며 두 번째 테이블의 각 레코드도 첫 번째 테이블의 한 레코드와만 연결됩니다. 대부분의 경우 이러한 방식으로 관련된 정보는 같은 테이블에 저장되므로 이 관계는 드뭅니다. 일대일 관계를 사용하여 필드가 여러 개 있는 테이블을 나누거나 보안을 위해 테이블의 일부를 격리하거나 기본 테이블의 하위 집합에만 적용되는 정보를 저장할 수 있습니다. 이러한 관계를 식별할 때 두 테이블은 공통 필드를 공유하고 있어야 합니다.

맨 위로 이동

테이블 관계를 만드는 이유

관계 창을 사용하거나 필드 목록 창의 필드를 끌어서 테이블 관계를 명시적으로 만들 수 있습니다. Access 테이블 관계를 사용하여 데이터베이스 개체에서 테이블을 사용해야 하는 경우 테이블을 조인하는 방법을 결정합니다. 폼, 쿼리 및 보고서와 같은 기타 데이터베이스 개체를 만들려면 먼저 테이블 관계를 만들어야 하는데 그 이유는 다음과 같습니다.

  • 테이블 관계를 통해 쿼리 디자인 결정

    여러 테이블에서 가져온 레코드를 사용하려면 해당 테이블을 조인하는 쿼리를 만들어야 합니다. 쿼리는 첫 번째 테이블의 기본 키 필드 값을 두 번째 테이블의 외래 키 필드 값과 연결하는 방식으로 작동합니다. 예를 들어 각 고객에 대한 모든 주문이 나열되는 행을 반환하려면 고객 ID 필드를 기반으로 고객 테이블과 주문 테이블을 결합하는 쿼리를 작성합니다. 관계 창에서 조인할 필드를 수동으로 지정할 수 있습니다. 그러나 테이블 간에 이미 정의된 관계가 있는 경우 Access 기존 테이블 관계에 따라 기본 조인을 제공합니다. 또한 쿼리 마법사 중 하나를 사용하는 경우 Access 이미 정의한 테이블 관계에서 수집한 정보를 사용하여 정보에 입각한 선택을 제공하고 적절한 기본값으로 속성 설정을 미리 채점합니다.

  • 테이블 관계를 통해 폼 및 보고서 디자인 결정

    폼이나 보고서를 디자인할 때 Access 이미 정의한 테이블 관계에서 수집한 정보를 사용하여 정보에 입각한 선택 사항을 제시하고 적절한 기본값으로 속성 설정을 미리 채울 수 있습니다.

  • 테이블 관계는 데이터베이스에 분리된 레코드를 방지하기 위해 참조 무결성을 적용할 수 있는 기반이 됩니다. 분리된 레코드는 존재하지 않는 다른 레코드를 참조하는 레코드로서 존재하지 않는 고객을 참조하는 주문 레코드가 그 예시입니다.

    데이터베이스를 디자인할 때는 정보를 각각 기본 키를 포함하는 여러 테이블로 구분합니다. 그런 다음 해당 기본 키를 참조하는 관련된 테이블에 외래 키를 추가합니다. 이러한 외래 키 및 기본 키 쌍이 테이블 관계 및 다중 테이블 쿼리의 기본이 됩니다. 이러한 외래 키-기본 키 참조는 동기화 상태를 유지하는 것이 중요합니다. 테이블 관계에 종속된 참조 무결성을 유지하면 참조가 지속적으로 동기화됩니다.

맨 위로 이동

참조 무결성 이해

데이터베이스를 디자인할 때는 데이터 중복을 최소화하기 위해 데이터베이스 정보를 주제에 따라 여러 테이블로 분할합니다. 그런 다음 Access 공통 필드를 관련 테이블에 배치하여 데이터를 다시 결합할 수 있는 방법을 제공합니다. 예를 들어 일대다 관계를 나타내려면 "일"에 해당하는 테이블의 기본 키를 "다"에 해당하는 테이블에 필드로 추가합니다. 데이터를 다시 가져오려면 Access "다" 테이블의 값을 가져와서 "one" 테이블에서 해당 값을 조회합니다. 이러한 방법으로 "다" 테이블의 값이 "일" 테이블의 해당 값을 참조하게 됩니다.

운송업체와 주문이 일대다 관계로 연결된 상태에서 특정 운송업체를 삭제하려는 경우를 가정해 봅시다. 이때 삭제하려는 운송업체의 주문이 주문 테이블에 포함되어 있는 경우 운송업체 레코드를 삭제하면 이 주문이 "분리"됩니다. 즉, 해당 주문에 운송업체 ID는 계속 포함되어 있지만 주문이 참조하는 레코드가 더 이상 존재하지 않으므로 해당 ID는 더 이상 유효하지 않은 상태가 됩니다.

참조 무결성은 정보의 분리를 방지하고 참조를 동기화 상태로 유지하여 위와 같은 상황이 발생하지 않도록 하기 위한 것입니다.

참조 무결성을 적용하려면 테이블 관계에서 활성화해야 합니다. 적용되면 Access 해당 테이블 관계에 대한 참조 무결성을 위반하는 모든 작업을 거부합니다. 즉, Access 참조의 대상을 변경하는 업데이트와 참조 대상을 제거하는 삭제를 모두 거부합니다. Orders 테이블에 주문이 있는 운송업체의 기본 키를 변경해야 할 수 있습니다. 이러한 경우 실제로 필요한 것은 Access 영향을 받은 모든 행을 단일 작업의 일부로 자동으로 업데이트하는 것입니다. 이렇게 하면 Access 데이터베이스가 일관되지 않은 상태로 유지되지 않고 일부 행이 업데이트되고 일부는 업데이트되지 않도록 업데이트가 완전히 완료되도록 합니다. 이러한 이유로 Access연계 업데이트 관련 필드 옵션을 지원합니다. 참조 무결성을 적용하고 관련 필드 계단식 업데이트 옵션을 선택한 다음 기본 키를 업데이트하면 Access 기본 키를 참조하는 모든 필드를 자동으로 업데이트합니다.

행과 모든 관련 레코드를 삭제할 타당한 필요성이 있을 수도 있으며 운송 업체의 레코드와 해당 운송 업체의 모든 관련 주문이 그 예시입니다. 이러한 이유로 Access관련 레코드 삭제 연계 옵션을 지원합니다. 참조 무결성을 적용하고 관련 레코드 삭제 연계 옵션을 선택한 다음 관계의 기본 키 쪽에서 레코드를 삭제하면 Access 기본 키를 참조하는 모든 레코드를 자동으로 삭제합니다.

맨 위로 이동

테이블 관계 보기

테이블 관계를 보려면 데이터베이스 도구 탭에서 관계를 클릭합니다. 그러면 관계 창이 열리고 기존 관계가 표시됩니다. 테이블 관계가 정의되지 않았고 처음으로 관계 창을 여는 경우 Access 창에 테이블 또는 쿼리를 추가하라는 메시지를 표시합니다.

관계 창 열기

  1. 파일을 클릭하고 열기를 클릭한 다음 데이터베이스를 선택하고 엽니다.

  2. 데이터베이스 도구 탭의 관계 그룹에서 관계를 클릭합니다.

  3. 관계 디자인 탭의 관계 그룹에서 모든 관계를 클릭합니다.이렇게 하면 데이터베이스의 정의된 모든 관계가 표시됩니다. 탐색 옵션 대화 상자에서 숨겨진 개체 표시 옵션이 선택되어 있지 않으면 숨겨진 테이블, 즉 테이블의 속성 대화 상자에서 숨김 확인란이 선택되어 있는 테이블과 해당 관계는 표시되지 않습니다.

테이블 관계는 관계 창에서 테이블 간에 그려진 관계선으로 나타납니다. 참조 무결성을 유지하지 않는 관계는 해당 관계를 지원하는 공통 필드 간의 가는 선으로 표시됩니다. 관계선을 클릭하여 관계를 선택하면 선이 굵어져 선택되었음을 나타냅니다. 해당 관계에 대해 참조 무결성을 유지하는 경우에는 선의 양 끝이 더 굵게 표시됩니다. 또한 관계선 한쪽 끝의 굵은 부분에는 숫자 1이 표시되고 나머지 끝의 굵은 부분에는 무한대 기호()가 표시됩니다.

관계 창이 활성 상태일 때 리본 메뉴에서 다음 명령 중 원하는 명령을 선택할 수 있습니다.

관계 디자인 탭의 도구 그룹에서 다음을 수행합니다.

  • 관계 편집 이 명령을 선택하면 관계 편집 대화 상자가 열립니다. 관계선을 선택하면 관계 편집을 클릭하여 테이블 관계를 변경할 수 있습니다. 관계선을 두 번 클릭할 수도 있습니다.

  • 레이아웃 지우기 관계 창에 표시된 모든 테이블 및 관계가 사라집니다. 이 명령을 사용하면 테이블 및 관계가 숨겨질 뿐 삭제되지는 않습니다.

  • 관계 보고서 데이터베이스의 테이블 및 관계를 표시하는 보고서가 만들어집니다. 이 보고서에는 관계 창에서 숨겨지지 않은 테이블 및 관계만 표시됩니다.

관계 디자인 탭의 관계 그룹에서 다음을 수행합니다.

  • 테이블 추가    관계 창에 표시할 테이블을 선택할 수 있습니다.

  • 테이블 숨기기 관계 창에서 선택한 테이블을 숨깁니다.

  • 직접 관계 이미 표시되어 있지 않은 경우 선택한 테이블의 모든 관계 및 관련 테이블을 관계 창에 표시합니다.

  • 모든 관계 데이터베이스의 모든 관계 및 관련 테이블을 관계 창에 표시합니다. 탐색 옵션 대화 상자에서 숨겨진 개체 표시 옵션이 선택되어 있지 않으면 숨겨진 테이블, 즉 테이블의 속성 대화 상자에서 숨김 확인란이 선택되어 있는 테이블과 해당 관계는 표시되지 않습니다.

  • 닫기 관계 창이 닫힙니다. 관계 창 레이아웃을 변경한 경우에는 변경 내용을 저장할 것인지 묻는 메시지가 표시됩니다.

맨 위로 이동

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.