Microsoft Access 데이터베이스에서 테이블 간 관계 정의

기술 자료 번역 기술 자료 번역
기술 자료: 304466 - 이 문서가 적용되는 제품 보기.
초급: 단일 사용자 컴퓨터의 사용자 인터페이스에 대한 지식이 필요합니다.

이 문서의 내용은 Microsoft Access 데이터베이스(.mdb 또는 .accdb)에만 적용됩니다.
이 문서의 Microsoft Access 2000 버전에 대한 내용은 304467을 참조하십시오.
이 문서의 Microsoft Access 97 버전에 대한 내용은 304468을 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Microsoft Access 데이터베이스에서 관계를 정의하는 방법을 설명합니다. 설명하는 항목은 다음과 같습니다.
  • 테이블 관계 정보
  • 테이블 관계 종류
    • 일대다 관계
    • 다대다 관계
    • 일대일 관계

  • 테이블 간 관계를 정의하는 방법
    • 일대다 또는 일대일 관계를 정의하는 방법
    • 다대다 관계를 정의하는 방법

  • 참조 무결성
  • 관련 항목 업데이트 및 삭제
  • 조인 유형

추가 정보

테이블 관계 정보

관계형 데이터베이스에서 관계를 사용하면 데이터가 중복되는 것을 방지할 수 있습니다. 예를 들어, 책에 대한 정보를 추적하는 데이터베이스를 디자인하는 경우 책 제목, 출판 날짜 및 출판사 등의 각 책에 대한 정보를 저장하는 Titles라는 테이블을 만들어 두었을 수 있습니다. 또한 출판사의 전화 번호, 주소 및 우편 번호와 같이 출판사에 대해 저장해 두고자 하는 정보도 있을 수 있습니다. Titles 테이블에 이러한 정보를 모두 저장하면 출판사 전화 번호는 출판사가 출판한 각 책의 제목마다 중복되게 됩니다.

따라서 출판사 정보는 별도 테이블인 Publishers에 한 번만 저장하는 것이 좋습니다. 그 다음 Publishers 테이블의 항목을 참조하는 포인터를 Titles 테이블에 두기만 하면 됩니다.

데이터 동기화를 보장하기 위해 Titles 테이블과 Publishers 테이블 간에 참조 무결성을 적용할 수 있습니다. 참조 무결성 관계는 한 테이블의 정보를 다른 테이블의 정보와 일치시키는 데 유용합니다. 예를 들어, Titles 테이블의 각 제목은 Publishers 테이블의 특정 출판사와 연결되어야 합니다. 데이터베이스에 없는 출판사의 데이터베이스에는 제목을 추가할 수 없습니다.

테이블 관계 종류

관계는 일반적으로 두 테이블 모두에서 같은 이름을 갖는 키 열의 데이터를 일치시키는 방식으로 작동합니다. 대부분의 경우 관계는 한 테이블에서 각 행에 대해 고유 식별자를 제공하는 기본 키를 다른 테이블의 외래 키에 있는 항목과 일치시킵니다. 예를 들어, Titles 테이블의 title_id 열(기본 키)과 Sales 테이블의 title_id 열(외래 키) 간에 관계를 만들어 판매된 책의 제목과 판매 수량을 연결할 수 있습니다.

테이블 간의 관계는 세 가지 종류가 있습니다. 만들어지는 관계 종류는 관련 열이 정의된 방식에 따라 달라집니다.

일대다 관계

일대다 관계는 가장 일반적인 관계 종류입니다. 이 관계 종류에서 테이블 A의 한 행은 테이블 B의 여러 행과 일치할 수 있지만 테이블 B의 한 행은 테이블 A의 한 행과만 일치할 수 있습니다. 예를 들어, Publishers 테이블과 Titles 테이블은 일대다 관계입니다. 즉, 각 출판사는 여러 제목의 책을 출판하지만 각 제목의 책은 한 출판사에서만 출판됩니다.

관련 열 중 하나만 기본 키이거나 UNIQUE 제약 조건을 갖고 있는 경우 일대다 관계가 만들어집니다.

일대다 관계의 기본 키 쪽은 키 기호로 표시됩니다. 관계의 외래 키 쪽은 무한대 기호로 표시됩니다.

다대다 관계

다대다 관계에서 테이블 A의 한 행은 테이블 B의 여러 행과 일치할 수 있고, 그 반대의 경우도 마찬가지입니다. 접합 테이블인 세 번째 테이블을 정의하여 이러한 관계를 만들 수 있습니다. 접합 테이블의 기본 키는 테이블 A와 테이블 B 모두의 외래 키로 구성됩니다. 예를 들어, Authors 테이블과 Titles 테이블은 이러한 각 테이블과 TitleAuthors 테이블의 일대다 관계에 의해 정의된 다대다 관계를 갖습니다. TitleAuthors 테이블의 기본 키는 au_id 열(Authors 테이블의 기본 키)과 title_id 열(Titles 테이블의 기본 키)의 조합입니다.

일대일 관계

일대일 관계에서 테이블 A의 한 행은 테이블 B의 한 행과만 일치할 수 있으며 이 반대의 경우도 마찬가지입니다. 관련된 두 열 모두가 기본 키이거나 UNIQUE 제약 조건을 갖고 있는 경우 일대일 관계가 만들어집니다.

이러한 방법으로 관련된 대부분의 정보는 테이블 하나에 모두 들어 있기 때문에 일대일 관계는 그리 흔하지 않습니다. 일대일 관계를 사용하여 아래와 같은 작업을 수행할 수 있습니다.
  • 테이블을 여러 열로 분할
  • 보안상의 이유로 테이블의 일부 분리
  • 일시적이고 테이블을 삭제하여 쉽게 삭제할 수 있는 데이터 저장
  • 기본 테이블의 하위 집합에만 적용되는 정보 저장
일대일 관계의 기본 키 쪽은 키 기호로 표시됩니다. 외래 키 쪽도 키 기호로 표시됩니다.

테이블 간 관계를 정의하는 방법

테이블 간 관계를 만들 때 관련되는 필드의 이름은 동일하게 설정하지 않아도 됩니다. 하지만 기본 키 필드가 AutoNumber 필드가 아닌 경우에는 관련 필드의 데이터 형식이 동일해야 합니다. 두 일치 필드의 필드 크기 속성이 동일한 경우에만 AutoNumber 필드와 Number 필드를 일치시킬 수 있습니다. 예를 들어, 두 필드 모두 필드 크기 속성이 정수(Long)인 경우 AutoNumber 필드와 Number 필드를 일치시킬 수 있습니다. 심지어 두 일치 필드가 모두 Number 필드이더라도 두 필드의 필드 크기 속성 설정은 동일해야 합니다.

일대다 또는 일대일 관계를 정의하는 방법

일대다 또는 일대일 관계를 만들려면 다음과 같이 하십시오.
  1. 열어 둔 테이블을 모두 닫습니다. 테이블을 연 상태에서는 관계를 만들거나 수정할 수 없습니다.
  2. Access 2002 또는 Access 2003의 경우 다음 단계를 수행합니다.
    1. F11 키를 눌러 데이터베이스 창으로 전환합니다.
    2. 도구 메뉴에서 관계를 누릅니다.
    Access 2007에서는 데이터베이스 도구 탭의 표시/숨기기 그룹에서 관계를 누릅니다.
  3. 데이터베이스에 관계를 정의하지 않은 경우 테이블 표시 대화 상자가 자동으로 나타납니다. 관계를 만들 테이블을 추가하려고 하는데 테이블 표시 대화 상자가 나타나지 않는 경우 관계 메뉴에서 테이블 표시를 누릅니다.
  4. 관계를 만들 테이블 이름을 두 번 누른 다음 테이블 표시 대화 상자를 닫습니다. 테이블과 해당 테이블 자체 사이에 관계를 만들려면 해당 테이블을 두 번 추가합니다.
  5. 한 테이블에서 관계를 만들 필드를 다른 테이블의 관련 필드로 끕니다. 여러 필드를 끌어 오려면 Ctrl 키를 누르고 각 필드를 누른 다음 끕니다.

    대부분의 경우 한 테이블의 기본 키 필드(굵은 텍스트로 표시됨)를 다른 테이블의 유사한 필드(외래 키라고 하며 대개 이름이 동일함)로 끕니다.
  6. 관계 편집 대화 상자가 표시됩니다. 두 열에 표시된 필드 이름이 올바른지 확인합니다. 필요한 경우 이름을 변경할 수 있습니다.

    필요한 경우 관계 옵션을 설정합니다. 관계 편집 대화 상자의 특정 항목에 대한 정보가 필요한 경우 물음표 단추를 누른 다음 해당 항목을 누릅니다. 이러한 옵션은 이 문서의 뒷부분에서 자세히 설명합니다.
  7. 만들기를 눌러 관계를 만듭니다.
  8. 관계를 만들 각 테이블 쌍에 대해 5-8단계를 반복합니다.

    관계 편집 대화 상자를 닫으면 해당 레이아웃을 저장할지를 묻는 메시지가 표시됩니다. 레이아웃 저장 여부에 관계없이 생성된 관계가 데이터베이스에 저장됩니다.

    참고: 테이블뿐만 아니라 쿼리에서도 관계를 만들 수 있습니다. 하지만 쿼리에는 참조 무결성을 적용할 수 없습니다.

