Vinculando duas entradas em uma lista [fechada]

-1

Eu sou um jogador DOTA 2 afiado. É um videogame de equipe de 5-a-lado, onde você joga um de um pool de cerca de 100 heróis com diferentes habilidades e pontos fortes e fracos.

Costumo jogar capitão de equipe e é importante escolher heróis que se complementam e exponham vulnerabilidades nas escolhas do outro capitão.

Eu quero criar um banco de dados de amigos e inimigos pessoais, possivelmente no Excel ou no Access, mas pode haver outras soluções.

Como posso fazer isso se eu marcar dois heróis como contadores? Venge & gt; Enigma, como eu posso fazer isso uma vez, então se eu vejo Venge eu vejo Enigma e se eu vejo Enigma eu vejo Venge.

por exemplo.

  • Contadores de Venge Enigma
  • Enigma contra-atacada por Venge

ou

  • Wisp combina com CK
  • CK combina com o Wisp

Eu só quero inserir os dados para cada contador / combinação uma vez.

Para colocar de outra forma, eu gostaria de algo como http://www.mobacounter.com/dota/heroes , mas minha própria lista no meu próprio PC.

Suspeito que isso seja fácil, mas é muito difícil para o Google responder quando você não sabe como colocar a pergunta em questão.

Iain
fonte

Respostas:

2

Eu não tenho idéia sobre esses programas da Microsoft; mas eu posso lhe dar algum feedback sobre o design.

Você basicamente precisa de uma tabela para todos os heróis e seus atributos e outra tabela que define quem derrota quem.

Isto é como fazê-lo no postgresql. Provavelmente não é exatamente o que você quer, mas talvez você possa extrair algumas informações úteis a partir dele:

create table hero (name varchar primary key, description varchar, size numeric);
create table defeats (stronger varchar references hero(name), weaker varchar references hero(name), reason varchar, constraint winlose_pk primary key (stronger,weaker));

Agora é hora de preencher as tabelas:

insert into hero values ('rock', 'big and shiny', 5);
insert into hero values ('scissors', 'sharp and shiny', 4);
insert into hero values ('paper', 'white but dirty', 8);
insert into hero values ('noob', 'defeated by everything', 2);

E agora a tabela de relacionamento:

insert into defeats values ('rock', 'scissors', 'crushing defeat');
insert into defeats values ('paper', 'rock', 'enveloped');
insert into defeats values ('scissors', 'paper', 'cut');
insert into defeats values ('rock', 'noob', 'stone to the head');
insert into defeats values ('paper', 'noob', 'finger got cut');
insert into defeats values ('scissors', 'noob', 'would not stop runnning');
insert into defeats values ('noob', 'noob', 'self explanatory');

Agora você tem suas duas tabelas:

   name   |      description       | size 
----------+------------------------+------
 rock     | big and shiny          |    5
 scissors | sharp and shiny        |    4
 paper    | white but dirty        |    8
 noob     | defeated by everything |    2



 stronger |  weaker  |         reason          
----------+----------+-------------------------
 rock     | scissors | crushing defeat
 paper    | rock     | enveloped
 scissors | paper    | cut
 rock     | noob     | stone to the head
 paper    | noob     | finger got cut
 scissors | noob     | would not stop runnning
 noob     | noob     | self explanatory

Agora você poderia, por exemplo, checar quem é o forte contra usando esta consulta:

select * from defeats where stronger='rock';

 stronger |  weaker  |      reason       
----------+----------+-------------------
 rock     | scissors | crushing defeat
 rock     | noob     | stone to the head
brunch875
fonte
Obrigado! Parece que vou ter que fazer isso no Access. Vou precisar de três tabelas: heróis, contadores e sinergias. A tabela Synergies será diferente, já que estou dizendo que dois heróis trabalham juntos. Talvez apenas duas colunas (herói 1 e herói 2) e eu posso consultar se um herói aparece em qualquer coluna?
Iain
1
Exatamente! Estou feliz que você tenha entendido. Mas receio que haja algum pequeno problema com a tabela Sinergias. Você poderia adicionar A funciona bem com B e então B funciona bem com A ... Eu tenho que pensar nisso.
brunch875
1
Infelizmente não há alternativa de design para isso. Você só precisa ter cuidado para não inserir "duplicatas reversas". Marque este aqui: stackoverflow.com/questions/4219979/… O que aponta para este artigo interessante: explicextended.com/2009/03/07/selecting-friends
brunch875