Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Me surgiu hoje uma necessidade e não sei como fazer.
Tenho a entrada de 16 times no meu banco de dados.
Onde 8 são em uma chave pre estabelecida e 8 em outra chave, contando por pontuação do ano anterior temos do 1 ao 8 em um grupo e 1 ao 8 no segundo grupo.
como eu montaria a tabela mata mata automaticamente onde o 1 de um grupo enfrenta o 8 do outro, 2 enfreta o 7 e assim por diante.
ai teremos oitavas, quartas, semi e final já tudo estabelecido.
A melhor forma seria eu criar uma tabela para cada fase ou na mesma tabela e dar um codigo para cada fase?
Relacionamento muitos-para-muitos. Você deveria ir por esse caminho:
(# para chave primária, & para estrangeira)
torneio - #id, nome
grupos - #id, nome
fases - #id, &id_torneio, numero_etapa
partidas - #id, &id_fase, data, &id_grupo1, &id_grupo2
vencedores - #id, &id_partida, &id_grupo
Exemplo, supondo um torneio com 2 etapas (se eu fosse fazer com mais o exemplo seria muito grande, mas é só repetir a lógica):
A x B etapa 2
/ \
B x C -------------- A x D etapa 1
Torneios:
+-----+--------------------------------------+
| #id | nome |
+-----+--------------------------------------+
| 3 | Liga dos Amadores de Pindamonhangaba |
+-----+--------------------------------------+
Grupos/times:
+-----+---------------------------------------------+
| #id | nome |
+-----+---------------------------------------------+
| 1 | Time dos campeões (A no exemplo) |
| 2 | Bar sem lona (B no exemplo) |
| 3 | Seu Madruga Futebol Clube (C no exemplo) |
| 4 | Frango assado com farofa (D no exemplo) |
+-----+---------------------------------------------+
Fases:
+-----+------------+--------------+
| #id | id_torneio | numero_etapa |
+-----+------------+--------------+
| 10 | 3 | 1 |
| 12 | 3 | 2 |
+-----+------------+--------------+
Partidas:
+-----+---------+------------+-----------+-----------+
| #id | id_fase | data | id_grupo1 | id_grupo2 |
+-----+---------+------------+-----------+-----------+
| 5 | 10 | 23/01/2018 | 2 | 3 |
| 6 | 10 | 23/01/2018 | 1 | 4 |
| 7 | 12 | 30/01/2018 | 1 | 2 |
+-----+---------+------------+-----------+-----------+
Vencedores:
+-----+---------+----------+
| #id | partida | id_grupo |
+-----+---------+----------+
| 20 | 5 | 2 |
| 21 | 6 | 1 |
+-----+---------+----------+
Observe que a partida final ainda não aconteceu, pois é no dia 30.
Por isso o torneio não tem um vencedor. Passou por somente uma etapa/fase.
Aguardamos ansiosos pelo resultado deste evento internacional...
Obs: a primeira coluna (id) das tabeas é somente para exemplificar. Coloquei números aleatórios mesmo. É uma chave primária com auto_increment.
Espero não ter errado nenhum número, pq fiz na mão mesmo, mas acho q tá tudo certinho...
EDIT: faltou o id_grupo na tabela de vencedores (em cada partida há um vencedor)... agora está inserido.
Estude os relacionamentos e normalização de tabelas.
Obrigado Matheus já me deu um norte para o negocio.
Seria melhor começar à estudar lógica de programação, no meu ponto de vista, muitas pessoas entram no fórum para ser servido na cama, muitos ralam e ajudam, mas eu sempre busco estudar, e garanto que faça o mesmo, por que muitas pessoas aqui no iMasters deixam de ajudar por comodismo de pessoas... zzZZZZzzzZZZzz (não querendo dizer que você só absorve, mas creio que isso, na primeira aula de lógica de programação, você aprende.)