MySQL - Armazenando inventário de caracteres

7

Qual é a melhor maneira de armazenar o inventário do personagem (consistindo em cada item com um valor para o tipo e quantidade). O único método em que consigo pensar é usar o tipo de campo "texto" e depois analisar o valor desse valor sempre que o inventário for carregado. Existe um método ou estrutura de dados melhor?

jSherz
fonte
você pode simplesmente dar uma opinião geral sobre o seu jogo? será baseado em navegador ou haverá aplicativo cliente? quantos clientes podem se conectar ao seu servidor? qual idioma você está usando no servidor?
Jun1
3
Eu diria que "texto" é a pior escolha. Construir relações entre "item" e tabelas "jogador" ... no geral, este é provável melhor perguntado sobre em: dba.stackexchange.com
bummzack
Obrigado pelo conselho. Eu não estava ciente do dba.stackexchange.com - obviamente, seria uma escolha melhor!
jSherz

Respostas:

6

Leia sobre o design padrão do banco de dados. Formas especificamente normalizadas. Uma abordagem seria ter 3 tabelas:

personagem com um character_id e outros dados

itens com um item_id e outros dados (nomes, peso, etc ...)

inventário com caracter_id, item_id, quantidade.

O inventário de um jogador pode ser expresso como "SELECT items.name FROM items, inventário WHERE inventário.character_id = 'THECHARSID'" É claro que, com base em suas outras perguntas, eu provavelmente sugeriria o uso de um ORM que lida com isso para você. Veja Relacionamentos e retornos em algo como SQLAlchemy.

Se você precisar do conceito de 'slots' do inventário, essa é outra coluna na tabela de inventário. (IE: O personagem 32423 possui um item do tipo 832 no slot 0) (slot principal) para uma coluna item_base que define as estatísticas básicas que todos os itens desse tipo têm em comum.

Doug-W
fonte
Obrigado pela ajuda. Vou analisar ORM e SQLAlchemy.
precisa saber é o seguinte
2
Se você ainda estiver decidindo qual produto do servidor SQL usar, verifique o PostgreSQL (código aberto e gratuito, que possui uma comunidade muito povoada com porcas de otimização ) - já que você pode precisar de vários servidores, você provavelmente estará interessado em saber que o PostgreSQL agora possui recursos de replicação integrados e foi adequado para lidar com grandes bancos de dados em ambientes de alta demanda por um longo tempo: postgresql.org
Randolf Richardson