

# Coleções de itens: como modelar relações de um para muitos no DynamoDB
<a name="WorkingWithItemCollections"></a>

No DynamoDB, uma *coleção de itens* é um grupo de itens que compartilham o mesmo valor de chave de partição, o que significa que os itens estão relacionados. As coleções de itens são o mecanismo primário para modelar relações de um para muitos no DynamoDB. As coleções de itens só podem existir em tabelas ou índices configurados para usar uma [chave primária composta](HowItWorks.CoreComponents.md#HowItWorks.CoreComponents.PrimaryKey).

**nota**  
Podem existir coleções de itens em uma tabela base ou em um índice secundário. Para obter mais informações especificamente sobre como as coleções de itens interagem com índices, consulte [Conjuntos de itens em índices secundários locais](LSI.md#LSI.ItemCollections).

Considere a seguinte tabela que mostra três usuários diferentes e seus inventários no jogo:

![\[Três coleções de itens diferentes com atributos distintos.\]](http://docs.aws.amazon.com/pt_br/amazondynamodb/latest/developerguide/images/item_collection.png)


Para alguns itens em cada coleção, a chave de classificação é uma concatenação composta de informações usadas para agrupar dados, como `inventory::armor`, `inventory::weapon` ou `info`. Cada coleção de itens pode ter uma combinação diferente desses atributos como a chave de classificação. O usuário `account1234` tem o item `inventory::weapons`, enquanto o usuário `account1387` não tem (porque ainda não o encontrou). O usuário `account1138` usa apenas dois itens para a chave de classificação (já que ainda não tem inventário) enquanto os outros usuários usam três.

O DynamoDB permite recuperar itens seletivamente dessas coleções para fazer o seguinte:
+ Recuperar todos os itens de um usuário específico
+ Recuperar apenas um item de um usuário específico
+ Recuperar todos os itens de um tipo específico pertencentes a determinado usuário

## Acelerar as consultas organizando os dados com coleções de itens
<a name="WorkingWithItemCollections.Example"></a>

Nesse exemplo, cada um dos itens nas três coleções representa um jogador e o modelo de dados que escolhemos, com base nos padrões de acesso do jogo e do jogador. De quais dados o jogo precisa? Quando ele precisa desses dados? Com que frequência ele precisa dos dados? Qual é o custo de fazer isso dessa maneira? Essas decisões de modelagem de dados foram tomadas com base nas respostas a essas perguntas.

Nesse jogo, há uma página diferente apresentada ao jogador para o inventário de armas e outra página para a armadura. Quando o jogador abre o inventário, as armas são mostradas primeiro porque queremos que a página seja carregada muito rapidamente, enquanto as páginas de inventário subsequentes podem ser carregadas depois disso. Como cada um desses tipos de item pode ser bastante grande à medida que o jogador adquire mais itens no jogo, decidimos que cada página de inventário seria seu próprio item na coleção do jogador no banco de dados. 

A seção a seguir fala mais sobre como você pode interagir com as coleções de itens por meio da operação `Query`.

**Topics**
+ [Acelerar as consultas organizando os dados com coleções de itens](#WorkingWithItemCollections.Example)