-3
CREATE TABLE TIPO (
CODIGO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, -- Código interno (PK)
TIPO VARCHAR(32) NOT NULL, -- Descrição
PRIMARY KEY(CODIGO) -- Define o campo CODIGO como PK (Primary Key)
);
-- Cria a tabela INSTRUTOR
CREATE TABLE INSTRUTOR (
CODIGO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, -- Código interno (PK)
INSTRUTOR VARCHAR(64) NOT NULL, -- Nome com até 64 caracteres
TELEFONE VARCHAR(9) NULL, -- Telefone, podendo ser nulo caso não tenha
PRIMARY KEY(CODIGO) -- Define o campo CODIGO como PK (Primary Key)
);
-- Cria a tabela CURSO
CREATE TABLE CURSO (
CODIGO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, -- Código interno (PK)
CURSO VARCHAR(64) NOT NULL, -- Título com até 64 caracteres
TIPO INTEGER UNSIGNED NOT NULL, -- Código do tipo de curso (idêntico a PK em CURSO)
INSTRUTOR INTEGER UNSIGNED NOT NULL, -- Código do instrutor (idêntico a PK em INSTRUTOR)
VALOR DOUBLE NOT NULL, -- Valor do curso
PRIMARY KEY(CODIGO), -- Define o campo CODIGO como PK (Primary Key)
INDEX FK_TIPO(TIPO), -- Define o campo TIPO como um índice
INDEX FK_INSTRUTOR(INSTRUTOR), -- Define o campo INSTRUTOR como um índice
FOREIGN KEY(TIPO) REFERENCES TIPO(CODIGO), -- Cria o relacionamento (FK) com a tabela TIPO
FOREIGN KEY(INSTRUTOR) REFERENCES INSTRUTOR(CODIGO) -- Cria o relacionamento (FK) com a tabela INSTRUTOR
);
-- Cria a tabela ALUNO
CREATE TABLE ALUNO (
CODIGO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, -- Código interno (PK)
ALUNO VARCHAR(64) NOT NULL, -- Nome com até 64 caracteres
ENDERECO VARCHAR(230) NOT NULL, -- Endereço com até 230 caracteres
EMAIL VARCHAR(128) NOT NULL, -- E-mail com até 128 caracteres
PRIMARY KEY(CODIGO) -- Define o campo CODIGO como PK (Primary Key)
);
-- Cria a tabela PEDIDO
CREATE TABLE PEDIDO (
CODIGO INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, -- Código interno (PK)
ALUNO INTEGER UNSIGNED NOT NULL, -- Código do aluno (idêntico a PK em ALUNO)
DATAHORA DATETIME NOT NULL, -- Armazena data e hora em uma única coluna
PRIMARY KEY(CODIGO), -- Define o campo CODIGO como PK (Primary Key)
INDEX FK_ALUNO(ALUNO), -- Define o campo ALUNO como um índice
FOREIGN KEY(ALUNO) REFERENCES ALUNO(CODIGO) -- Cria o relacionamento (FK) com a tabela ALUNO
);
-- Cria a tabela PEDIDO_DETALHE
CREATE TABLE PEDIDO_DETALHE (
PEDIDO INTEGER UNSIGNED NOT NULL, -- Código do pedido (idêntico a PK em PEDIDO)
CURSO INTEGER UNSIGNED NOT NULL, -- Código do curso (idêntico a PK em CURSO)
VALOR DOUBLE NOT NULL, -- Valor do curso
INDEX FK_PEDIDO(PEDIDO), -- Define o campo ALUNO como um índice
INDEX FK_CURSO(CURSO), -- Define o campo ALUNO como um índice
PRIMARY KEY(PEDIDO, CURSO), -- Define a chave primária composta
FOREIGN KEY(PEDIDO) REFERENCES PEDIDO(CODIGO), -- Cria o relacionamento (FK) com a tabela PEDIDO
FOREIGN KEY(CURSO) REFERENCES CURSO(CODIGO) -- Cria o relacionamento (FK) com a tabela CURSO
);
SELECT * FROM aluno;
ALTER TABLE aluno ADD DATA_NASCIMENTO varchar(10);
ALTER TABLE aluno CHANGE COLUMN DATA_NASCIMENTO NASCIMENTO DATE;
-- Crie um novo índice na tabela ALUNO, para o campo ALUNO;
ALTER TABLE ALUNO ADD INDEX INDEX_ALUNO(ALUNO);
-- Inclua o campo EMAIL na tabela INSTRUTOR, com tamanho de 100 caracteres;
ALTER TABLE INSTRUTOR ADD EMAIL varchar(100);
-- Crie um novo índice na tabela CURSO, para o campo INSTRUTOR;
ALTER TABLE CURSO ADD INDEX INDEX_INSTRUTOR(INSTRUTOR);
-- Remova o campo EMAIL da tabela INSTRUTOR;
ALTER TABLE INSTRUTOR DROP EMAIL ;
/*
Crie comandos SQL para inserir os dados apresentados a seguir:
Tabela TIPO:
1, Banco de dados
2, Programação
3, Modelagem de dados*/
INSERT INTO Tipo (tipo) VALUES ('Banco de dados');
INSERT INTO Tipo (tipo) VALUES ('Programacao');
INSERT INTO Tipo (tipo) VALUES ('Modelagem de dados');
INSERT INTO instrutor (instrutor, telefone) VALUES ('Andé Milani', '1111-1111');
INSERT INTO instrutor (instrutor, telefone) VALUES ('Carlos Tosin', '2222-2222');
INSERT INTO curso (codigo, curso, tipo , instrutor, valor) VALUES (1,'Java Fundamentos', 2, 2, 270);
Error Code: 1452. Cannot add or update a Child Row: a Foreign key Constraint fails (exercicio_softblue
.curso
, CONSTRAINT curso_ibfk_2
FOREIGN KEY (INSTRUTOR
) REFERENCES instrutor
(CODIGO
)) //
What procedure did you follow to enter data in the table
curso
? Tried to solve the problem by entering a valid FK for the instructor table?– Danizavtz
Probably the values you passed on
VALUES (1,'Java Fundamentos', 2, 2, 270);
(I refer to 2 and 270) are not the values of the Ids generated by the previous Inserts– Guilherme Nascimento
I tried to perform the Insert without the data you mentioned, it error and ask for the same data.
– Leonardo