MySQL so deixa add 4 resgistros no banco! [RESOLVIDO]

10 respostas
shyryu

Bom dia pessoal, tenho um trabalho para fazer.
Cadastrar Alunos, em determinado curso (Informaptica, Turismo, Segurança Trabalho ou Enfermagem), com os seus atributos : (nome, telefone, endereço, email, experiencia profi, histroia de vida);

Seguinte, Todo meu projeto esta funcionando direitinho sem erro algum.
Criei no MySQL um banco chamado ‘escola’ -> com tabelas ‘alunos’ e ‘curso’ onde,
‘alunos’ --> tem um achave estrangeira, “IDCURSO”, que vai receber o ID do curso pra dizer se o aluno é da Informática ou de algum outro curso.
‘curso’ --> Tem ID e Nome; somente para referencia à tabela ‘alunos’

Ex: --> nome - telefone - endereço … - idcurso(minha chave estrangeira) que vai receber o ID da tabela ‘curso’;

o problema esta quando eu vou add algum registro em ‘alunos’. Ao add o 5º registro dentro de ‘alunos’ ele gera uma exceção dizendo sobre a Chave Estrangeira.
Mas eu ja analisei o problema e vi que é o seguinte:

dentro de curso tem:
ID NOME
1 informatica
2 turismo
3 enfermagem
4 Segurança Trabalho

e pelo que eu entendi, no meu caso, quando eu add algum registro em ‘alunos’, ele faz referencia a quantidade de regsitros que tem em ‘curso’. E no caso em ‘curso’ tem 4 registros para servir de referencia, ai so da pra add 4 alunos. Eu testei aumentando em ‘curso’, coloquei campos para teste e funcionou normal.

o problema é que em ‘curso’ so devo ter 4 registros, para dizer que curso é.
e ‘alunos’ vai receber todos os registros. So que vai existir a chave estrangeira para diferencia-los do curso.

aluno so pode ter 1 curso, mas curso pode ter varios alunos.

se alguem puder me ajudar agradeço!

10 Respostas

shyryu

Esse trabalho é pra hj! preico mandar ele por email ate as 22h
So falta resolver esse problema!

Se alguem puder me ajudar agradeço

romarcio

Posta o script da criação das tabelas alunos e cursos.

Pelo que eu entendi não deveria haver esse problema, mas vamos ver o script antes.

kbardock15

Magro, isso já é mais uma questão de banco…

Todo caso, algo deve estar errado quando você criou as foreign key. Quando você Add o registro na tabela aluno, no campo idCurso deve ser um valor apenas de 1 a 4. o que Esta me parecendo que você trocou os campos na hora de fazer as referencias. Quando você cria a FK na tabela alunos devem indicar que é o Campo IDCurso da Tabela Curso, o que me parece que você indicou IdAlunos.

Att,

KaosBr

Boa tarde,

Bom, pelo que, entendi:

  • Não existe relação alguma entre ter, a mesma quantidade de itens, em duas entidades. Para que seja, estabelecido, um relacionamento, seja n-n, 1-n ou atraves de uma entidade associativa.

O mais provavel, é que, não esteja usando nessa referencia um valor de ID, que conste na entidade, citada.

Dá uma verificada, e qualquer coisa poste novamente, se possivel com mais detalhes. Incluindo o erro, informado, pelo SGDB.

[]s

shyryu

Bom pessoal segue ai o Scritp do MySQL
Eu fiz pelo Workbench!

Aqui eu criei a tabela com os atributos

CREATE TABLE `escola`.`aluno` ( `id` INT NOT NULL AUTO_INCREMENT , `nome` VARCHAR(45) NOT NULL , `telefone` VARCHAR(45) NOT NULL , `endereco` VARCHAR(45) NOT NULL , `email` VARCHAR(45) NOT NULL , `experiencia` VARCHAR(45) NOT NULL , `historia` VARCHAR(45) NOT NULL , PRIMARY KEY (`id`) )

AQui alteria a tabela criando a chave estrangeira
Idcurso vai receber id do curso!

