Advertisement
joaopaulofcc

[GABARITO] view_projetoBiblioteca

Jun 9th, 2021
1,635
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 5.99 KB | None | 0 0
  1. CREATE DATABASE biblioteca;
  2.  
  3. USE biblioteca;
  4.  
  5.  
  6.  
  7. CREATE TABLE Funcionarios
  8. (
  9.     cpf VARCHAR(11) NOT NULL PRIMARY KEY,
  10.     nome VARCHAR(40) NOT NULL,
  11.     endereco VARCHAR(40) NOT NULL,
  12.     telefone VARCHAR(12) NOT NULL,
  13.     salario NUMERIC(10,2) NOT NULL DEFAULT 0.00,
  14.     funcao VARCHAR(30)
  15. );
  16.  
  17. INSERT INTO
  18.     Funcionarios (cpf, nome, endereco, telefone, salario, funcao)
  19. VALUES
  20.     ("61254590871", "Lucia Vicentim", "Salto", 21316565, 0, "Bibliotecaria"),
  21.     ("20321295096", "João Alberto Smith", "Itatiba", 22447865, 0, NULL),
  22.     ("32361298734", "Luís Henrique Talles", "Campinas", 21531785, 0, NULL),
  23.     ("45403612087", "Francisco José Almeida", "Indaiatuba", 25417761, 0, NULL);
  24.  
  25.  
  26.  
  27. CREATE TABLE Editoras
  28. (
  29.     codigo INT NOT NULL PRIMARY KEY,
  30.     nome VARCHAR(40) NOT NULL,
  31.     endereco VARCHAR(40),
  32.     contato VARCHAR(12) NOT NULL    
  33. );
  34.  
  35. INSERT INTO
  36.     Editoras
  37. VALUES
  38.     (2134000, "Saraiva", "São Paulo", "08003434"),
  39.     (2287000, "Eras", "Brasília", "08002432"),
  40.     (3557000, "Summer", "Curitiba", "08002198"),
  41.     (6655000, "Pontos", "São Paulo", "08005600"),
  42.     (9898000, "Marks", "Rio de Janeiro", "0800900");
  43.  
  44.  
  45.  
  46. CREATE TABLE Usuarios
  47. (
  48.     cpf VARCHAR(11) NOT NULL PRIMARY KEY,
  49.     nome VARCHAR(40) NOT NULL,
  50.     endereco VARCHAR(40),
  51.     telefone VARCHAR(12) NOT NULL
  52. );
  53.  
  54. INSERT INTO
  55.     Usuarios (CPF, nome, telefone, endereco)
  56. VALUES
  57.     ("10122020232", "Maria de Lourdes Amaral", "35440089", NULL),
  58.     ("19321122213", "José Francisco de Paula", "27219756", NULL),
  59.     ("70964411900", "Luiza Souza Prado", "34559087", NULL),
  60.     ("45399109881", "Raquel Santos", "87603451", NULL),
  61.     ("22539910976", "Ivete Medina Chernell", "48170352", NULL);
  62.    
  63.    
  64.    
  65. CREATE TABLE Autores
  66. (
  67.     codigo INT NOT NULL PRIMARY KEY,
  68.     nome VARCHAR(40) NOT NULL,
  69.     nacionalidade VARCHAR(40) NOT NULL
  70. );
  71.  
  72. INSERT INTO
  73.     Autores (nome, nacionalidade, codigo)
  74. VALUES
  75.     ("Ethevaldo Siqueira", "Brasileira", 85668900),
  76.     ("Ana Lucia Jankovic Barduchi", "Brasileira", 77548854),
  77.     ("Adélia Prado", "Brasileira", 55490076),
  78.     ("Walter Isaacson", "Americana", 22564411),
  79.     ("Steven K. Scott", "Americana", 90984133);
  80.    
  81.    
  82.    
  83.    
  84. CREATE TABLE Livros
  85. (
  86.     numero INT NOT NULL PRIMARY KEY,
  87.     titulo VARCHAR(80) NOT NULL,
  88.     genero VARCHAR(40) NOT NULL,
  89.     edicao SMALLINT NOT NULL,
  90.     ano_publicacao YEAR NOT NULL,
  91.     cpf_funcionario VARCHAR(11),
  92.     codigo_editora INT NOT NULL,
  93.     CPF_usuarioRetirar VARCHAR(11),
  94.     CPF_usuarioReservar VARCHAR(11),
  95.     FOREIGN KEY (cpf_funcionario) REFERENCES Funcionarios (cpf),
  96.     FOREIGN KEY (codigo_editora) REFERENCES Editoras (codigo),
  97.     FOREIGN KEY (CPF_usuarioRetirar) REFERENCES Usuarios (cpf),
  98.     FOREIGN KEY (CPF_usuarioReservar) REFERENCES Usuarios (cpf)
  99. );
  100.  
  101.  
  102. INSERT INTO
  103.     Livros (numero, titulo, genero, edicao, ano_publicacao, CPF_funcionario, codigo_editora, CPF_usuarioRetirar, CPF_usuarioReservar)
  104. VALUES
  105.     (87659908, "Tecnologias que Mudam Nossa Vida", "Tecnologia", 2, 2007, NULL, 2134000, NULL, "70964411900"),
  106.     (67392217, "Empregabilidade – Competências Pessoais e Profissionais", "Administração", 22, 1977, "32361298734", 9898000, NULL, NULL),
  107.     (45112239, "Steve Jobs – a Biografia", "Biografia", 48, 2011, NULL, 2287000, "19321122213", NULL),
  108.     (77680012, "A Duração do Dia", "Poesia", 1, 2010, NULL, 2134000, "10122020232", NULL),
  109.     (32176500, "Salomão – O Homem Mais Rico que Já Existiu", "Romance", 2, 2011, "61254590871", 6655000, NULL, NULL),
  110.     (67554421, "Bagagem", "Poesia", 5, 1972, NULL, 6655000, NULL, "19321122213"),
  111.     (10277843, "O Pelicano", "Romance", 12, 1984, NULL, 2134000, NULL, NULL);
  112.    
  113.  
  114. CREATE TABLE Livros_Autores
  115. (
  116.     numero_livro INT NOT NULL,
  117.     codigo_autor INT NOT NULL,
  118.     PRIMARY KEY (numero_livro, codigo_autor),
  119.     FOREIGN KEY (numero_livro) REFERENCES Livros (numero),
  120.     FOREIGN KEY (codigo_autor) REFERENCES Autores (codigo)
  121. );
  122.  
  123. INSERT INTO
  124.     Livros_Autores (numero_livro, codigo_autor)
  125. VALUES
  126.     (10277843, 55490076),
  127.     (32176500, 90984133),
  128.     (45112239, 22564411),
  129.     (67392217, 77548854),
  130.     (67554421, 55490076),
  131.     (77680012, 55490076),
  132.     (87659908, 85668900),
  133.     (10277843, 85668900);
  134.  
  135.  
  136. # Outras operações na base de dados.
  137.  
  138. UPDATE Funcionarios SET funcao = "Auxiliar", salario = 800 WHERE CPF = "32361298734";
  139.  
  140. DELETE FROM Usuarios WHERE CPF = "45399109881";
  141.  
  142. DELETE FROM Livros_Autores WHERE numero_livro = 32176500 AND codigo_autor = 90984133;
  143.  
  144. UPDATE livros SET CPF_usuarioReservar = NULL, CPF_usuarioRetirar = "70964411900" WHERE numero = 87659908;
  145.  
  146.  
  147.  
  148.  
  149. # Visão 1:
  150.  
  151. # Vamos organizar os dados somente de autores brasileiros, assim para todas as consultas
  152. # que envolvem essa informação não será preciso pesquisar toda a base de dados que temos,
  153. # mas apenas esta visão.
  154.  
  155. # Visão ‘livros_autores_brasileiros’:
  156. #   seleciona o número, gênero, nome dos livros e seus autores, sendo todos
  157. #   com nacionalidade brasileira.
  158.  
  159.  
  160. CREATE VIEW
  161.     livros_autores_brasileiros
  162. AS
  163.     SELECT
  164.         l.numero, l.titulo, l.genero, aut.nome, aut.nacionalidade
  165.     FROM
  166.         livros l JOIN livros_autores la JOIN autores aut
  167.     ON
  168.         l.numero = la.numero_livro AND la.codigo_autor = aut.codigo
  169.     WHERE
  170.         aut.nacionalidade = "Brasileira"
  171.     ORDER BY
  172.         numero;
  173.        
  174.        
  175. SELECT * FROM livros_autores_brasileiros;
  176.  
  177.  
  178. # Visão 2:
  179.  
  180. # Em um sistema de biblioteca em que funcionários podem retirar livros, é comum procurar
  181. # relatórios sobre esse tipo de movimentação.
  182.  
  183. # Visão ‘Funcionarios_Livros’:
  184. #   selecione os funcionários que costumam retirar livros, indicando o número, título,
  185. #   gênero dos livros e o CPF, nome, função e salário dos funcionários.
  186.  
  187.  
  188. CREATE VIEW
  189.     funcionarios_livros
  190. AS
  191.     SELECT
  192.         l.numero, l.titulo, l.genero, f.CPF, f.nome, f.funcao, f.salario
  193.     FROM
  194.         livros l JOIN funcionarios f
  195.     ON
  196.         f.CPF = l.CPF_funcionario
  197.     WHERE
  198.         l.CPF_funcionario IS NOT NULL;
  199.  
  200.  
  201. SELECT * FROM Funcionarios_Livros;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement