Você está na página 1de 2

Para o modelo relacional EMPRESAX abaixo, foram definidos os códigos em SQL para a

criação do banco de dados, as respectivas tabelas no MySQL e algumas inserções e


atualizações de dados. Considerando que o código é executado na sequência em que
aparece, DESCREVA cada erro encontrado e apresente qual é a correção necessária.

EMPREGADO(CODIGO, NOME, SEXO, ENDEREÇO, SALARIO, DEPARTAMENTO_FK, SUPERVISOR_FK)


DEPENDENTE(EMPREGADO_FK, NOME, SEXO, DATANASCIMENTO, PARENTESCO)
DEPARTAMENTO (NUMERO, NOME, GERENTE_FK, DATAINICIO)
PROJETO(NUMERO, NOME, LOCALIZAÇÃO, DEPARTAMENTO_FK)
TRABALHA(EMPREGADO_FK, PROJETO_FK, HORAS)
LOCALIZACAO(LOCALIZAÇÃO, DEPARTAMENTO_FK)

CREATE DATABASE EMPRESAX;

USE EMPRESAX;

CREATE TABLE EMPREGADO(


CODIGO INT AUTO_INCREMENT,
NOME INT NOT NULL,
SEXO CHAR(1),
ENDERECO VARCHAR(150),
SALARIO INT,
DEPARTAMENTO_FK INT,
PRIMARY KEY(CODIGO),
FOREIGN KEY(SUPERVISOR_FK) REFERENCES EMPREGADO(CODIGO)
);

CREATE TABLE DEPENDENTE(


EMPREGADO_FK INT,
NOME VARCHAR(100),
SEXO CHAR(1),
DATANASCIMENTO DATE,
PARENTESCO VARCHAR(50),
PRIMARY KEY(EMPREGADO_FK, NOME),
FOREIGN KEY(EMPREGADO_FK) REFERENCES EMPREGADO(NOME));

CREATE TABLE DEPARTAMENTO(


NUMERO INT AUTO_INCREMENT,
NOME VARCHAR(100),
GERENTE_FK VARCHAR(10),
DATAINICIO DATE,
PRIMARY KEY(NUMERO),
FOREIGN KEY(GERENTE_FK) REFERENCES EMPREGADO(CODIGO));

CREATE TABLE PROJETO(


NUMERO INT AUTO_INCREMENT,
NOME VARCHAR(100),
LOCALIZACAO VARCHAR(50),
DEPARTAMENTO_FK INT,
PRIMARY KEY (NUMERO),
FOREIGN KEY(DEPARTAMENTO_FK) REFERENCES DEPARTAMENTO(CODIGO));
CREATE TABLE TRABALHA(
EMPREGADO_FK INT,
PROJETO_FK INT,
HORAS INT,
PRIMARY KEY(EMPREGADO_FK, PROJETO_FK),
FOREIGN KEY (EMPREGADO_FK,PROJETO_FK) REFERENCES EMPREGADO(CODIGO) ,
PROJETO(NUMERO) ON DELETE CASCADE);

CREATE TABLE LOCALIZACAO(


LOCALIZACAO VARCHAR(50),
DEPARTAMENTO_FK INT,
PRIMARY KEY (LOCALIZACAO, DEPARTAMENTO_FK),
FOREIGN KEY (DEPARTAMENTO_FK) REFERENCES DEPARTAMENTO(NUMERO));

INSERT INTO EMPREGADO(NOME,SEXO,ENDERECO,SALARIO) VALUES ('João','M','Rua 1');

INSERT INTO TRABALHA VALUES (1,1,10), (1,1,8), (1,5,4);