다대다 관계를 정의하는 방법

다대다 관계를 만들려면 다음과 같이 하십시오.
  1. 다대다 관계를 만들 두 테이블을 만듭니다.
  2. 접합 테이블로 세 번째 테이블을 만든 다음 이 접합 테이블에 다른 두 테이블 각각의 기본 키 필드와 정의가 동일한 새 필드를 추가합니다. 접합 테이블에서 이러한 기본 키 필드는 외래 키로 작동합니다. 다른 테이블과 마찬가지로 접합 테이블에도 다른 필드를 추가할 수 있습니다.
  3. 접합 테이블에 다른 두 테이블의 기본 키 필드를 포함하는 기본 키를 설정합니다. 예를 들어, TitleAuthors 접합 테이블의 경우 기본 키는 OrderID와 ProductID 필드로 구성됩니다.

    참고: 기본 키를 만들려면 다음과 같이 하십시오.
    1. 디자인 보기에서 테이블을 엽니다.
    2. 기본 키로 정의할 필드를 하나 이상 선택합니다. 필드를 하나만 선택하려면 선택할 필드에 대한 행 선택키를 누릅니다.

      여러 필드를 선택하려면 Ctrl 키를 누른 채로 각 필드에 대한 행 선택키를 누릅니다.
    3. Access 2002 또는 Access 2003에서는 도구 모음에서 기본 키를 누릅니다.

      Access 2007에서는 디자인 탭의 도구 그룹에서 기본 키를 누릅니다.

      참고 다중 필드 기본 키의 필드 정렬 순서를 테이블에 표시된 필드 정렬 순서와 다르게 하려면 도구 모음에서 인덱스를 눌러 인덱스 대화 상자를 표시한 다음 이름이 PrimaryKey인 인덱스의 필드 이름에 대한 정렬 순서를 변경합니다.
  4. 두 기본 테이블 각각과 접합 테이블 간의 일대다 관계를 정의합니다.

참조 무결성

참조 무결성은 Microsoft Access가 관련 테이블에 있는 레코드 간의 관계가 유효하도록 하고 관련 데이터를 실수로 삭제하거나 변경하지 않도록 하는 데 사용하는 규칙 체계입니다. 다음 조건을 모두 만족할 경우 참조 무결성을 설정할 수 있습니다.
  • 기본 테이블의 일치 필드가 기본 키이거나 고유 인덱스를 가집니다.
  • 관련 필드의 데이터 형식이 동일합니다. 여기에는 두 가지 예외가 있습니다. AutoNumber 필드는 필드 크기 속성이 정수(Long)인 Number 필드와 연결될 수 있으며, 필드 크기 속성이 복제 ID인 AutoNumber 필드는 필드 크기 속성이 복제 ID인 Number 필드와 연결될 수 있습니다.
  • 두 테이블 모두 동일한 Microsoft Access 데이터베이스에 속합니다. 테이블이 연결된 테이블인 경우 Microsoft Access 형식의 테이블이어야 하며 사용자가 참조 무결성을 설정하기 위해서는 이러한 테이블이 저장된 데이터베이스를 열어야 합니다. 참조 무결성은 다른 형식의 데이터베이스에 있는 연결된 테이블에 대해서는 적용되지 않습니다.
