Pedroplay 0 Denunciar post Postado Abril 15, 2012 Estou no final do meu curso Técnico de Informática e meu grupo decidiu desenvolver um projeto final de um Sistema Acadêmico para a própria instituição. Sou responsável pelo Banco de Dados e estou com dúvidas sobre o mesmo. Criei 4 tabelas no MySQl: TABELA PROFESSOR id_prof int primary key auto_increment nome_prof varchar(255) matricula int TABELA DISCIPLINA id_disc int primary key auto_increment nome_disc varchar(255) carga_horaria_total int TABELA TURMA id_turma int primary key auto_increment numero_turma int turno varchar(255) qtd_alunos int E uma tabela guardará todas as chaves primárias das tabelas anteriores referenciando cada uma. Ela servirá para fazer o vínculo entre que professor lecionará qual disciplina em cada turma. TABELA PTD id_prof int id_disc int id_turma int Imaginei exibir os dados da seguinte forma: Professor | Disciplina | Turma José | UML | 201055 Marcos | C# | 201035 Roberto | Java | 201069 Como ficaria o select para exibir os dados dessa forma ? Compartilhar este post Link para o post Compartilhar em outros sites
adrianno 7 Denunciar post Postado Abril 16, 2012 amigo, o mais correto seria você criar a tabela diciplina com mais campos PROFESSOR_ID TURMA_ID ambos com chave estrangeira nas tabelas, turma ID e professor ID id_disc int primary key auto_increment nome_disc varchar(255) carga_horaria_total int professor_id turma_id depois bastaria fazer a select selec * from TURMA, PROFESSOR, DICIPLINA WHERE TURMA_ID = id_turma AND id_prof = professor_id desta forma ai poderia mostrar os dados na forma que você quer sem a outra tabela TABELA PTD Compartilhar este post Link para o post Compartilhar em outros sites
Pedroplay 0 Denunciar post Postado Abril 17, 2012 Entendi, vou ver se consigo fazer dessa forma. Mas ainda quero saber se existe algum recurso no MySQL que me possibilite apresentar os dados usando uma tabela única com todas as chaves primárias das outras tabelas. Obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
adrianno 7 Denunciar post Postado Abril 17, 2012 Amigo , existe como fazer isso com certeza, de forma simples ainda select * from TURMA as T, PROFESSOR as P, DICIPLINA as D, PTD WHERE T.id_turma = PTD.id_turma AND P.id_prof = PTD.id_prof AND D.id_disc = PTD.id_disc desta forma ai, se você gravar os registros corretamente, vai exibir os dados como você quer da mesma forma eu so acho desnecessario. na PTD ainda precisa ter uma chave primaria pra ela, nao é obrigatorio, mais é o correto assim nao corre risco de repetir registros a toa id_prof int id_disc int id_turma int abraço Compartilhar este post Link para o post Compartilhar em outros sites
Pedroplay 0 Denunciar post Postado Abril 18, 2012 Adrianno, testei esse seu comando, e não funcionou. Consegui apresentar os dados usando o seguinte comando: select professor.nome_prof, disciplina.nome_disc, turma.numero_turma from professor, disciplina, turma, ptd where professor.id_prof = ptd.id_prof and disciplina.id_disc = ptd.id_disc and turma.id_turma = ptd.id_turma ; Agora o problema é fazer um select para mostrar as disciplinas e turmas que um professor está vinculado buscando pelo nome dele. Abraço ! Compartilhar este post Link para o post Compartilhar em outros sites
Pedroplay 0 Denunciar post Postado Abril 18, 2012 Já consegui resolver o problema. Valeu pela ajuda ! Compartilhar este post Link para o post Compartilhar em outros sites