다음 섹션에서는 데이터베이스 테이블 관계가 디자인된 방법을 보여 있습니다. 개체 이름이 제공되므로 Northwind 2.0 Starter Edition 데이터베이스에서 쉽게 검사할 수 있습니다.
6개의 테이블과 테이블 간의 관계를 보여 주는 관계 다이어그램을 열려면 데이터베이스 도구 > 관계를 선택합니다.
이 다이어그램은 6개의 테이블을 모두 보여 줍니다. 다이어그램에서 테이블 사이의 줄은 테이블 간의 관계를 식별합니다. 줄 끝에 있는 1 및 무한대 기호(∞)는 관계의 한쪽(예: 한 고객)과 관계의 다방면을 나타냅니다. 예를 들어 한 고객이 많은 주문을 제출합니다. 자세한 내용은 테이블 관계 가이드를 참조하세요.
다음 원칙은 Northwind 2.0 Starter Edition의 테이블과 일반적으로 테이블에 적용됩니다.
기본 키 테이블의 각 레코드를 고유하게 식별합니다. 모든 테이블에는 기본 키가 있습니다. 관계 다이어그램에서 키 기호는 이러한 기본 키를 식별합니다. 기본 키 명명 규칙은 에 있는 테이블에 대해 이름이 지정됩니다(예: "TableNameID").
AutoNumber 필드를 기본 키로 추가를 참조하세요.
효율성 더 나은 성능과 더 효율적인 스토리지를 위해 기본 키는 숫자여야 합니다. 또한 Access에서 각 새 레코드의 기본 키에 대한 고유한 새 값을 자동으로 생성하도록 하는 것이 더 편리합니다. AutoNumber 데이터 형식에는 두 가지 특성이 모두 있습니다. AutoNumbers는 의미가 없는 숫자이며 다른 용도로는 사용할 수 없습니다. 자세한 내용은외신 키 테이블에는 데이터베이스의 다른 테이블과 관련된지 여부에 따라 하나 이상의 외장 키가 있을 수도 있습니다. 외래 키에는 관련 테이블의 기본 키에 있는 값에 해당하는 값이 포함됩니다.
고유 인덱스 테이블의 다른 필드에는 고유한 인덱스(예: OrderStatus.StatusCode)가 있을 수도 있습니다. StatusCode 자체가 기본 키가 아니더라도 OrderStatus 테이블에 두 개의 주문 상태가 동일한 코드를 갖는 것은 비논리적입니다. 고유 인덱스는 Access에 해당 필드의 중복 값을 방지하도록 지시합니다.
고유하지 않은 인덱스 또한 테이블에는 검색 속도를 높이기 위한 인덱스가 있을 수 있으며 이러한 필드에 대한 정렬(예: Orders.OrderDate)도 있습니다. 같은 날에 많은 주문을 할 수 있으며 주문 날짜를 검색하고 정렬하려는 경우가 많습니다. 검색 및 정렬 속도를 높이기 위해 해당 필드에 고유하지 않은 인덱스가 있습니다.
테이블 및 필드 이름 원하는 방식으로 이름을 지정할 수 있지만 일관성이 중요합니다. 테이블 및 필드 이름은 둘 사이에 공백이 없는 하나 이상의 단어와 슬래시(/), 파운드 기호(#) 또는 백분율(%)과 같은 특수 문자가 없어야 합니다. 예를 들어 OrderDate를 사용하지만 주문 날짜는 사용하지 않습니다. OrderNumber 또는 OrderNo를 사용하지만 Order#은 사용하지 않습니다.
CamelCase 단어를 대문자로 표시하여 이름의 개별 부분(예: OrderDate)을 강조 표시하지만 Orderdate 또는 orderDate는 강조 표시하지 않습니다.
필수 값 이 원칙은 애플리케이션에 대한 비즈니스 규칙의 중요성을 높입니다. 일부 필드에는 값이나 특정 값이 필요한 경우도 있습니다. 예를 들어 주문한 고객을 모르고 주문이 얼마나 좋은가요? 즉, CustomerID는 Orders 테이블에 필요한 필드입니다.
계산 필드 Access는 테이블의 계산 필드(예: Employees.FullName 필드)를 지원합니다. 테이블이 아닌 쿼리에서 계산 필드를 만드는 것이 좋습니다.
첨부 파일 필드 Access는 직원 사진을 보관하는 Employees.Picture와 같은 첨부 파일 필드를 지원합니다. 첨부 파일은 이미지, 문서, 전자 메일 및 기타 이진 정보를 저장할 수 있습니다. 첨부 파일은 데이터베이스에서 많은 공간을 차지합니다. 대신 파일 서버에 첨부 파일을 저장하는 것이 더 효율적입니다.
다중값 필드 이름에서 알 수 있듯이 다중값 필드는 하나 이상의 값을 단일 필드(예: Employees.Title)에 저장합니다. 특히 데이터베이스를 업사이징하려는 경우 사용하지 않는 것이 좋습니다. 대부분의 다른 데이터베이스 시스템에는 데이터베이스가 없으므로 많은 재작업이 필요합니다.
데이터 형식에 대한 자세한 내용은 데이터 형식 및 필드 속성 소개를 참조하세요.
이 섹션에서는 각 테이블의 가장 중요한 기능에 대해 설명합니다. 테이블 디자인을 검토하려면 탐색 창에서 테이블을 선택하고 마우스 오른쪽 단추로 클릭하고 디자인 뷰를 선택하거나 데이터베이스 도구 > 관계를 선택한 다음 테이블 개체를 마우스 오른쪽 단추로 클릭합니다. 자세한 내용은 테이블 소개를 참조하세요.
중요: 명명 충돌을 일으킬 수 있는 예약된 단어를 사용하지 마세요. 자세한 내용은 Access 예약 단어 및 기호에 대해 알아보기를 참조하세요.
직원 테이블
이 표에서는 Northwind의 직원에 대한 정보를 저장합니다.
Fields |
설명 |
FirstName, LastName |
두 이름 모두 필수이며, Northwind에서는 함께 고유한 조합이어야 합니다. 테이블 디자인에서 인덱스 대화 상자를 열면 FirstName + LastName에 고유한 인덱스가 있음을 확인할 수 있습니다. FirstName 및 LastName은 고유하게 인덱싱되므로 Northwind 테이블은 동일한 이름의 직원 두명을 저장할 수 없습니다. 다른 상황에서는 다른 비즈니스 규칙을 사용할 수 있습니다. |
FullNameFNLN, FullNameLNFN |
계산 필드의 식 속성을 확인하여 Access가 계산 필드의 값을 결합하는 방법을 확인합니다. 중간 이니셜을 포함하려면 구성 요소 간에 적절한 간격을 사용하여 기존 식에 추가합니다. |
전화 필드 |
전화의 비즈니스 규칙은 직원 선호도가 서비스 유형보다 더 관련성이 있다는 것입니다. 따라서 셀, 사무실, 집 등이 아닌 기본 전화 번호와 보조 전화 번호가 사용됩니다. |
인사말 |
인사말은 짧은 텍스트 필드입니다. Access의 다중값 필드 기능을 설명하기 위해 미리 정의된 값의 편집 가능한 목록이 있는 콤보 상자입니다. 이와 같은 짧고 정적 목록은 종종 다중값 필드의 후보가 되는데, 이는 많이 변경되지 않기 때문입니다. |
JobTitle |
JobTitle은 또 다른 필수 필드입니다. |
고객 테이블
이 표에는 Northwind 고객에 대한 정보가 저장됩니다.
Fields |
설명 |
CustomerName |
Northwind의 고객은 기업이며 고객 이름이 필요합니다. 하지만 직원 이름과 달리 고유하게 인덱싱되지 않으므로 두 명 이상의 고객이 같은 이름을 가질 수 있습니다. |
PrimaryContactFirstName, PrimaryContactLastName, PrimaryContactJobTitle |
고객이 기본 연락처로 한 명의 개인이 없을 수 있으므로 기본 연락처의 이름과 성 및 직위가 필요하지 않습니다. 연락처는 주문에 대한 직할 수 없습니다. |
BusinessPhone |
Northwind에는 각 고객에 대해 하나의 전화 번호만 필요하지만, 이렇게 하면 고객 또는 고객의 연락처에 대해 여러 전화 번호를 캡처할 수 없습니다. 실제 상황에서는 일반적으로 연락처 정보에 더 복잡한 비즈니스 규칙이 적용됩니다. |
주소, 도시 상태, ZIP |
Northwind는 고객에게 주문을 발송하기 위한 주소가 필요합니다. 고객에 대한 일반 주소는 하나뿐입니다. 실제 상황에서 고객은 종종 별도의 청구, 배송 또는 기타 주소를 가지고 있습니다. organization 대한 다른 비즈니스 규칙에는 추가 필드가 필요합니다. |
참고 |
메모 필드는 최대 1GB의 텍스트를 저장하는 긴 텍스트 데이터 형식입니다. 이를 통해 후속 주문 상황에서 사용할 고객에 대한 자세한 의견을 입력할 수 있습니다. |
Orders 테이블
이 표에서는 Northwind의 주문에 대한 정보를 저장합니다.
Fields |
설명 |
OrderDate, ShippedDate, PayDate |
주문에는 세 날짜가 필요합니다. 모두 날짜/시간 데이터 형식이지만 두 가지 형식이 있습니다. OrderDate에는 날짜와 시간이 모두 있습니다. 하루 중 다른 부분에 대한 주문 볼륨을 분석하는 데 관심이 있을 수 있기 때문입니다. 다른 두 날짜의 경우 날짜만 필요합니다. ShippedDate 및 PayDate에 대한 테이블 유효성 검사 규칙은 해당 날짜가 OrderDate 이전이 아닌지 확인합니다. |
OrderStatusID |
주문 상태 주문이 Northwind 워크플로에 있는 위치를 나타냅니다. 주문은 4단계로 진행됩니다. 신규 -> 송장 - > 배송됨 - > 닫힘.현재 OrderStatus의 외래 키는 OrderStatus의 조회 테이블에서 OrderStatusID를 사용합니다. 상태 조회 테이블을 사용하면 미리 정의된 4개의 상태만 주문에 할당할 수 있습니다. |
주문 세부 정보 테이블
이 표에서는 Northwind의 주문 세부 정보에 대한 정보를 저장합니다.
Fields |
설명 |
OrderID |
OrderDetails 테이블의 각 품목은 Orders 테이블의 한 Order에 속해야 합니다. OrderID는 해당 주문을 식별하는 외래 키입니다. 앞에서 설명한 것처럼 하나 이상의 품목이 포함된 하나의 순서는 일대다 관계를 보여 줍니다. |
제품 ID |
OrderDetails 테이블의 각 레코드에는 주문된 제품에 대한 ProductID가 포함됩니다. ProductID는 OrderDetails 테이블의 외래 키로, 해당 제품을 해당 순서로 식별합니다. 이는 일대다 관계이기도 합니다. |
OrderID+ ProductID |
Employees 테이블에서 보았듯이 여러 필드에는 고유한 인덱스가 있을 수 있습니다. OrderDetails 테이블의 OrderID+ProductID에 대한 고유 인덱스는 각 주문에 제품이 한 번만 포함되도록 합니다. 리본에서 Indexes 속성 시트를 열면 이 고유한 인덱스를 볼 수 있습니다. |
제품 테이블
이 표에서는 Northwind의 제품에 대한 정보를 저장합니다.
Fields |
설명 |
Productcode |
기본 키인 ProductID 외에도 Northwind 제품에는 인간 친화적이고 고유하게 인덱싱된 제품 코드가 있습니다. 직원들은 일반적으로 기본 키 값이 아닌 제품 코드를 참조합니다. 제품 코드는 범주 지정과 숫자(예: "음료"의 경우 B-1, 제품 1)로 구성된 복합 값입니다. |
제품 이름, 제품 설명 |
짧은 텍스트 제품 이름 외에도 긴 텍스트 설명이 제품에 적용됩니다. 이 값은 카탈로그 설명에서 사용하거나 고객 질문에 답변하는 데 사용할 수 있습니다. |
UnitPrice |
모든 제품은 데이터베이스를 기능의 쇼케이스로 간소화하는 각 항목에 대한 단가로 판매됩니다. 대부분의 실제 상황에서는 가격 책정이 훨씬 더 복잡한 경우가 많습니다. |
참고 항목