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 ,
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.
Pergunta
Alexandrel5
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
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
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.