데이터베이스 디자인의 기초

데이터베이스 디자인의 기초

올바르게 디자인 된 데이터베이스는 정확한 최신 정보에 대 한 액세스를 제공 합니다. 데이터베이스 작업에 대 한 목표를 달성 하는 데 올바른 설계가 필요 하기 때문에 좋은 디자인의 원리를 파악 하는 데 필요한 시간을 투자 하는 것이 좋습니다. 결국에는 사용자의 요구를 충족 하는 데이터베이스를 사용 하는 것이 훨씬 더 많을 것 이며, 변경 내용을 쉽게 수용할 수 있습니다.

이 문서에서는 데스크톱 데이터베이스 계획에 대 한 지침을 제공 합니다. 필요한 정보를 결정 하는 방법, 해당 정보를 적절 한 테이블과 열로 구분 하는 방법, 각 테이블 간의 관계에 대해 설명 합니다. 첫 번째 데스크톱 데이터베이스를 만들기 전에이 문서를 읽어야 합니다.

중요: Access 는 웹용 데이터베이스 응용 프로그램을 만들 수 있는 디자인 환경을 제공 합니다. 웹을 디자인할 때는 여러 디자인 고려 사항이 달라 집니다. 이 문서에서는 웹 데이터베이스 응용 프로그램 디자인에 대해 설명 하지 않습니다. 자세한 내용은 웹에서 공유할 데이터베이스 작성문서를 참조 하세요.

이 문서의 내용

몇 가지 알아야 할 데이터베이스 용어

올바른 데이터베이스 디자인은 무엇인가요?

디자인 프로세스

데이터베이스의 용도 결정

필요한 정보 찾기 및 구성

정보를 표로 나누기

정보 항목을 열로 회전

기본 키 지정

테이블 관계 만들기

디자인 구체화

정규화 규칙 적용


몇 가지 알아야 할 데이터베이스 용어

Access 는 정보를 표로구성 하며, reminiscent의 행과 열 목록은 회계사의 pad 또는 스프레드시트의 목록입니다. 간단한 데이터베이스에는 하나의 테이블만 있을 수 있습니다. 대부분의 데이터베이스는 두 개 이상 필요 합니다. 예를 들어 products에 대 한 정보를 저장 하는 테이블, 주문에 대 한 정보를 저장 하는 다른 테이블, 고객에 대 한 정보가 포함 된 테이블을 만들 수 있습니다.

세 테이블을 데이터시트로 보여 주는 이미지

각 행은 레코드, 각 열, 필드라는 것이 더 정확 합니다. 레코드는 항목에 대 한 정보를 결합 하는 의미 있고 일관 된 방법입니다. 필드는 단일 정보 항목으로, 모든 레코드에 표시 되는 항목 유형입니다. 예를 들어 제품 테이블의 각 행이나 레코드에는 한 제품에 대한 정보가 포함됩니다. 각 열이나 필드에는 이름, 가격 등 해당 제품에 대한 일부 유형의 정보가 포함됩니다.

맨 위로 이동

올바른 데이터베이스 디자인은 무엇인가요?

데이터베이스 디자인 프로세스는 특정 원칙을 안내 합니다. 첫 번째 원칙은 중복 된 정보 (중복 데이터 라고도 함)는 공간을 낭비 하 고 오류 및 불일치의 가능성을 늘리기 때문에 좋지 않습니다. 두 번째 원칙은 정보의 정확성과 완전성을 중요 한 것입니다. 데이터베이스에 잘못 된 정보가 포함 되어 있으면 데이터베이스에서 정보를 끌어오는 보고서에도 잘못 된 정보가 포함 됩니다. 따라서 해당 보고서를 기반으로 하는 모든 결정 사항이 misinformed 됩니다.

따라서 다음과 같은 데이터베이스를 디자인 하는 것이 좋습니다.

  • 정보를 주제 기반 테이블로 나누어 중복 데이터를 줄입니다.

  • 필요에 따라 테이블의 정보를 결합 하는 데 필요한 정보에 대 한 액세스를 제공 합니다.

  • 정보의 정확성과 무결성을 지원 하 고 보증 합니다.

  • 데이터 처리 및 보고 요구 사항을 수용 합니다.

맨 위로 이동

디자인 프로세스

디자인 프로세스는 다음 단계로 구성 됩니다.

  • 데이터베이스의 용도 결정    

    이렇게 하면 나머지 단계를 준비할 수 있습니다.

  • 필요한 정보 찾기 및 구성     

    제품 이름 및 주문 번호와 같은 데이터베이스에 기록 하는 데 사용할 수 있는 모든 유형의 정보를 수집 합니다.

  • 정보를 표로 나누기    

    정보 항목을 주요 엔터티나 주제 (예: 제품 또는 주문)로 나눕니다. 그러면 각 주제가 표로 바뀝니다.

  • 정보 항목을 열로 변환    

    각 테이블에 저장 하려는 정보를 결정 합니다. 각 항목은 필드가 되며 테이블에 열로 표시 됩니다. 예를 들어 Employees 테이블에는 성, 입사일 등의 필드가 포함 될 것입니다.

  • 기본 키 지정    

    각 테이블의 기본 키를 선택합니다. 기본 키는 각 행을 고유 하 게 식별 하는 데 사용 되는 열입니다. 제품 ID 또는 주문 ID를 예로 들 수 있습니다.

  • 테이블 관계 설정    

    각 테이블을 살펴보고 한 테이블의 데이터가 다른 테이블의 데이터와 어떻게 관련 되는지 결정 합니다. 테이블에 필드를 추가 하거나 새 테이블을 만들어 필요에 따라 관계를 명확 하 게 설명 합니다.

  • 디자인 다듬기    

    오류에 대 한 디자인 분석 테이블을 만들고 예제 데이터의 레코드를 몇 개 추가 합니다. 표에서 원하는 결과를 얻을 수 있는지 확인 합니다. 필요에 따라 디자인을 조정 합니다.

  • 정규화 규칙 적용    

    테이블이 올바르게 구성 되어 있는지 확인 하려면 데이터 정규화 규칙을 적용 합니다. 필요에 따라 테이블을 조정 합니다.

