Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandrel5

criar relacionamento entre tabelas

Recommended Posts

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_CodDiaSe

mana) 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_CodDiaSe

mana) 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_CodDiaSe

mana) 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_CodDiaSe

mana) 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_CodDiaSe

mana) 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_CodDiaSe

mana) 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_CodDiaSe

mana) VALUES(1,7);

 

Nessa parte fiz um select para testar

SELECT modalidade.Nome,Modalidadeturno.Manha,Modalidadeturno.Tarde,Modalidadeturno.Noit

e,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[

code][/code]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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.