mbpp 2 Denunciar post Postado Agosto 8, 2014 Oi tudo bem? Espero que me possam aconselhar a melhor forma de poder ter o resultado pretendido. Tenho um formulário que consiste nos utilizadores preencherem a disponibilidade para fazer treino fisico, basicamente no primeiro campo eles selecionam quanto tempo por dia pode treinar (1 hora, 2 horas, etc) e o segundo campo sao várias caixas de selecão que sao os dias da semana, de segunda-feira a domingo, ele poderá selecionar mais que uma. A minha intenção seria só usar uma tabela, que seria essa abaixo: disponibilidade: - id_disponibilidade; - id_aluno; - tempo_dia; - dias_semana; Mas o problema é que os dias da semana serão multi-registos, e uma outra opção seria criar outra tabela, mas não queria ter que criar outra tabela so por causa dos dias da semana, existe uma forma de poder inserir todos esses dados numa so coluna (dias_semana)? Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Agosto 8, 2014 Buenas tchê. Você pode inserir os dados como um array. O insert ficaria assim: insert into disponibilidade (id_disponibilidade, id_aluno, tempo_dia, dias_semana) values (1,1,3,"2,3,4,5") Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Agosto 8, 2014 Sim isso é verdade, mas o problema depois seria para recolher os dados para pdoer depois querer editar. Talvez esteja a complicar, mas obrigado Marlon. Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Agosto 8, 2014 Aí tu vai ter que resolver isso no PHP. Mas não é muito complicado não. Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Agosto 8, 2014 Ok, obrigado Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Agosto 8, 2014 A resposta pode ser Normalização de Dados. Você cria uma tabela com os dias da semana: CREATE TABLE dias_semana ( id TINYINT UNSIGNED AUTO_INCREMENT, dia VARCHAR(7) NOT NULL, PRIMARY KEY (id) ) Depois cria outra tabela para cruzar as informações da tabela `disponibilidade` com a `dias_semana`: CREATE TABLE disponibilidade_x_dia_semana ( id_disponibilidade INT UNSIGNED NOT NULL, # deve ser exatamente do mesmo tipo do campo da tabela disponibilidade id_dia_semana TINYINT UNSIGNED AUTO_INCREMENT, # também deve ser exatamente igual ao campo da tabela dias_semana PRIMARY KEY (id_disponibilidade, id_dia_semana) ) Aí você tem o cadastro da disponibilidade e depois insere os dias do treino. Para consultar, basta utilizar JOIN: SELECT d.id_disponibilidade, d.id_aluno, d.tempo_dia, s.dia AS dia_semana FROM disponibilidade AS d INNER JOIN disponibilidade_x_dia_semana AS x ON x.id_disponibilidade = d.id_disponibilidade INNER JOIN dias_semana AS s ON s.id = x.id_dia_semana WHERE d.id_aluno = 1 # ou retire o WHERE para ver todo mundo PS: Ainda estou estudando sobre normalização de dados, não sei se dessa forma pode ser considerado normalização, hehe. Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Agosto 11, 2014 Agredeço pela sua participação lokaodomau, eu sei que essa é uma das soluções, mas como já tinha referido no inicio do post, não queri abordar por essa solução que abordou. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 11, 2014 Eu iria pela solução do lokaodomau , se duvida comece a pensar como responder perguntas do tipo Quantos "utilizadores" tem treinamento numa quarta-feira ? E veja que tipo de modelagem tem queries mais simples. E mais pensaria em modelar por data e não dia da semana, existem feriados, férias etc. Compartilhar este post Link para o post Compartilhar em outros sites
mbpp 2 Denunciar post Postado Agosto 11, 2014 Eu iria pela solução do lokaodomau , se duvida comece a pensar como responder perguntas do tipo Quantos "utilizadores" tem treinamento numa quarta-feira ? E veja que tipo de modelagem tem queries mais simples. E mais pensaria em modelar por data e não dia da semana, existem feriados, férias etc. Aqui ninguem está duvidando ninguem Motta...Não estou a dizer que a solução do lokaodomau seja a melhor ou pior, eu simplesmente fiz uma pergunta relativa a hipotese de poder inserir os dados todos numa coluna, agora quanto á melhor solução é outra questão que não foi posta nesse post. Mas agradeço pelo seu contributo. Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Agosto 11, 2014 Desculpe @mbpp, por qualquer equivoco ou mal entendido de minha parte, primeiramente pensei ser um problema quanto a informação do banco de dados, pois foi postado no fórum do MySQL, mas acredito que simplificando a base de dados, torna o trabalho mais fácil para qualquer pessoa, abrindo um leque maior de possibilidades e mais agilidade para atingir o objetivo, independente do tamanho do sistema. Compartilhar este post Link para o post Compartilhar em outros sites