맨 위로 이동

데이터베이스의 용도 결정

데이터베이스의 용도, 사용 하는 방법, 사용 하는 사람을 기록 하는 것이 좋습니다. 예를 들어 집 기반 비즈니스를 위한 작은 데이터베이스의 경우 "고객 데이터베이스에서 우편물 및 보고서를 생성 하는 데 필요한 고객 정보 목록을 유지 합니다."와 같이 간단한 내용을 작성할 수 있습니다. 데이터베이스가 복잡 하거나 여러 사람이 사용 하는 경우 회사 설정에서 자주 발생 하는 경우에는이 용도가 단락 이상으로 다를 수 있으며 각 사용자가 데이터베이스를 사용 하는 시기 및 방법을 포함 해야 합니다. 아이디어는 디자인 프로세스 전체에서 참조할 수 있는 잘 개발 된 임무 설명을 사용 하는 것입니다. 이러한 문을 사용 하면 의사 결정을 내릴 때 목표에 집중할 수 있습니다.

맨 위로 이동

필요한 정보 찾기 및 구성

필요한 정보를 찾고 구성 하려면 기존 정보부터 시작 합니다. 예를 들어 구매 주문을 회계 원장에 기록 하거나 파일 캐비닛의 용지 양식에 고객 정보를 보관할 수 있습니다. 이러한 문서를 수집 하 고 표시 되는 각 정보 유형 (예: 양식에 입력 하는 각 상자)을 나열 합니다. 기존 양식이 없는 경우에는 대신 고객 정보를 기록 하기 위해 양식을 디자인 해야 한다고 가정해 보겠습니다. 양식에 어떤 정보를 넣으 시겠습니까? 어떤 채우기 상자를 만들 수 있나요? 각 항목을 식별 하 고 나열 합니다. 예를 들어 현재 고객 목록을 색인 카드에 보관 하 고 있다고 가정 합니다. 이러한 카드를 검사 하면 각 카드에 고객 이름, 주소, 구/군/시, 시/도, 우편 번호 및 전화 번호가 포함 되어 있음을 알 수 있습니다. 이러한 항목은 각각 표의 잠재적 열을 나타냅니다.

이 목록을 준비할 때 처음에 완벽 하 게 적용 하는 데 걱정할 필요가 없습니다. 대신, 각 항목을 기억 하 여 나열 합니다. 다른 사용자가 데이터베이스를 사용 하는 경우 아이디어를 요청 합니다. 나중에 목록을 미세 조정할 수 있습니다.

다음으로, 데이터베이스에서 생성 하려는 보고서 또는 우편물 종류를 고려 합니다. 예를 들어 제품 판매 보고서에 지역별로 판매량을 표시 하거나 제품 재고 수준을 표시 하는 재고 요약 보고서를 만들 수 있습니다. 판매 이벤트를 알려 주고 premium을 제공 하는 고객에 게 보낼 양식 문자를 생성할 수도 있습니다. 보고서를 디자인 하 고 원하는 모양으로 생각 하세요. 보고서에 어떤 정보가 추가 되나요? 각 항목을 나열 합니다. 양식 문자와 생성 하는 데 예상 되는 다른 보고서에 대해 동일한 작업을 수행 합니다.

제품 재고 보고서를 구상하고 있는 사람

만들 수 있는 보고서와 우편물을 생각 하면 데이터베이스에 필요한 항목을 식별 하는 데 도움이 됩니다. 예를 들어 고객에 게 정기적으로 전자 메일 업데이트를 옵트인 (또는 체크 아웃) 할 수 있고, 옵트인 (opt in) 한 사용자의 목록을 인쇄 하려는 경우 이 정보를 기록 하려면 고객 테이블에 "전자 메일 보내기" 열을 추가 합니다. 각 고객에 대해 필드를 예 또는 아니요로 설정할 수 있습니다.

고객에 게 전자 메일 메시지를 보내려면 다른 항목을 기록해 둘 것을 제안 하는 요구 사항이 필요 합니다. 고객이 전자 메일 메시지를 받고자 하는 것을 알고 있는 경우에는 보낼 전자 메일 주소도 알아야 합니다. 따라서 각 고객의 전자 메일 주소를 기록해 야 합니다.

각 보고서 또는 출력 목록의 프로토타입을 생성 하 고 보고서를 생성 하는 데 필요한 항목을 고려 하는 것이 좋습니다. 예를 들어 양식 편지를 검사 하면 몇 가지 사항을 고려해 야 할 수 있습니다. 인사말을 시작 하는 적절 한 인사말 (예: "Mr", "Mrs" 또는 "Ms" 문자열)을 포함 하려면 인사말 항목을 만들어야 합니다. 또한 일반적으로 문자를 시작 하는 것이 아니라 "여러분 여러분께". Sylvester Smith ". 이는 일반적으로 이름에 대 한 성을 구분 하 여 저장 하는 것을 제안 합니다.

중요 한 점은 각 정보를 가장 작은 유용한 파트로 구분 하는 것입니다. 이름의 경우 성을 쉽게 사용할 수 있도록 이름 (이름 및 이름)을 두 부분으로 나누는 것이 가장입니다. 예를 들어 성을 기준으로 보고서를 정렬 하려면 고객의 성을 별도로 저장 하는 것이 좋습니다. 일반적으로 정보 항목을 기준으로 정렬, 검색, 계산 또는 보고 하려면 해당 항목을 별도의 필드에 두어야 합니다.

데이터베이스에서 응답할 수 있는 질문에 대해 생각해 보세요. 예를 들어 지난 달에는 추천 제품의 판매량이 얼마나 되나요? 최고의 고객은 어디에 살고 계십니까? 가장 잘 팔리는 제품을 위한 공급자는 누구 인가요? 이러한 질문을 예측 하면 기록할 추가 항목을 0으로 설정 하는 데 도움이 됩니다.

이 정보를 수집한 후에는 다음 단계를 진행할 수 있습니다.

맨 위로 이동

정보를 표로 나누기

정보를 표로 나누려면 주요 엔터티 또는 주제를 선택 합니다. 예를 들어 제품 판매 데이터베이스에 대 한 정보를 찾아서 구성 하 고 나면 예비 목록은 다음과 같이 표시 될 것입니다.

주제별로 그룹화된 필기 정보 항목

여기에 나와 있는 주요 항목은 제품, 공급 업체, 고객, 주문입니다. 따라서 제품에 대 한 팩트, 공급 업체에 대 한 팩트, 고객에 대 한 팩트, 주문에 대 한 팩트에 대 한 정보를 포함 하는 4 개의 테이블로 시작 하는 것이 좋습니다. 목록이 완성 되지는 않지만 시작 하는 것이 좋습니다. 제대로 작동 하는 디자인을 사용할 때까지이 목록을 계속 구체화할 수 있습니다.

처음으로 항목의 예비 목록을 검토 하는 경우 앞의 그림에 표시 된 4 개가 아닌 단일 테이블에 모두 배치 하는 것이 좋습니다. 이에 대 한 좋은 생각이 있다면 여기에 대해 알아보세요. 여기에 표시 된 표를 참조 하세요.

제품과 공급업체가 모두 포함된 테이블을 보여 주는 이미지

이 경우 각 행에는 제품과 해당 공급자에 대 한 정보가 모두 포함 됩니다. 동일한 공급 업체에서 제공 하는 제품 수가 많을 수 있으므로 공급 업체 이름과 주소 정보를 여러 번 반복 해야 합니다. 이 경우 디스크 공간이 낭비됩니다. 별도의 Suppliers 테이블에 공급 업체 정보를 한 번만 기록 하 고 해당 테이블을 Products 테이블에 연결 하는 것이 훨씬 더 나은 솔루션입니다.

이 디자인의 두 번째 문제는 협력 업체에 대 한 정보를 수정 해야 할 때입니다. 예를 들어 공급 업체의 주소를 변경 해야 하는 경우 주소는 여러 위치에 나타나므로 실수로 한 곳에서만 주소를 변경하고 다른 곳에서는 변경하지 않을 수 있습니다. 공급자의 주소를 한 곳에만 기록 하면 문제가 해결 됩니다.

데이터베이스를 디자인할 때는 항상 한 번만 각 사실을 기록해 야 합니다. 특정 공급 업체의 주소와 같이 여러 위치에서 같은 정보를 반복 하는 경우 해당 정보를 별도의 테이블에 배치 합니다.

마지막으로, 주조 무역에서 제공 하는 제품이 한 개만 있고, 제품을 삭제 하 되 공급 업체 이름과 주소 정보는 유지 하려고 한다고 가정 합니다. 공급 업체 정보도 잃지 않고 제품 레코드를 삭제 하는 방법은 무엇 인가요? 불가능합니다. 각 레코드에는 제품에 대 한 정보 및 공급자에 대 한 팩트가 포함 되어 있으므로 다른 항목을 삭제 하지 않고 삭제할 수 없습니다. 이러한 사실을 별도로 유지 하려면 하나의 테이블을 제품 정보에 대 한 테이블 한 개와 공급 업체 정보에 대 한 다른 표를 분할 해야 합니다. 제품 레코드를 삭제 하면 공급 업체에 대 한 정보는 제외 하 고 제품에 대 한 팩트와 삭제 해야 합니다.

테이블로 표시 되는 제목을 선택 하면 해당 테이블의 열에는 해당 주제에 대 한 팩트와만 저장 됩니다. 예를 들어 product 테이블에는 제품에 대 한 팩트와만 저장 해야 합니다. 공급 업체 주소는 공급자에 대 한 사실 이지만, 제품에 대 한 팩트는 제공 되지 않으므로 협력 업체 테이블에 속합니다.

맨 위로 이동

정보 항목을 열로 회전

표의 열을 결정 하려면 표에 기록 된 주제에 대해 추적 하는 데 필요한 정보를 결정 합니다. 예를 들어 고객 테이블, 이름, 주소, 시/도-우편번호, 전자 메일, 인사말, 전자 메일 주소 등이 올바른 시작 열 목록으로 구성 됩니다. 테이블의 각 레코드에는 동일한 열 집합이 포함 되므로 이름, 주소, 시/도, 우편 발송, 전자 메일, 인사말, 전자 메일 주소 정보를 각 레코드에 저장할 수 있습니다. 예를 들어 주소 열에는 고객의 주소가 포함 됩니다. 각 레코드에는 한 고객에 대 한 데이터가 포함 되며 주소 필드에는 해당 고객의 주소가 포함 됩니다.

각 테이블에 대 한 초기 열 집합을 결정 한 후에는 열을 구체화할 수 있습니다. 예를 들어, 고객 이름을 이름 및 성의 두 가지 별도 열로 저장 하 여 해당 열 에서만 정렬, 검색, 인덱스를 만들 수 있습니다. 마찬가지로, 주소도 주소, 구/군/시, 시/도, 우편 번호, 국가/지역 등 다섯 가지로 구성 되며 별도의 열에 저장 하는 것도 좋습니다. 예를 들어 검색, 필터 또는 정렬 작업을 상태별로 수행 하려면 별도의 열에 저장 된 상태 정보가 필요 합니다.

또한 데이터베이스에 국내 정보만 저장할지, 아니면 국제도 함께 저장할 것인지를 고려해 야 합니다. 예를 들어 해외 주소를 저장 하려는 경우에는 이러한 열이 국내 상태와 다른 국가/지역의 지역을 모두 수용할 수 있으므로 State 대신 지역 열을 사용 하는 것이 좋습니다. 마찬가지로 국제 주소를 저장 하려는 경우 우편 번호를 사용 하는 것이 Zip 코드 보다 더 적합 합니다.

다음 목록에는 열을 결정 하는 몇 가지 팁이 나와 있습니다.

  • 계산 된 데이터 포함 안 함    

    대부분의 경우 계산 결과를 테이블에 저장 하지 않아야 합니다. 대신, 결과를 확인 하려는 경우 Access에서 계산을 수행 하도록 할 수 있습니다. 예를 들어 주문 보고서에서 데이터베이스의 각 제품 범주에 대 한 주문에 단위 소계를 표시 하는 경우 그러나 모든 표의 주문 소계 열에는 단위가 없습니다. 대신 Products 테이블에 각 제품의 주문 단위를 저장 하는 주문 단위 열이 포함 됩니다. 이 데이터를 사용 하 여 보고서를 인쇄할 때마다 부분합이 계산 됩니다. 부분합 자체는 테이블에 저장 되어서는 안 됩니다.

  • 가장 작은 논리적 부분으로 정보 저장    

    전체 이름에 대 한 단일 필드 또는 제품 설명과 함께 제품 이름을 사용 하는 경우가 있을 수 있습니다. 필드에 여러 종류의 정보를 결합 하는 경우 나중에 개별 팩트를 검색 하는 것은 어렵습니다. 정보를 논리적 부분으로 세분 하십시오. 예를 들어 성과 이름 또는 제품 이름, 범주, 설명에 대해 별도의 필드를 만듭니다.

디자인하는 동안의 정보 항목을 보여 주는 이미지

각 테이블의 데이터 열을 구체화 하면 각 테이블의 기본 키를 선택할 수 있습니다.

맨 위로 이동

기본 키 지정

각 테이블에는 테이블에 저장 된 각 행을 고유 하 게 식별 하는 열 또는 열 집합이 포함 되어야 합니다. 일반적으로 직원 ID 번호 또는 일련 번호와 같은 고유한 id 번호입니다. 데이터베이스 용어로이 정보는 테이블의 기본 키 라고 합니다. Access에서는 기본 키 필드를 사용 하 여 여러 테이블의 데이터를 빠르게 연결 하 고 데이터를 함께 가져옵니다.

카탈로그의 각 제품을 고유 하 게 식별 하는 제품 번호와 같이 테이블에 대 한 고유 식별자가 이미 있는 경우에는 해당 식별자를 테이블의 기본 키로 사용할 수 있지만,이 열의 값이 항상 각 레코드에 대해 달라 지는 경우에만 가능 합니다. 기본 키에 중복 값을 포함할 수 없습니다. 예를 들어 이름이 고유 하지 않으므로 사용자 이름을 기본 키로 사용 하지 마세요. 같은 테이블에서 이름이 같은 두 사용자를 쉽게 가질 수 있습니다.

기본 키에는 항상 값이 있어야 합니다. 특정 시점에 열의 값이 할당 되지 않거나 알 수 없는 경우 (값이 누락 된 경우) 기본 키에서 구성 요소로 사용할 수 없습니다.

항상 해당 값이 변경 되지 않는 기본 키를 선택 해야 합니다. 여러 테이블을 사용 하는 데이터베이스에서 테이블의 기본 키를 다른 테이블의 참조로 사용할 수 있습니다. 기본 키가 변경 되 면 키가 참조 되는 모든 위치에도 변경 내용이 적용 되어야 합니다. 변경 되지 않는 기본 키를 사용 하면 기본 키를 참조 하는 다른 테이블과의 동기화가 종료 될 가능성이 줄어듭니다.

임의의 고유 숫자가 기본 키로 사용 되는 경우가 많습니다. 예를 들어 각 주문에 고유한 주문 번호를 할당할 수 있습니다. 주문 번호의 유일한 용도는 주문을 식별 하는 것입니다. 할당 된 후에는 변경 되지 않습니다.

적절 한 기본 키를 만들 수 있는 열 또는 열 집합을 염두에 두지 않는 경우 일련 번호 데이터 형식이 있는 열을 사용 하는 것이 좋습니다. 일련 번호 데이터 형식을 사용 하면 값이 자동으로 지정 됩니다. 이러한 식별자는 factless입니다. 이 파일에는 자신이 나타내는 행을 설명 하는 factual 정보가 포함 되어 있지 않습니다. Factless 식별자는 변경 되지 않으므로 기본 키로 사용 하는 데 적합 합니다. 행에 대 한 팩트를 포함 하는 기본 키 (예: 전화 번호 또는 고객 이름)는 factual 정보 자체가 변경 될 수 있으므로 변경 될 가능성이 더 높습니다.

기본 키 필드가 있는 제품 테이블을 보여 주는 이미지

1. 일련 번호 데이터 형식으로 설정 된 열이 기본 키를 사용 하는 경우가 많습니다. 두 개의 제품 Id는 동일 하지 않습니다.

경우에 따라 두 개 이상의 필드를 사용 하 여 테이블의 기본 키를 제공 해야 할 수 있습니다. 예를 들어 주문에 대 한 품목을 저장 하는 주문 정보 테이블에는 기본 키 (주문 ID 및 제품 ID)에 두 개의 열이 사용 됩니다. 기본 키가 둘 이상의 열을 사용하는 경우 복합 키라고도 합니다.

제품 판매 데이터베이스의 경우 Products 테이블의 ProductID, Orders 테이블에 대 한 OrderID, 고객 테이블에 대 한 CustomerID, Suppliers 테이블의 공급자 번호와 같은 기본 키로 사용할 각 테이블에 대 한 AutoNumber 열을 만들 수 있습니다.

디자인하는 동안의 정보 항목을 보여 주는 이미지


맨 위로 이동

테이블 관계 만들기

정보를 테이블로 분할 했으므로 이제 의미 있는 방식으로 정보를 함께 가져오는 방법이 필요 합니다. 예를 들어 다음 형식은 여러 테이블의 정보를 포함 합니다.

주문 폼 이미지

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

2. 직원 테이블 ...

3. 주문 테이블 ...

4 .... Products 테이블

5 .... 및 주문 정보 테이블

Access는 관계형 데이터베이스 관리 시스템입니다. 관계형 데이터베이스에서 정보를 주제별 테이블 별로 구분 합니다. 그런 다음 테이블 관계를 사용 하 여 필요한 정보를 함께 가져옵니다.

맨 위로 이동

일대다 관계 만들기

제품 주문 데이터베이스의 공급 업체 및 제품 테이블 예를 살펴보겠습니다. 공급 업체는 여러 제품을 제공할 수 있습니다. Suppliers 테이블에 표시 되는 모든 공급 업체에 대해 다음은 Products 테이블에 여러 제품이 표시 될 수 있습니다. 각 공급 업체 테이블과 Products 테이블 간의 관계는 일대다 관계입니다.

일대다 개념

데이터베이스 디자인에 일대다 관계를 표시 하려면 관계의 "일" 쪽에 있는 기본 키를 가져와 관계의 "다" 쪽에 있는 테이블에 추가 열로 추가 합니다. 예를 들어이 경우 Suppliers 테이블의 공급 업체 ID 열을 Products 테이블에 추가 합니다. 그러면 Access에서 Products 테이블의 공급 업체 ID 번호를 사용 하 여 각 제품에 대 한 올바른 공급자를 찾을 수 있습니다.

Products 테이블의 공급 업체 ID 열을 외래 키 라고 합니다. 외래 키는 다른 테이블의 기본 키입니다. Products 테이블의 공급 업체 ID 열은 Suppliers 테이블의 기본 키 이기도 하므로 외래 키입니다.

디자인하는 동안의 정보 항목을 보여 주는 이미지

기본 키와 외래 키의 쌍을 설정 하 여 관련 테이블에 대 한 조인을 제공할 수 있습니다. 어떤 테이블이 공통 열을 공유 해야 하는지 확실 하지 않은 경우 일대다 관계를 식별 하면 관련 된 두 테이블에 대 한 공유 열이 필요 합니다.

맨 위로 이동

다대다 관계 만들기

Products 테이블 및 Orders 테이블 간의 관계를 고려 합니다.

단일 주문은 두 개 이상의 제품을 포함할 수 있습니다. 반면, 단일 제품은 여러 주문에 나타날 수 있습니다. 따라서 주문 테이블의 각 레코드에 대해 제품 테이블에는 많은 레코드가 존재할 수 있습니다. Products 테이블의 각 레코드에 대해 Orders 테이블에 레코드가 여러 개 있을 수 있습니다. 모든 제품에 대해 여러 주문이 있을 수 있으므로 이러한 유형의 관계를 다대다 관계 라고 합니다. 주문에 따라 많은 제품이 있을 수 있습니다. 테이블 간의 다대다 관계를 검색 하려면 관계의 두 측면을 모두 고려 하는 것이 중요 합니다.

두 테이블의 주제 (주문 및 제품)는 다대다 관계입니다. 문제가 발생 합니다. 문제를 이해 하려면 주문 테이블에 제품 ID 필드를 추가 하 여 두 테이블 간의 관계를 만들려고 할 때 발생 하는 상황을 생각해 보십시오. 주문 별로 둘 이상의 제품을 사용 하려면 주문 당 Orders 테이블에 레코드가 두 개 이상 있어야 합니다. 단일 주문과 관련 된 각 행에 대해 주문 정보를 반복적으로 사용할 수 있으며,이는 비효율적인 디자인으로 인해 데이터가 정확 하지 않을 수 있습니다. Products 테이블에 주문 번호 필드를 넣고 각 제품에 대 한 Products 테이블에 두 개 이상의 레코드가 있는 경우 같은 문제가 발생 합니다. 이 문제를 어떻게 해결 하나요?

이에 대 한 해답은 일반적으로 접합 테이블 이라고 하는 세 번째 테이블을 만들어 다대다 관계를 2 1-다대다 관계로 나누는 것입니다. 그런 다음 다대다 관계를 형성하는 두 테이블의 기본 키를 이 세 번째 테이블에 삽입합니다. 결과적으로 세 번째 테이블에 각 항목이 나 관계 인스턴스가 기록 됩니다.

다대다 관계의 개념

주문 정보 테이블의 각 레코드는 주문에 대 한 하나의 품목을 나타냅니다. 주문 정보 테이블의 기본 키는 주문 및 제품 테이블의 외래 키인 두 개의 필드로 구성 됩니다. 한 주문에 여러 줄 항목이 있을 수 있으므로 주문 ID 필드만 사용 하는 것이이 테이블의 기본 키로 작동 하지 않습니다. 주문에 대 한 각 줄 항목에 대해 주문 ID가 반복 되므로 필드에 고유 값이 포함 되지 않습니다. 하나의 제품이 여러 다른 주문에 나타날 수 있기 때문에 제품 ID 필드만 사용 하는 것은 작동 하지 않습니다. 그러나 두 필드는 항상 각 레코드에 대해 고유한 값을 생성 합니다.

제품 판매 데이터베이스에서 주문 테이블과 Products 테이블은 서로에 게 직접 연결 되어 있지 않습니다. 대신, 주문 정보 테이블을 통해 간접적으로 관련 됩니다. 주문 및 제품 간의 다대다 관계는 2 1-다대다 관계를 사용 하 여 데이터베이스에 표시 됩니다.

  • 주문 테이블 및 주문 정보 테이블에는 일대다 관계가 있습니다. 각 주문에는 두 개 이상의 줄 항목이 포함 될 수 있지만 각 줄 항목은 주문 하나에만 연결 됩니다.

  • Products 테이블 및 주문 정보 테이블에는 일대다 관계가 있습니다. 각 제품에는 관련 된 품목이 여러 개 있을 수 있지만 각 품목에는 하나의 제품만 참조 합니다.

주문 정보 테이블에서 특정 주문에 대 한 모든 제품을 확인할 수 있습니다. 특정 제품에 대 한 주문을 모두 확인할 수도 있습니다.

주문 정보 테이블을 통합 한 후의 테이블 및 필드 목록은 다음과 같이 표시 될 것입니다.

디자인하는 동안의 정보 항목을 보여 주는 이미지


맨 위로 이동

일대일 관계 만들기

다른 유형의 관계는 일대일 관계입니다. 예를 들어, 거의 필요 하지 않거나 일부 제품에만 적용 되는 몇 가지 특수 부가 제품 정보를 기록해 야 합니다. 정보는 자주 필요 하지 않으며 Products 테이블에 정보를 저장 하면 해당 정보가 적용 되지 않는 모든 제품에 대해 빈 공간이 생성 되므로 별도의 표에 배치 합니다. Products 테이블과 마찬가지로 ProductID를 기본 키로 사용 합니다. 이 보충 표와 Product 테이블 간의 관계는 일대일 관계입니다. Product 테이블의 각 레코드에 대해 보충 테이블에 일치 하는 레코드 하나가 있습니다. 이러한 관계를 식별할 때 두 테이블은 공통 필드를 공유하고 있어야 합니다.

데이터베이스에서 일대일 관계가 필요한 경우에는 두 테이블의 정보를 한 테이블에 둘 수 있는지 고려해 야 합니다. 일부 이유 때문에이 작업을 수행 하지 않는 경우에는 빈 공간이 많이 생성 되므로 다음 목록에는 디자인에서 관계를 나타내는 방법이 나와 있습니다.

  • 두 테이블의 주제가 같은 경우 두 테이블에서 동일한 기본 키를 사용 하 여 관계를 설정할 수 있습니다.

  • 두 테이블에 기본 키가 서로 다른 여러 주제가 있으면 테이블 중 하나를 선택 하 고 해당 기본 키를 다른 테이블의 외래 키로 삽입 합니다.

테이블 간의 관계를 확인 하면 적절 한 테이블과 열이 있는지 확인할 수 있습니다. 일대일 또는 일대다 관계가 있는 경우 관련 된 테이블에서 공통 열을 공유 해야 합니다. 다대다 관계가 있으면 관계를 나타내는 세 번째 테이블이 필요 합니다.

맨 위로 이동

디자인 구체화

필요한 테이블, 필드, 관계를 사용 하는 경우 예제 데이터로 테이블을 만들고 채우고 쿼리 만들기, 새 레코드 추가 등의 정보를 사용 하 여 작업을 수행해 봅니다. 이렇게 하면 디자인 단계에서 삽입 하지 않은 열을 추가 해야 하는 경우, 중복을 제거 하기 위해 두 개의 테이블로 분할 해야 하는 테이블을 사용할 수 있으므로 잠재적 문제를 강조 표시 하는 데 도움이 됩니다.

데이터베이스를 사용 하 여 원하는 대답을 얻을 수 있는지 확인 합니다. 폼과 보고서의 대략적인 초안을 만들고 원하는 데이터가 표시 되는지 확인 합니다. 불필요 한 데이터 중복을 찾고, 찾을 때이를 제거 하도록 디자인을 변경 합니다.

초기 데이터베이스를 사용해 보면 향상을 위한 공간을 찾을 수 있을 것입니다. 다음과 같은 몇 가지 사항을 확인 해야 합니다.

  • 열을 잊어버린 경우 그렇다면 정보가 기존 테이블에 속해 있습니까? 다른 항목에 대 한 정보 인 경우 표를 직접 만들어야 할 수 있습니다. 추적 해야 하는 모든 정보 항목에 대 한 열을 만듭니다. 다른 열에서 정보를 계산할 수 없는 경우에는 새 열이 필요할 수 있습니다.

  • 기존 필드에서 계산할 수 있는 열이 필요 하지 않은 경우 다른 기존 열 (예: 소매 가격으로 계산 되는 할인 된 가격)으로 정보 항목을 계산할 수 있는 경우에는 일반적으로이 작업을 수행 하는 것이 더 효과적 이며, 새 열을 만드는 것은 피해 야 합니다.

  • 테이블 중 하나에서 중복 정보를 반복적으로 입력 하 고 있습니까? 그렇다면 일대다 관계의 두 테이블로 테이블을 분할 해야 할 수도 있습니다.

  • 필드가 많은 테이블, 제한 된 수의 레코드 및 개별 레코드에 있는 여러 빈 필드가 있는지 여부 그렇다면 테이블을 다시 디자인 하 여 더 적은 필드와 레코드를 포함 하는 것을 고려 하세요.

  • 각 정보 항목이 가장 작은 유용한 부분으로 구분 되어 있습니까? 정보 항목을 보고, 정렬, 검색 또는 계산 해야 하는 경우 해당 항목을 해당 열에 입력 합니다.

  • 각 열에 테이블의 주제에 대 한 팩트가 포함 되어 있습니까? 테이블의 주제에 대 한 정보를 포함 하지 않는 열은 다른 테이블에 속해 있습니다.

  • 공통 필드 또는 세 번째 테이블을 기준으로 표시 되는 테이블 간의 모든 관계입니다. 일대일 및 일대다 관계에는 일반 열이 필요 합니다. 다대다 관계에는 세 번째 테이블이 필요 합니다.

제품 테이블 구체화

제품 판매 데이터베이스의 각 제품이 음료, condiments 또는 해산물 등의 일반 범주에 속하는 것으로 가정 합니다. Products 테이블에는 각 제품의 범주를 표시 하는 필드가 포함 될 수 있습니다.

데이터베이스의 디자인을 검사 하 고 구체화 한 후 범주에 대 한 설명을 해당 이름과 함께 저장 한다고 가정 합니다. 제품 테이블에 범주 설명 필드를 추가 하는 경우 범주 아래에 있는 각 제품에 대 한 각 범주 설명을 반복 해야 하므로이는 좋은 해결책이 아닙니다.

더 나은 해결 방법은 범주를 고유한 테이블 및 고유한 기본 키를 사용 하 여 데이터베이스에서 추적할 새 제목으로 만드는 것입니다. 그런 다음 Categories 테이블의 기본 키를 Products 테이블에 외래 키로 추가할 수 있습니다.

범주 및 제품 테이블에는 둘 이상의 제품이 포함 될 수 있지만 제품은 하나의 범주에만 속할 수 있습니다.

테이블 구조를 검토할 때는 반복 그룹에 주의 해야 합니다. 예를 들어 다음 열이 포함 된 테이블을 살펴봅니다.

  • 제품 ID

  • Name(이름)

  • 제품 ID1

  • Name1

  • 제품 ID2

  • Name2

  • 제품 ID3

  • Name3

