

# NoSQL Workbench용 샘플 데이터 모델
<a name="workbench.SampleModels"></a>

모델 제작자 홈 페이지에는 NoSQL Workbench와 함께 제공되는 여러 샘플 모델이 나와 있습니다. 이 섹션에서는 이러한 모델 및 사용 가능한 용도에 대해 설명합니다.

**Topics**
+ [직원 데이터 모델](#workbench.SampleModels.EmployeeDataModel)
+ [토론 포럼 데이터 모델](#workbench.SampleModels.DiscussionForumDataModel)
+ [음악 라이브러리 데이터 모델](#workbench.SampleModels.MusicLibraryDataModel)
+ [스키장 데이터 모델](#workbench.SampleModels.SkiResortDataModel)
+ [신용카드 제안 데이터 모델](#workbench.SampleModels.CreditCardOffersDataModel)
+ [북마크 데이터 모델](#workbench.SampleModels.BookmarksDataModel)

## 직원 데이터 모델
<a name="workbench.SampleModels.EmployeeDataModel"></a>

이 데이터 모델은 소개 모델입니다. 고유한 별칭, 이름, 성, 직책, 상사 및 역량 같은 직원의 기본 세부 정보를 나타냅니다.

이 데이터 모델에서는 두 가지 이상의 역량 보유와 같은 복잡한 속성 처리 등의 몇 가지 기법을 보여줍니다. 또한 이 모델은 보조 인덱스인 DirectReports를 사용하여 얻은 상사 및 부하 직원들을 통한 일대다 관계의 예입니다.

이 데이터 모델에서 제공되는 액세스 패턴은 다음과 같습니다.
+ `Employee` 테이블에서 제공되는 직원의 로그인 별칭을 사용하여 직원 레코드 검색
+ Employee 테이블의 글로벌 보조 인덱스인 `Name`에서 제공되는 이름별로 직원 검색
+ Employee 테이블의 글로벌 보조 인덱스인 `DirectReports`에서 제공되는 상사의 로그인 별칭을 사용하여 상사의 모든 부하 직원 검색

## 토론 포럼 데이터 모델
<a name="workbench.SampleModels.DiscussionForumDataModel"></a>

이 데이터 모델은 토론 포럼을 나타냅니다. 이 모델을 사용하여 고객은 개발자 커뮤니티에 참여하고, 질문하고, 다른 고객의 게시물에 댓글을 달 수 있습니다. 각 AWS 서비스에는 전용 포럼이 있습니다. 누구라도 포럼에서 메시지를 게시하여 새 토론 스레드를 시작할 수 있으며 각 스레드는 여러 개의 회신을 받습니다.

이 데이터 모델에서 제공되는 액세스 패턴은 다음과 같습니다.
+ `Forum` 테이블에서 제공되는 포럼의 이름을 사용하여 포럼 레코드 검색
+ `Thread` 테이블에서 제공되는 포럼에 대한 특정 스레드 또는 모든 스레드 검색
+ Reply 테이블의 글로벌 보조 인덱스인 `PostedBy-Message-Index`에서 제공되는 게시 사용자의 이메일 주소를 사용하여 회신 검색

## 음악 라이브러리 데이터 모델
<a name="workbench.SampleModels.MusicLibraryDataModel"></a>

이 데이터 모델은 광범위한 노래 모음이 있는 음악 라이브러리를 나타내며 가장 많이 다운로드된 노래를 거의 실시간으로 보여줍니다.

이 데이터 모델에서 제공되는 액세스 패턴은 다음과 같습니다.
+ `Songs` 테이블에서 제공되는 노래 레코드 검색
+ `Songs` 테이블에서 제공되는 노래에 대한 특정 다운로드 레코드 또는 모든 다운로드 레코드 검색
+ `Song` 테이블에서 제공되는 노래에 대한 특정 월별 다운로드 횟수 레코드 또는 모든 월별 다운로드 횟수 레코드 검색
+ `Songs` 테이블에서 제공되는 노래에 대한 모든 레코드(노래 레코드, 다운로드 레코드 및 월별 다운로드 횟수 레코드 포함) 검색
+ Songs 테이블의 글로벌 보조 인덱스인 `DownloadsByMonth`에서 제공되는 가장 많이 다운로드된 노래 검색

## 스키장 데이터 모델
<a name="workbench.SampleModels.SkiResortDataModel"></a>

이 데이터 모델은 각 스키 리프트에서 매일 수집된 광범위한 데이터 모음이 있는 스키장을 나타냅니다.

이 데이터 모델에서 제공되는 액세스 패턴은 다음과 같습니다.
+ `SkiLifts` 테이블에서 제공되는 주어진 스키 리프트 또는 스키장 전체에 대한 모든 데이터(동적 및 정적 데이터) 검색
+ `SkiLifts` 테이블에서 제공되는 특정 날짜에서의 스키 리프트 또는 스키장 전체에 대한 모든 동적 데이터(고유 리프트 탑승자, 적설량, 눈사태 위험 및 리프트 상태 포함) 검색
+ `SkiLifts` 테이블에서 제공되는 특정 스키 리프트에 대한 모든 정적 데이터(리프트가 숙련된 탑승자 전용인 경우 수직 피트, 리프트 상승 및 리프트 탑승 시간 포함) 검색
+ SkiLifts 테이블의 글로벌 보조 인덱스인 `SkiLiftsByRiders`에서 제공되는 총 고유 탑승자별로 정렬된 특정 스키 리프트 또는 스키장 전체에 대해 기록된 데이터의 날짜 검색

## 신용카드 제안 데이터 모델
<a name="workbench.SampleModels.CreditCardOffersDataModel"></a>

이 데이터 모델은 신용 카드 제안 애플리케이션에서 사용됩니다.

신용 카드 공급자는 시간이 지남에 따라 제안을 생성합니다. 이러한 제안에는 수수료 없이 잔액 이체, 신용 한도 증가, 낮은 금리, 캐시백 및 항공사 마일리지가 포함됩니다. 고객이 이러한 제안을 수락하거나 거부한 후에 각각의 제안 상태가 그에 따라 업데이트됩니다.

이 데이터 모델에서 제공되는 액세스 패턴은 다음과 같습니다.
+ 기본 테이블에서 제공되는 `AccountId`를 사용하여 계정 레코드 검색
+ 보조 인덱스인 `AccountIndex`에서 제공되는 몇 가지 예상된 항목이 있는 모든 계정 검색
+ 기본 테이블에서 제공되는 `AccountId`를 사용하여 계정 및 해당 계정과 연관된 모든 제안 레코드 검색
+ 기본 테이블에서 제공되는 `AccountId` 및 `OfferId`를 사용하여 계정 및 해당 계정과 연관된 특정 제안 레코드 검색
+ 보조 인덱스인 `ACCEPTED/DECLINED`에서 제공되는 `OfferType`, `AccountId` 및 `OfferType`를 사용하여 계정과 연관된 특정 `Status`의 모든 `GSI1` 제안 레코드 검색
+ 기본 테이블에서 제공되는 `OfferId`를 사용하여 제안 및 연관된 제안 항목 레코드 검색

## 북마크 데이터 모델
<a name="workbench.SampleModels.BookmarksDataModel"></a>

이 데이터 모델은 고객의 북마크를 저장하는 데 사용됩니다.

한 고객이 여러 북마크를 보유할 수 있으며 하나의 북마크에 여러 고객이 소속될 수 있습니다. 이 데이터 모델은 다대다 관계를 나타냅니다.

이 데이터 모델에서 제공되는 액세스 패턴은 다음과 같습니다.
+ 이제 `customerId`별 단일 쿼리를 통해 북마크뿐만 아니라 고객 데이터도 반환할 수 있습니다.
+ 쿼리 `ByEmail` 인덱스는 이메일 주소별로 고객 데이터를 반환합니다. 북마크는 이 인덱스에 의해 검색되지 않습니다.
+ 쿼리 `ByUrl` 인덱스는 URL별로 북마크 데이터를 가져옵니다. 동일한 URL을 여러 고객이 북마크할 수 있기 때문에 인덱스용 정렬 키로서 customerId를 제공하고 있습니다.
+ 쿼리 `ByCustomerFolder` 인덱스는 각 고객에 대한 폴더별로 북마크를 가져옵니다.