ALTER TABLE `escola`.`aluno` ADD COLUMN `idcurso` INT NOT NULL AFTER `id` , ADD CONSTRAINT `idcurso` FOREIGN KEY (`id` ) REFERENCES `escola`.`curso` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION , ADD INDEX `idcurso` (`id` ASC)

kbardock15

shyryu:
Bom pessoal segue ai o Scritp do MySQL
Eu fiz pelo Workbench!

Aqui eu criei a tabela com os atributos

CREATE TABLE `escola`.`aluno` ( `id` INT NOT NULL AUTO_INCREMENT , `nome` VARCHAR(45) NOT NULL , `telefone` VARCHAR(45) NOT NULL , `endereco` VARCHAR(45) NOT NULL , `email` VARCHAR(45) NOT NULL , `experiencia` VARCHAR(45) NOT NULL , `historia` VARCHAR(45) NOT NULL , PRIMARY KEY (`id`) )

AQui alteria a tabela criando a chave estrangeira
Idcurso vai receber id do curso!

ALTER TABLE `escola`.`aluno` ADD COLUMN `idcurso` INT NOT NULL AFTER `id` , ADD CONSTRAINT `idcurso` FOREIGN KEY (`id` ) REFERENCES `escola`.`curso` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION , ADD INDEX `idcurso` (`id` ASC)

Não estou muito ambientalizado com a sintaxe do mysql, mas aparentemente pode ser isso

ALTER TABLE escola.aluno ADD COLUMN idcurso INT NOT NULL AFTER id ,
ADD CONSTRAINT idcurso
FOREIGN KEY (id ) [color=red] Aqui seria idCurso [/color]
REFERENCES escola.curso (id )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD IND

shyryu

é cara, porque esse script ai era um teste, mas na verdade o que esta é assim mesmo

ALTER TABLE `escola`.`aluno` ADD COLUMN `idcurso` INT NOT NULL AFTER `id` , ADD CONSTRAINT `idcurso` FOREIGN KEY (`idcurso` ) REFERENCES `escola`.`curso` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION , ADD INDEX `idcurso` (`id` ASC)

a exceção gerada é a aseguinte!

romarcio

Pelo que vc postou ai nos scripts, não deveria acontecer esse problema.

Isso acontece quando vc insere por uma aplicação ou direto por sql ?

Tem como postar exatamente o erro que gera ?

kbardock15

shyryu:
kbardock15:

Não estou muito ambientalizado com a sintaxe do mysql, mas aparentemente pode ser isso

ALTER TABLE escola.aluno ADD COLUMN idcurso INT NOT NULL AFTER id ,
ADD CONSTRAINT idcurso
FOREIGN KEY (id ) [color=red] Aqui seria idCurso [/color]
REFERENCES escola.curso (id )
ON DELETE NO ACTION
ON UPDATE NO ACTION
, ADD IND

é cara, porque esse script ai era um teste, mas na verdade o que esta é assim mesmo

ALTER TABLE `escola`.`aluno` ADD COLUMN `idcurso` INT NOT NULL AFTER `id` , ADD CONSTRAINT `idcurso` FOREIGN KEY (`idcurso` ) REFERENCES `escola`.`curso` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION , ADD INDEX `idcurso` (`id` ASC)

a exceção gerada é a aseguinte!

Talvez esteja viajando …

Mas o nome da constraint esta como IdCurso … mas a Foreign é apenas ID e não IdCurso … segundo essa exceção que você postou … pelo jeito ainda esta o seu script para teste. hehehe

shyryu

Ai galera vlw, Consegui ajeitar meu problema.

Era o seguinte

Ao invéz de eu pegar o ID de ‘curso’ e usar como chave estrangeira para idcurso dentro de ‘alunos’, eu estava fazendo o contrário ^^

o certo é pegar ID de ‘curso’ e mandar para IDCURSO em ‘alunos’

vlw!!!

Criado 23 de setembro de 2010
Ultima resposta 23 de set. de 2010
Respostas 10
Participantes 4