여기서 각 제품은 열 이름 끝에 숫자를 추가 하 여 다른 사용자와는 다른 반복 되는 열의 그룹입니다. 이 방법으로 번호가 매겨진 열이 표시 되 면 디자인을 다시 검토 해야 합니다.

이러한 디자인에는 여러 가지 결점이 있습니다. 처음에는 제품 수에 대 한 상한선을 설정 하는 것이 좋습니다. 이 제한을 초과 하면 주요 관리 작업 인 테이블 구조에 새 열 그룹을 추가 해야 합니다.

또 다른 문제는 추가 열이 비어 있기 때문에 최대 제품 수보다 적은 수의 공급 업체가 공간을 낭비 한다는 것입니다. 이러한 디자인의 가장 심각한 결함은 제품 ID 또는 이름에 따라 테이블을 정렬 하거나 인덱싱하는 등 많은 작업을 수행 하기 어렵게 만드는 것입니다.

반복 그룹이 표시 될 때마다 디자인을 두 개의 테이블을 분할 하는 것과 긴밀 하 게 검토 합니다. 위의 예제에서는 공급 업체 1과 공급 업체 ID로 연결 된 두 개의 테이블을 사용 하는 것이 좋습니다.

맨 위로 이동

정규화 규칙 적용

디자인의 다음 단계로 데이터 정규화 규칙 (정규화 규칙이 라고도 함)을 적용할 수 있습니다. 이러한 규칙을 사용 하 여 테이블이 올바르게 구성 되어 있는지 확인 합니다. 데이터베이스 디자인에 규칙을 적용 하는 프로세스를 데이터베이스 정규화 라고 하며, 정규화만 합니다.

정규화는 모든 정보 항목을 표시 하 고 예비 디자인에 도달한 후에 가장 유용 합니다. 이 개념은 정보 항목이 적절 한 테이블로 분할 되었는지 확인 하는 데 도움이 됩니다. 정규화에서 수행할 수 없는 작업은 모든 올바른 데이터 항목을 먼저 확인 하는 것입니다.

각 단계에서 디자인을 "일반 양식" 이라고 하는 항목 중 하나에 표시 되도록 규칙을 연속적으로 적용 합니다. 다섯 가지 일반 양식은 널리 인정 되며, 다섯 번째 기본 폼을 통해 처음으로 사용할 수 있습니다. 이 문서는 대부분의 데이터베이스 디자인에 필요 하므로 처음 세 개를 확장 합니다.

첫 번째 기본 양식

첫 번째 기본 폼에는 해당 테이블의 모든 행과 열이 교차 하는 위치에 단일 값이 있으며 값 목록에는 없습니다. 예를 들어 금액을 두 개 이상 배치 하는 Price 필드를 사용할 수 없습니다. 행과 열이 교차 하는 각 부분을 셀 이라고 생각 하는 경우 각 셀에 하나의 값만 포함할 수 있습니다.

두 번째 기본 폼

두 번째 일반 폼에는 키의 일부가 아니라 전체 기본 키에 대 한 각 제외 열이 완전 하 게 종속 되어야 합니다. 이 규칙은 두 개 이상의 열로 구성 된 기본 키를 사용 하는 경우에 적용 됩니다. 예를 들어 다음과 같은 열을 포함 하는 테이블이 있고, 주문 ID와 제품 ID가 기본 키를 형성 한다고 가정 합니다.

  • 주문 ID (기본 키)

  • 제품 ID (기본 키)

  • 제품 이름

제품 이름은 제품 ID에 종속 되지만 주문 ID는 아니지만 전체 기본 키에 종속 되지 않으므로이 디자인은 두 번째 기본 폼을 위반 합니다. 테이블에서 제품 이름을 제거 해야 합니다. 다른 테이블 (제품)에 속해 있습니다.

세 번째 일반 양식

셋째 기본 폼에는 키가 아닌 모든 열이 전체 기본 키에 종속 될 필요는 없지만 키가 아닌 열은 서로 독립적 이어야 합니다.

이렇게 하는 또 다른 방법은 키가 아닌 각 열이 기본 키와 기본 키를 제외한 아무 것도 달라 야 한다는 것입니다. 예를 들어 다음 열을 포함 하는 테이블이 있다고 가정 합니다.

  • ProductID (기본 키)

  • Name(이름)

  • 제안

  • discount

할인이 제안 된 소매 가격 (SRP)에 따라 달라 지는 것으로 가정 합니다. 이 표는 키가 아닌 열 (할인율)이 키가 아닌 다른 열 SRP에 종속 되어 있기 때문에 세 번째 일반 양식에 위배 됩니다. 열 독립성은 다른 열에 영향을 주지 않고 키가 아닌 열을 변경할 수 있어야 한다는 것입니다. SRP 필드의 값을 변경 하면 할인이 변경 되므로 해당 규칙을 위반 하 게 됩니다. 이 경우 SRP에 대 한 키 입력을 하는 다른 테이블로 할인이 이동 해야 합니다.

맨 위로 이동

추가 도움이 필요하신가요?

Office 기술 확장
교육 살펴보기
새로운 기능 우선 가져오기
Office Insider 참여

이 정보가 유용한가요?

의견 주셔서 감사합니다!

피드백을 주셔서 감사합니다. Office 지원 에이전트와 연락하는 것이 도움이 될 것 같습니다.

×