Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos! Estou tentando fazer uma base de dados onde tenho 3 tabelas, usuario, requerimento e escala. Onde um usuario faz um requerimento e deste requerimento geraria uma escala. Gostaria de preparar a base de dados para que quando cadastrar um requerimento, esse requerimento só seja incluído se houver um usuario ligado a este requerimento, e quando cadastrar uma escala, esta seja ligada ao requerimento que a gerou, e quando for editar ou excluir, não exclua um requerimento sem excluir a escala. Tentei aqui um modelo com chave estrangeira, mas quando incluo um requerimento que não esteja vinculado a um usuario, dá um "warning" e inclue assim mesmo, e para excluir também faz da mesma forma. abaixo as tabelas.
CREATE TABLE `usuario` ( `nome_usuario` varchar(100) DEFAULT NULL, `id_usuario` int(11) NOT NULL, `telefone_usuario` varchar(20) DEFAULT NULL, `data_cadastro_usuario` datetime DEFAULT NULL, ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4. CREATE TABLE `requerimento` ( `id_requerimento` int(11) NOT NULL, `data_requerimento` datetime NOT NULL, `status_requerimento` enum('0','1') NOT NULL DEFAULT '0', `id_usuario` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4. CREATE TABLE `escala` ( `id_escala` int(11) NOT NULL, `local_escala` varchar(100) NOT NULL, `horário_escala` varchar(100) NOT NULL, `data_escala` date NOT NULL, `id_requerimento` int(11) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4. -- -- Índices para tabela `escala` -- ALTER TABLE `escala` ADD PRIMARY KEY (`id_escala`), ADD KEY `fk_requerimento_escala` (`id_requerimento`). -- -- Índices para tabela `requerimento` -- ALTER TABLE `requerimento` ADD PRIMARY KEY (`id_requerimento`), ADD KEY `fk_usuario_requerimento` (`id_usuario`). -- -- Índices para tabela `usuarios` -- ALTER TABLE `usuario` ADD PRIMARY KEY (`id_usuario`). COMMIT. >
Em 28/01/2020 at 14:37, ShadowDLL disse:
Segue exemplo, abaixo:
SQL:
CREATE TABLE usuario (
id_usuario INT NOT NULL AUTO_INCREMENT,
nome_usuario VARCHAR(100) NOT NULL, # "NOT NULL" = CAMPO OBRIGATÓRIO
telefone_usuario VARCHAR(20) DEFAULT NULL,
data_cadastro_usuario DATETIME NOT NULL, # "NOT NULL" = CAMPO OBRIGATÓRIO
PRIMARY KEY (id_usuario)
);
CREATE TABLE requerimento (
id_requerimento INT NOT NULL AUTO_INCREMENT,
data_requerimento DATETIME NOT NULL,
status_requerimento ENUM('0','1') NOT NULL DEFAULT '0',
id_usuario INT NOT NULL,
PRIMARY KEY (id_requerimento),
FOREIGN KEY (id_usuario) REFERENCES usuario (id_usuario)
);
CREATE TABLE escala (
id_escala INT NOT NULL AUTO_INCREMENT,
local_escala VARCHAR(100) NOT NULL,
horario_escala VARCHAR(100) NOT NULL,
data_escala DATE NOT NULL,
id_requerimento INT NOT NULL,
PRIMARY KEY (id_escala),
FOREIGN KEY (id_requerimento) REFERENCES requerimento (id_requerimento)
);
**SCHEMA:**

Obrigado, agora funcionou direitinhoDisponível ;)
Segue exemplo, abaixo:
SQL: