Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda para criar relacionamento entre tabelas


Alexandrel5

Pergunta

Como vai pessoal?

seguinte tenho essas tabelas

CREATE TABLE IF NOT EXISTS `trabalho`.`modalidade` (

`CodModalidade` INT(11) NULL AUTO_INCREMENT ,

`Nome` CHAR(20) NOT NULL ,

PRIMARY KEY (`CodModalidade`) ,

UNIQUE INDEX `CodModalidade_UNIQUE` (`CodModalidade` ASC) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `trabalho`.`modalidadedsemana` (

`Codmodalidadedsemana` INT(11) NOT NULL ,

`modalidade_CodModalidade` INT(11) NOT NULL ,

`Domingo` TINYINT(1) NULL DEFAULT NULL ,

`Segunda` TINYINT(1) NULL DEFAULT NULL ,

`Terca` TINYINT(1) NULL DEFAULT NULL ,

`Quarta` TINYINT(1) NULL DEFAULT NULL ,

`Quinta` TINYINT(1) NULL DEFAULT NULL ,

`Sexta` TINYINT(1) NULL DEFAULT NULL ,

`Sabado` TINYINT(1) NULL DEFAULT NULL ,

PRIMARY KEY (`Codmodalidadedsemana`, `modalidade_CodModalidade`) ,

INDEX `fk_modalidadedsemana_modalidade1_idx` (`modalidade_CodModalidade` ASC) ,

CONSTRAINT `fk_modalidadedsemana_modalidade1`

FOREIGN KEY (`modalidade_CodModalidade` )

REFERENCES `trabalho`.`modalidade` (`CodModalidade` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `trabalho`.`modalidadeturno` (

`CodModalidade` INT(11) NOT NULL ,

`Manha` TINYINT(1) NULL ,

`Tarde` TINYINT(1) NULL DEFAULT NULL ,

`Noite` TINYINT(1) NULL DEFAULT NULL ,

`ManhaT` TIME NULL DEFAULT NULL ,

`TardeT` TIME NULL DEFAULT NULL ,

`NoiteT` TIME NULL DEFAULT NULL ,

PRIMARY KEY (`CodModalidade`) )

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

A tabela modalidadedseman é só para verificação se o dia foi selecionado.

A tabela modalidadeturno é para os dias da semana que pode ir ate 7 de cada modalidade é nessa parte que não estou conseguindo pois cada modalidade pode ter ate 7 referencias nessa tabela ficando uma especia de matriz [x-modalidades],[dias_da_semana] não sei se é possível criar esse tipo de matriz em uma mesma tabela tipo duas primary key na mesma tabela

e outra como fica o relacionamento já que temos a tabela modalidade MUITOS --para-- modalidadedseman MUITOS ate 7 na verdade

tinha feito no mysql-workbench o relacionamento de muito para muitos com essa tabela abaixo

CREATE TABLE IF NOT EXISTS `trabalho`.`modalidade_has_modalidadeturno` (

`modalidade_CodModalidade` INT(11) NOT NULL ,

`modalidadeturno_CodModalidade` INT(11) NOT NULL ,

PRIMARY KEY (`modalidade_CodModalidade`, `modalidadeturno_CodModalidade`) ,

INDEX `fk_modalidade_has_modalidadeturno_modalidadeturno1_idx` (`modalidadeturno_CodModalidade` ASC) ,

INDEX `fk_modalidade_has_modalidadeturno_modalidade1_idx` (`modalidade_CodModalidade` ASC) ,

CONSTRAINT `fk_modalidade_has_modalidadeturno_modalidade1`

FOREIGN KEY (`modalidade_CodModalidade` )

REFERENCES `trabalho`.`modalidade` (`CodModalidade` )

ON DELETE NO ACTION

ON UPDATE NO ACTION,

CONSTRAINT `fk_modalidade_has_modalidadeturno_modalidadeturno1`

FOREIGN KEY (`modalidadeturno_CodModalidade` )

REFERENCES `trabalho`.`modalidadeturno` (`CodModalidade` )

ON DELETE NO ACTION

ON UPDATE NO ACTION)

ENGINE = InnoDB

DEFAULT CHARACTER SET = latin1;

ai comecei a cadastrar

INSERT INTO modalidade(Nome) VALUES('teste');

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(1,false,false,true,"00:00:00","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,1);

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(2,true,false,true,"10:10:10","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,2);

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(3,true,false,true,"10:10:10","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,3);

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(4,true,false,true,"10:10:10","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,4);

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(5,true,false,true,"10:10:10","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,5);

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(6,true,false,true,"10:10:10","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,6);

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(7,true,false,true,"10:10:10","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaSemana) VALUES(1,7);

Nessa parte fiz um select para testar

SELECT modalidade.Nome,Modalidadeturno.Manha,Modalidadeturno.Tarde,Modalidadeturno.Noite,Modalidadeturno.ManhaT,Modalidadeturno.TardeT,Modalidadeturno.NoiteT

FROM Modalidade,Modalidadeturno,

INNER JOIN modalidade_has_modalidadeturno ON (modalidade_has_modalidadeturno.modalidadeturno_CodDiaSemana = modalidadeturno.CodDiaSemana and modalidade_has_modalidadeturno.modalidade_CodModalidade=1);

ate ai funciona normal

mas agora tenho que inserir uma nova modalidade

INSERT INTO modalidade(Nome) VALUES('teste1');

INSERT INTO modalidadeturno(CodDiaSemana,Manha,Tarde,Noite,ManhaT,TardeT,NoiteT) VALUES(1,false,false,true,"00:00:00","00:00:00","12:12:00");

INSERT INTO modalidade_has_modalidadeturno(modalidade_CodModalidade,modalidadeturno_CodDiaS

emana) VALUES(2,1);

já não vai, a tabela modalidadeturno não aceita duplicar o campo CodDiaSemana

como ficaria a resolução desse problema ? e sobre la em cima também se é possível criar matriz no banco de dados?

se alguém tiver ideias de como simplificar essas tabelas agradeço.

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...