Jump to content
Fórum Script Brasil
  • 0

Ajuda para criar relacionamento entre tabelas


Alexandrel5
 Share

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649.1k
×
×
  • Create New...