참조 무결성을 사용할 때 적용되는 규칙은 다음과 같습니다.

  • 기본 테이블의 기본 키에 없는 관련 테이블의 외래 키 필드에 값을 입력할 수 없습니다. 그러나 외래 키에 Null 값을 입력하여 레코드가 관련되지 않음을 지정할 수 있습니다. 예를 들어, 존재하지 않는 고객에게 할당된 주문은 있을 수 없지만 CustomerID 필드에 Null 값을 입력하여 아무에게도 할당되지 않은 주문을 만들 수 있습니다.
  • 일치하는 레코드가 관련 테이블에 있으면 기본 테이블에서 레코드를 삭제할 수 없습니다. 예를 들어, Orders 테이블에서 직원에게 할당된 주문이 있으면 Employees 테이블에서 해당 직원 레코드를 삭제할 수 없습니다.
  • 해당 레코드와 관련된 레코드가 있으면 기본 테이블의 기본 키 값을 변경할 수 없습니다. 예를 들어, Orders 테이블에서 직원에게 할당된 주문이 있으면 Employees 테이블에서 해당 직원 ID를 변경할 수 없습니다.

관련 항목 업데이트 및 삭제

참조 무결성이 적용되는 관계의 경우 관련 레코드가 자동으로 모두 업데이트되거나 삭제되도록 할지를 지정할 수 있습니다. 이러한 옵션을 설정하면 참조 무결성 규칙에 따라 일반적으로 방지되는 삭제 및 업데이트 작업이 허용됩니다. 레코드를 삭제하거나 기본 테이블에서 기본 키 값을 변경할 때 Microsoft Access는 필요한 경우 관련 테이블을 변경하여 참조 무결성을 유지합니다.

관계를 정의할 때 관련 필드 모두 업데이트 확인란을 선택하면 기본 테이블에서 레코드의 기본 키를 변경할 때마다 자동으로 모든 관련 레코드에서 기본 키가 새 값으로 업데이트됩니다. 예를 들어, Customers 테이블에서 고객 ID를 변경하는 경우 Orders 테이블의 CustomerID 필드는 해당 고객의 각 주문에 대해 자동으로 업데이트되므로 관계가 깨지지 않습니다. Microsoft Access는 메시지를 표시하지 않고 관련 항목 업데이트를 수행합니다.

참고: 기본 테이블의 기본 키가 AutoNumber 필드이면 AutoNumber 필드의 값을 변경할 수 없기 때문에 관련 필드 모두 업데이트 확인란을 선택해도 효과가 없습니다.

관계를 정의할 때 관련 레코드 모두 삭제 확인란을 선택하면 기본 테이블에서 레코드를 삭제할 때마다 자동으로 관련 테이블에서 관련 레코드가 삭제됩니다. 예를 들어, Customers 테이블에서 고객 레코드를 삭제하는 경우 해당 고객의 모든 주문이 Orders 테이블에서 자동으로 삭제됩니다. 이때 Orders 레코드와 관련된 Order Details 테이블의 레코드도 삭제됩니다. 관련 레코드 모두 삭제 확인란이 선택된 경우 폼이나 데이터시트에서 레코드를 삭제하면 관련 레코드도 삭제될 수 있음을 경고하는 메시지가 표시됩니다. 그러나 삭제 쿼리를 사용하여 레코드를 삭제하면 경고 메시지 없이 관련 테이블의 레코드가 자동으로 삭제됩니다.

조인 유형

다음과 같은 세 가지 조인 유형이 있습니다.

옵션 1은 내부 조인을 정의합니다. 내부 조인은 조인된 필드의 값이 특정 조건을 만족하는 경우에만 두 테이블의 레코드가 쿼리 결과에 결합되는 조인입니다. 쿼리에서 기본 조인은 조인된 필드의 값이 일치하는 경우에만 레코드를 선택하는 내부 조인입니다.

옵션 2는 왼쪽 우선 외부 조인을 정의합니다. 왼쪽 우선 외부 조인은 쿼리의 SQL 문에서 LEFT JOIN 연산의 오른쪽 테이블에 있는 조인된 필드에 일치하는 값이 없는 경우에도 왼쪽 테이블의 모든 레코드가 쿼리 결과에 추가되는 조인입니다.

옵션 3은 오른쪽 우선 외부 조인을 정의합니다. 오른쪽 우선 외부 조인은 쿼리의 SQL 문에서 RIGHT JOIN 연산의 왼쪽 테이블에 있는 조인된 필드에 일치하는 값이 없는 경우에도 오른쪽 테이블의 모든 레코드가 쿼리 결과에 추가되는 조인입니다.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 304466 - 마지막 검토: 2013년 7월 16일 화요일 - 수정: 5.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Access 2002 Standard Edition
키워드:?
kbdesign kbdatabase kbhowto KB304466

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com