Advertisement
Rafael_Yuki

Untitled

Feb 29th, 2024
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- Criação da tabela de Livros
  2. CREATE TABLE IF NOT EXISTS Livros (
  3.     LivroID SERIAL PRIMARY KEY,
  4.     Titulo VARCHAR(100),
  5.     Autor VARCHAR(50),
  6.     AnoPublicacao INT
  7. );
  8.  
  9. -- Criação da tabela de Usuários
  10. CREATE TABLE IF NOT EXISTS Usuarios (
  11.     UsuarioID SERIAL PRIMARY KEY,
  12.     Nome VARCHAR(50),
  13.     Email VARCHAR(100)
  14. );
  15.  
  16. -- Criação da tabela de Empréstimos
  17. CREATE TABLE IF NOT EXISTS Emprestimos (
  18.     EmprestimoID SERIAL PRIMARY KEY,
  19.     LivroID INT,
  20.     UsuarioID INT,
  21.     DataEmprestimo DATE,
  22.     DataDevolucao DATE,
  23.     FOREIGN KEY (LivroID) REFERENCES Livros(LivroID),
  24.     FOREIGN KEY (UsuarioID) REFERENCES Usuarios(UsuarioID)
  25. );
  26.  
  27. -- Função para inserir dados fictícios na tabela Livros
  28. CREATE OR REPLACE FUNCTION InserirDadosLivros(qtdRegistros INT)
  29. RETURNS VOID AS $$
  30. DECLARE
  31.     i INT := 1;
  32. BEGIN
  33.     WHILE i <= qtdRegistros LOOP
  34.         INSERT INTO Livros (Titulo, Autor, AnoPublicacao)
  35.         VALUES (CONCAT('Livro ', i), CONCAT('Autor ', i), 2000 + i);
  36.         i := i + 1;
  37.     END LOOP;
  38. END;
  39. $$ LANGUAGE plpgsql;
  40.  
  41. -- Função para inserir dados fictícios na tabela Usuarios
  42. CREATE OR REPLACE FUNCTION InserirDadosUsuarios(qtdRegistros INT)
  43. RETURNS VOID AS $$
  44. DECLARE
  45.     i INT := 1;
  46. BEGIN
  47.     WHILE i <= qtdRegistros LOOP
  48.         INSERT INTO Usuarios (Nome, Email)
  49.         VALUES (CONCAT('Usuário ', i), CONCAT('usuario', i, '@exemplo.com'));
  50.         i := i + 1;
  51.     END LOOP;
  52. END;
  53. $$ LANGUAGE plpgsql;
  54.  
  55. -- Função para inserir dados fictícios na tabela Emprestimos
  56. CREATE OR REPLACE FUNCTION inserirdadosemprestimos(qtdemprestimosporusuario integer)
  57. RETURNS void AS $$
  58. DECLARE
  59.     usuario_id INT;
  60.     livro_id INT;
  61.     i INT := 1;
  62. BEGIN
  63.     -- Loop pelos usuários
  64.     FOR usuario_id IN (SELECT UsuarioID FROM Usuarios) LOOP
  65.         -- Loop para inserir empréstimos para o usuário
  66.         FOR j IN 1..qtdEmprestimosPorUsuario LOOP
  67.             -- Seleciona um livro aleatório
  68.             livro_id := (SELECT LivroID FROM Livros ORDER BY random() LIMIT 1);
  69.  
  70.             -- Insere o empréstimo
  71.             INSERT INTO Emprestimos (LivroID, UsuarioID, DataEmprestimo, DataDevolucao)
  72.             VALUES (livro_id, usuario_id, NOW(), NOW() + INTERVAL '1 DAY' * i);
  73.  
  74.             i := i + 1;
  75.         END LOOP;
  76.     END LOOP;
  77. END;
  78. $$ LANGUAGE plpgsql;
  79.  
  80. SELECT InserirDadosUsuarios(500);
  81.  
  82. SELECT InserirDadosLivros(15000);
  83.  
  84. SELECT InserirDadosEmprestimos(2);
  85.  
  86. SELECT InserirDadosEmprestimos(2);
  87.  
  88. SELECT InserirDadosEmprestimos(3);
  89.  
  90. SELECT InserirDadosEmprestimos(3);
  91.  
  92. SELECT InserirDadosEmprestimos(4);
  93.  
  94.  
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement