Advertisement
joaopaulofcc

[GABARITO] view_projetoEmpresa

Jun 9th, 2021
1,273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 6.21 KB | None | 0 0
  1. CREATE DATABASE empresa;
  2.  
  3. USE empresa;
  4.  
  5. CREATE TABLE Departamentos
  6. (
  7.     codigo INT NOT NULL PRIMARY KEY,
  8.     nome VARCHAR(60) NOT NULL,
  9.     localizacao VARCHAR(80) NOT NULL
  10. );
  11.  
  12. INSERT INTO
  13.     Departamentos(codigo, nome, localizacao)
  14. VALUES
  15.     (456, "Tecnologia da Informação", "quadra A-31"),
  16.     (231, "Financeiro", "quadra A-25"),
  17.     (556, "Marketing", "quadra A-12"),
  18.     (211, "Jurídico", "quadra A-13"),
  19.     (120, "Comercial", "quadra B-01"),
  20.     (466, "Recursos Humanos", "quadra C-14"),
  21.     (560, "Presidência", "quadra C-11");
  22.    
  23.    
  24. CREATE TABLE Funcionarios
  25. (
  26.     cpf VARCHAR(11) NOT NULL PRIMARY KEY,
  27.     nome VARCHAR(60) NOT NULL,
  28.     endereco VARCHAR(80) NOT NULL,
  29.     telefone VARCHAR(12) NOT NULL,
  30.     salario DECIMAL(10,2) NOT NULL,
  31.     codigo_departamento INT NOT NULL,
  32.     codigo_departamentoGerenciar INT,
  33.     FOREIGN KEY (codigo_departamento) REFERENCES Departamentos (codigo),
  34.     FOREIGN KEY (codigo_departamentoGerenciar) REFERENCES Departamentos (codigo)
  35. );
  36.  
  37. INSERT INTO
  38.     Funcionarios (CPF, nome, endereco, telefone, salario, codigo_departamento, codigo_departamentoGerenciar)
  39. VALUES
  40.     ("10022256232", "Olívia de Paula Brito", "São Paulo", "314430089", 1200.00, 556, NULL),
  41.     ("90856251432", "Fernando Marciel", "Santo Andre", "318907654", 2500.00, 456, NULL),
  42.     ("3985699025", "Adilson Fernandes Souza", "São Paulo", "314220065", 4500.00, 231, 231),
  43.     ("29845651111", "Vanessa Brito", "Sorocaba", "312678904", 950.00, 466, NULL),
  44.     ("10546222142", "Marcos Antonio da Silva", "Jundiai", "319786874", 980.00, 456, NULL);
  45.    
  46.  
  47. CREATE TABLE Dependentes
  48. (
  49.     codigo INT NOT NULL PRIMARY KEY,
  50.     nome VARCHAR(60) NOT NULL,
  51.     endereco VARCHAR(80),
  52.     parentesco VARCHAR(10) NOT NULL
  53. );
  54.  
  55. INSERT INTO
  56.     Dependentes(codigo, nome, parentesco)
  57. VALUES
  58.     (3768, "Leonardo Silva Marciel", "filho"),
  59.     (3776, "Mariana Lemos de Souza", "filha"),
  60.     (2763, "José Francisco Brito", "pai"),
  61.     (3322, "André Silva Marciel", "filho"),
  62.     (7316, "Leandro Silva Marciel", "filho");
  63.    
  64.  
  65. CREATE TABLE Projetos
  66. (
  67.     numero INT NOT NULL PRIMARY KEY,
  68.     nome VARCHAR(40) NOT NULL,
  69.     verba VARCHAR(60) NOT NULL,
  70.     codigo_departamento INT NOT NULL,
  71.     cpf_funcionario VARCHAR(11),
  72.     tipo VARCHAR(60) NOT NULL,
  73.     FOREIGN KEY (codigo_departamento) REFERENCES Departamentos (codigo),
  74.     FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf)
  75. );
  76.  
  77. INSERT INTO
  78.     projetos(numero, nome, tipo, verba, codigo_departamento)
  79. VALUES
  80.     (56, "Alfa", "integral-2 anos", "5 bolsas integrais IF", 556),
  81.     (12, "D3RE", "integral-1 anos", "5 bolsas integrais IF",211 ),
  82.     (46, "X3", "parcial-2 anos", "não determinada", 456),
  83.     (47, "Beta", "parcial-2 anos", "5 bolsas parciais IF", 556),
  84.     (21, "XR3", "integral-5 anos", "2 bolsas integrais IF", 456);
  85.    
  86.    
  87. CREATE TABLE Funcionarios_Dependentes
  88. (
  89.     cpf_funcionario VARCHAR(11) NOT NULL,
  90.     codigo_dependente INT NOT NULL,
  91.     PRIMARY KEY (cpf_funcionario, codigo_dependente),
  92.     FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf),
  93.     FOREIGN KEY (codigo_dependente) REFERENCES Dependentes (codigo)
  94. );
  95.  
  96. INSERT INTO
  97.     Funcionarios_Dependentes(cpf_funcionario, codigo_dependente)
  98. VALUES
  99.     ("90856251432", 3322),
  100.     ("90856251432", 7316),
  101.     ("3985699025", 2763),
  102.     ("29845651111", 2763),
  103.     ("10546222142", 3776),
  104.     ("10546222142", 3768);
  105.    
  106.    
  107. CREATE TABLE Funcionarios_Projetos
  108. (
  109.     cpf_funcionario VARCHAR(11) NOT NULL,
  110.     numero_projeto INT NOT NULL,
  111.     numero_horas INT NOT NULL,
  112.     PRIMARY KEY (cpf_funcionario, numero_projeto),
  113.     FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf),
  114.     FOREIGN KEY (numero_projeto) REFERENCES Projetos (numero)
  115. );
  116.  
  117. INSERT INTO
  118.     Funcionarios_Projetos(cpf_funcionario, numero_projeto, numero_horas)
  119. VALUES
  120.     ("90856251432", 12, 230),
  121.     ("90856251432", 56, 300),
  122.     ("3985699025", 56, 120),
  123.     ("29845651111", 46, 248),
  124.     ("10546222142", 21, 30),
  125.     ("10546222142", 47, 20);
  126.    
  127. UPDATE Dependentes SET endereco = "São Paulo";
  128.  
  129. UPDATE Dependentes SET endereco = "Jundiaí" WHERE codigo = 3768 OR codigo = 3776;
  130.  
  131. UPDATE Dependentes SET endereco = "Sorocaba" WHERE nome = "José Francisco Brito";
  132.  
  133. DELETE FROM departamentos WHERE codigo = 120;
  134.  
  135.  
  136.  
  137. # Visão 1:
  138.  
  139. # Nesse sistema, vemos que os projetos possuem verbas controladas pelos departamentos, e é comum serem
  140. # solicitadas informações a esse respeito. Utilizando este recurso, podemos criar a visão que contém
  141. # essas importantes informa- ções, para que não seja preciso pesquisar a base.
  142.  
  143. # Visão ‘departamentos_projetos’:
  144. #   selecione o tipo e a verba dos projetos que os departamentos controlam.
  145.  
  146. CREATE VIEW
  147.     departamentos_projetos
  148. AS
  149.     SELECT
  150.         d.codigo, d.nome, p.numero, p.tipo, p.verba
  151.     FROM
  152.         departamentos d JOIN projetos p
  153.     ON
  154.         d.codigo = p.codigo_departamento;
  155.        
  156.        
  157. SELECT * FROM departamentos_projetos;
  158.  
  159.  
  160. # Visão 2:
  161.  
  162. # Visão ‘funcionarios_projetos_horas’:
  163. #   selecione o número de horas que os funcionários trabalham em projeto.
  164.  
  165. CREATE VIEW
  166.     funcionarios_projetos_horas
  167. AS
  168.     SELECT
  169.         f.cpf, f.nome, f.salario, p.numero, p.tipo, fp.numero_horas
  170.     FROM
  171.         funcionarios f JOIN funcionarios_projetos fp JOIN projetos p
  172.     ON
  173.         cpf = fp.cpf_funcionario AND p.numero = fp.numero_projeto;
  174.        
  175. SELECT
  176.     cpf, nome AS Funcionario, salario, numero AS Projeto, tipo, numero_horas
  177. FROM
  178.     funcionarios_projetos_horas;
  179.  
  180.  
  181. # Visão 3:
  182.  
  183. # Agora, vamos criar uma visão que contenha informações sobre os funcionários e seus dependentes,
  184. # acompanhando o código e as informações que seguem.
  185.  
  186. # Visão ‘funcionarios_dependentes1’:
  187. #   seleciona os dependentes dos funcionários.
  188.  
  189. CREATE VIEW
  190.     funcionarios_dependentes1
  191. AS
  192.     SELECT
  193.         f.CPF, f.nome, f.salario, d.codigo, d.parentesco
  194.     FROM
  195.         funcionarios f JOIN dependentes d JOIN funcionarios_dependentes fd
  196.     ON
  197.         f.cpf = fd.cpf_funcionario AND d.codigo = fd.codigo_dependente;
  198.  
  199. SELECT * FROM funcionarios_dependentes1;
  200.  
  201.  
  202. # Se quisermos, por exemplo, excluir a visão ‘funcionarios_dependentes1’, devemos executar o seguinte código.
  203.  
  204. DROP VIEW funcionarios_dependentes1;
  205.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement