11
Banco de Dados
UFRN
8
Banco de Dados
FAZP
12
Banco de Dados
UNOPAR
22
Banco de Dados
UNINTER
14
Banco de Dados
UNINTER
6
Banco de Dados
UNOPAR
33
Banco de Dados
UNOPAR
3
Banco de Dados
UNOPAR
Texto de pré-visualização
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE INSTITUTO METRÓPOLE DIGITAL Banco de Dados Trabalho Prático da Unidade 1 SQL Básica e Intermediária Introdução e objetivos Este trabalho prático de Banco de Dados tem como objetivo proporcionar aos alunos uma experiência prática e abrangente na criação e manipulação de bancos de dados relacionais Ao longo desta atividade os alunos serão desafiados a aplicar conceitos fundamentais de SQL tais como a criação de esquemas inserção e consulta de dados além da utilização de views Ao simular um cenário real no qual foram contratados para desenvolver o banco de dados de uma empresa fictícia os alunos terão a oportunidade de consolidar seus conhecimentos teóricos através da prática Esta atividade busca não apenas desenvolver habilidades técnicas mas também estimular o pensamento crítico e a capacidade de adaptação a novas demandas preparandoos para desafios futuros em suas carreiras profissionais O trabalho tem os seguintes objetivos Compreender estruturas de banco de dados os alunos devem ser capazes de construir esquemas de banco de dados levando em consideração todos os requisitos e restrições fornecidos Manipulação de dados inserir atualizar e consultar dados de maneira eficiente respeitando as regras de integridade do banco de dados Uso de views entender a importância e a aplicação das views para simplificação de consultas complexas e segurança dos dados Análise de dados realizar consultas analíticas para responder a perguntas de negócios específicas Adaptação a mudanças ser capaz de modificar o esquema do banco de dados em resposta a novas exigências sem comprometer a integridade dos dados existentes Instruções O aluno deverá ler a seção de contexto e criar um banco de dados que atenda às demandas requeridas além de realizar as consultas indicadas nos exercícios Ao final do trabalho o código feito no software MySQL deve ser entregue no SIGAA Não é necessário nada além do código Contexto Você foi contratado para fazer o banco de dados da empresa Metrópole Informática O dono da empresa lhe disse que gostaria de armazenar no banco dados sobre produtos clientes funcionários fornecedores e vendas Ao conversar mais a fundo com o dono você conseguiu extrair as seguintes informações Cada produto tem um código único com exatamente 5 dígitos um nome único e conhecido um preço de custo maior do que 0 e é fornecido por exatamente um fornecedor Do funcionário basta saber nome CPF carga horária semanal maior do que 20 h e salário maior do que 0 Do cliente precisamos saber o número de fidelidade que deve ser um valor inteiro único que se autoincrementa e o nome Do fornecedor precisamos saber o CNPJ o nome fantasia e o telefone do contato Cada venda tem um cliente um produto a quantidade do produto maior do que zero um funcionário responsável o preço total maior do que zero a data e a hora da venda É possível que um produto seja vendido sem o auxílio de um funcionário mas obrigatoriamente deve haver um cliente vinculado à venda Obviamente não há venda sem produto Exercício 1 30 Crie o esquema do banco de dados garantindo que todos os requisitos e restrições mencionados sejam considerados Evite adicionar atributos extras como chave primária das tabelas a menos que sejam estritamente necessários Após a construção insira pelo menos 3 funcionários 5 produtos 10 clientes 2 fornecedores e 20 vendas realizadas neste mês deixando ao menos 2 delas sem funcionários responsáveis Por fim apresente o estado das tabelas após a inserção dos dados Exercício 2 10 O dono da empresa quer saber como andam os negócios de sua empresa Mostre a ele consultas exibindo as vendas de cada funcionário uma consulta por funcionário Além disso mostre uma tabela com todas as vendas mesmo aquelas que foram feitas sem auxílio incluindo o nome do fabricante e do produto além do preço de custo unitário Exercício 3 05 Os clientes gostariam de visualizar no site da empresa uma lista com o nome dos produtos ao lado dos nomes fantasia dos fabricantes Para eles não é interessante visualizar códigos ou CNPJ Além disso o dono da empresa não ficaria feliz se fossem divulgados os preços de custo dos seus produtos Crie uma view que guarde a expressão da consulta a ser usada pelo site toda vez que um cliente requisitar essa lista Exercício 4 05 O dono da empresa lhe ligou no último momento dizendo que abriu uma nova unidade da loja Por isso ele agora requisita que as vendas obrigatoriamente registrem a unidade na qual elas ocorreram Você decide alterar a relação vendas incluindo um novo atributo chamado unidade o qual não pode ser nulo Considerando que você neste ponto já inseriu tuplas demais altere a relação sem fazer qualquer alteração manual em tuplas e sem deixar que os valores do novo atributo sejam nulos mysql CREATE DATABASE metropole Query OK 1 row affected 001 sec mysql USE metropole Database changed mysql Fornecedores Query OK 0 rows affected 000 sec mysql CREATE TABLE Fornecedor cnpj CHAR14 PRIMARY KEY nomefantasia VARCHAR100 NOT NULL telefone VARCHAR20 NOT NULL Query OK 0 rows affected 002 sec mysql mysql Produtos Query OK 0 rows affected 000 sec mysql CREATE TABLE Produto codigo CHAR5 PRIMARY KEY nome VARCHAR100 UNIQUE NOT NULL precocusto DECIMAL102 NOT NULL CHECK precocusto 0 cnpjfornecedor CHAR14 NOT NULL FOREIGN KEY cnpjfornecedor REFERENCES Fornecedorcnpj Query OK 0 rows affected 004 sec mysql mysql Funcionários Query OK 0 rows affected 000 sec mysql CREATE TABLE Funcionario cpf CHAR11 PRIMARY KEY nome VARCHAR100 NOT NULL cargahorariasemana INT NOT NULL CHECK cargahorariasemana 20 salario DECIMAL102 NOT NULL CHECK salario 0 Query OK 0 rows affected 002 sec mysql mysql Clientes Query OK 0 rows affected 000 sec mysql CREATE TABLE Cliente numerofidelidade INT AUTOINCREMENT PRIMARY KEY nome VARCHAR100 NOT NULL Query OK 0 rows affected 002 sec mysql mysql Clientes Query OK 0 rows affected 000 sec mysql CREATE TABLE Cliente numerofidelidade INT AUTOINCREMENT PRIMARY KEY nome VARCHAR100 NOT NULL Query OK 0 rows affected 002 sec mysql mysql Vendas Query OK 0 rows affected 000 sec mysql CREATE TABLE Venda id INT AUTOINCREMENT PRIMARY KEY numerofidelidade INT NOT NULL codigoproduto CHAR5 NOT NULL quantidade INT NOT NULL CHECK quantidade 0 cpffuncionario CHAR11 precototal DECIMAL102 NOT NULL CHECK precototal 0 datavenda DATE NOT NULL horavenda TIME NOT NULL FOREIGN KEY numerofidelidade REFERENCES Clientenumerofidelidade FOREIGN KEY codigoproduto REFERENCES Produtocodigo FOREIGN KEY cpffuncionario REFERENCES Funcionariocpf Query OK 0 rows affected 006 sec mysql Fornecedores Query OK 0 rows affected 000 sec mysql INSERT INTO Fornecedor VALUES 12345678000190 TechSupply 11 40028922 98765432000155 InnovaLabs 21 30883300 Query OK 2 rows affected 001 sec Records 2 Duplicates 0 Warnings 0 mysql mysql Produtos Query OK 0 rows affected 000 sec mysql INSERT INTO Produto VALUES 00001Notebook Pro 15000012345678000190 00002Mouse Óptico 200012345678000190 00003Teclado Mecânico 805098765432000155 00004Monitor 24 3000098765432000155 00005SSD 1TB 1200012345678000190 Query OK 5 rows affected 000 sec Records 5 Duplicates 0 Warnings 0 mysql mysql SELECT FROM Cliente numerofidelidade nome 1 Cliente A 2 Cliente B 3 Cliente C 4 Cliente D 5 Cliente E 6 Cliente F 7 Cliente G 8 Cliente H 9 Cliente I 10 Cliente J 10 rows in set 000 sec mysql SELECT FROM Produto codigo nome precocusto cnpjfornecedor 00001 Notebook Pro 150000 12345678000190 00002 Mouse Óptico 2000 12345678000190 00003 Teclado Mecânico 8050 98765432000155 00004 Monitor 24 30000 98765432000155 00005 SSD 1TB 12000 12345678000190 5 rows in set 000 sec mysql SELECT vid AS vendaid cnome AS cliente pnome AS produto vquantidade vprecototal vdatavenda vhoravenda FROM Venda v JOIN Cliente c ON vnumerofidelidade cnumerofidelidade JOIN Produto p ON vcodigoproduto pcodigo WHERE vcpffuncionario 11122233344 CPF da Ana Silva vendaid cliente produto quantidade precototal datavenda horavenda 4 Cliente D Monitor 24 2 60000 20250404 140000 13 Cliente C Monitor 24 1 30000 20250413 093000 18 Cliente H Monitor 24 3 90000 20250416 132000 7 Cliente G Mouse Óptico 2 4000 20250407 131000 1 Cliente A Notebook Pro 2 300000 20250401 100000 10 Cliente J SSD 1TB 2 24000 20250410 110500 6 rows in set 000 sec
11
Banco de Dados
UFRN
8
Banco de Dados
FAZP
12
Banco de Dados
UNOPAR
22
Banco de Dados
UNINTER
14
Banco de Dados
UNINTER
6
Banco de Dados
UNOPAR
33
Banco de Dados
UNOPAR
3
Banco de Dados
UNOPAR
Texto de pré-visualização
UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE INSTITUTO METRÓPOLE DIGITAL Banco de Dados Trabalho Prático da Unidade 1 SQL Básica e Intermediária Introdução e objetivos Este trabalho prático de Banco de Dados tem como objetivo proporcionar aos alunos uma experiência prática e abrangente na criação e manipulação de bancos de dados relacionais Ao longo desta atividade os alunos serão desafiados a aplicar conceitos fundamentais de SQL tais como a criação de esquemas inserção e consulta de dados além da utilização de views Ao simular um cenário real no qual foram contratados para desenvolver o banco de dados de uma empresa fictícia os alunos terão a oportunidade de consolidar seus conhecimentos teóricos através da prática Esta atividade busca não apenas desenvolver habilidades técnicas mas também estimular o pensamento crítico e a capacidade de adaptação a novas demandas preparandoos para desafios futuros em suas carreiras profissionais O trabalho tem os seguintes objetivos Compreender estruturas de banco de dados os alunos devem ser capazes de construir esquemas de banco de dados levando em consideração todos os requisitos e restrições fornecidos Manipulação de dados inserir atualizar e consultar dados de maneira eficiente respeitando as regras de integridade do banco de dados Uso de views entender a importância e a aplicação das views para simplificação de consultas complexas e segurança dos dados Análise de dados realizar consultas analíticas para responder a perguntas de negócios específicas Adaptação a mudanças ser capaz de modificar o esquema do banco de dados em resposta a novas exigências sem comprometer a integridade dos dados existentes Instruções O aluno deverá ler a seção de contexto e criar um banco de dados que atenda às demandas requeridas além de realizar as consultas indicadas nos exercícios Ao final do trabalho o código feito no software MySQL deve ser entregue no SIGAA Não é necessário nada além do código Contexto Você foi contratado para fazer o banco de dados da empresa Metrópole Informática O dono da empresa lhe disse que gostaria de armazenar no banco dados sobre produtos clientes funcionários fornecedores e vendas Ao conversar mais a fundo com o dono você conseguiu extrair as seguintes informações Cada produto tem um código único com exatamente 5 dígitos um nome único e conhecido um preço de custo maior do que 0 e é fornecido por exatamente um fornecedor Do funcionário basta saber nome CPF carga horária semanal maior do que 20 h e salário maior do que 0 Do cliente precisamos saber o número de fidelidade que deve ser um valor inteiro único que se autoincrementa e o nome Do fornecedor precisamos saber o CNPJ o nome fantasia e o telefone do contato Cada venda tem um cliente um produto a quantidade do produto maior do que zero um funcionário responsável o preço total maior do que zero a data e a hora da venda É possível que um produto seja vendido sem o auxílio de um funcionário mas obrigatoriamente deve haver um cliente vinculado à venda Obviamente não há venda sem produto Exercício 1 30 Crie o esquema do banco de dados garantindo que todos os requisitos e restrições mencionados sejam considerados Evite adicionar atributos extras como chave primária das tabelas a menos que sejam estritamente necessários Após a construção insira pelo menos 3 funcionários 5 produtos 10 clientes 2 fornecedores e 20 vendas realizadas neste mês deixando ao menos 2 delas sem funcionários responsáveis Por fim apresente o estado das tabelas após a inserção dos dados Exercício 2 10 O dono da empresa quer saber como andam os negócios de sua empresa Mostre a ele consultas exibindo as vendas de cada funcionário uma consulta por funcionário Além disso mostre uma tabela com todas as vendas mesmo aquelas que foram feitas sem auxílio incluindo o nome do fabricante e do produto além do preço de custo unitário Exercício 3 05 Os clientes gostariam de visualizar no site da empresa uma lista com o nome dos produtos ao lado dos nomes fantasia dos fabricantes Para eles não é interessante visualizar códigos ou CNPJ Além disso o dono da empresa não ficaria feliz se fossem divulgados os preços de custo dos seus produtos Crie uma view que guarde a expressão da consulta a ser usada pelo site toda vez que um cliente requisitar essa lista Exercício 4 05 O dono da empresa lhe ligou no último momento dizendo que abriu uma nova unidade da loja Por isso ele agora requisita que as vendas obrigatoriamente registrem a unidade na qual elas ocorreram Você decide alterar a relação vendas incluindo um novo atributo chamado unidade o qual não pode ser nulo Considerando que você neste ponto já inseriu tuplas demais altere a relação sem fazer qualquer alteração manual em tuplas e sem deixar que os valores do novo atributo sejam nulos mysql CREATE DATABASE metropole Query OK 1 row affected 001 sec mysql USE metropole Database changed mysql Fornecedores Query OK 0 rows affected 000 sec mysql CREATE TABLE Fornecedor cnpj CHAR14 PRIMARY KEY nomefantasia VARCHAR100 NOT NULL telefone VARCHAR20 NOT NULL Query OK 0 rows affected 002 sec mysql mysql Produtos Query OK 0 rows affected 000 sec mysql CREATE TABLE Produto codigo CHAR5 PRIMARY KEY nome VARCHAR100 UNIQUE NOT NULL precocusto DECIMAL102 NOT NULL CHECK precocusto 0 cnpjfornecedor CHAR14 NOT NULL FOREIGN KEY cnpjfornecedor REFERENCES Fornecedorcnpj Query OK 0 rows affected 004 sec mysql mysql Funcionários Query OK 0 rows affected 000 sec mysql CREATE TABLE Funcionario cpf CHAR11 PRIMARY KEY nome VARCHAR100 NOT NULL cargahorariasemana INT NOT NULL CHECK cargahorariasemana 20 salario DECIMAL102 NOT NULL CHECK salario 0 Query OK 0 rows affected 002 sec mysql mysql Clientes Query OK 0 rows affected 000 sec mysql CREATE TABLE Cliente numerofidelidade INT AUTOINCREMENT PRIMARY KEY nome VARCHAR100 NOT NULL Query OK 0 rows affected 002 sec mysql mysql Clientes Query OK 0 rows affected 000 sec mysql CREATE TABLE Cliente numerofidelidade INT AUTOINCREMENT PRIMARY KEY nome VARCHAR100 NOT NULL Query OK 0 rows affected 002 sec mysql mysql Vendas Query OK 0 rows affected 000 sec mysql CREATE TABLE Venda id INT AUTOINCREMENT PRIMARY KEY numerofidelidade INT NOT NULL codigoproduto CHAR5 NOT NULL quantidade INT NOT NULL CHECK quantidade 0 cpffuncionario CHAR11 precototal DECIMAL102 NOT NULL CHECK precototal 0 datavenda DATE NOT NULL horavenda TIME NOT NULL FOREIGN KEY numerofidelidade REFERENCES Clientenumerofidelidade FOREIGN KEY codigoproduto REFERENCES Produtocodigo FOREIGN KEY cpffuncionario REFERENCES Funcionariocpf Query OK 0 rows affected 006 sec mysql Fornecedores Query OK 0 rows affected 000 sec mysql INSERT INTO Fornecedor VALUES 12345678000190 TechSupply 11 40028922 98765432000155 InnovaLabs 21 30883300 Query OK 2 rows affected 001 sec Records 2 Duplicates 0 Warnings 0 mysql mysql Produtos Query OK 0 rows affected 000 sec mysql INSERT INTO Produto VALUES 00001Notebook Pro 15000012345678000190 00002Mouse Óptico 200012345678000190 00003Teclado Mecânico 805098765432000155 00004Monitor 24 3000098765432000155 00005SSD 1TB 1200012345678000190 Query OK 5 rows affected 000 sec Records 5 Duplicates 0 Warnings 0 mysql mysql SELECT FROM Cliente numerofidelidade nome 1 Cliente A 2 Cliente B 3 Cliente C 4 Cliente D 5 Cliente E 6 Cliente F 7 Cliente G 8 Cliente H 9 Cliente I 10 Cliente J 10 rows in set 000 sec mysql SELECT FROM Produto codigo nome precocusto cnpjfornecedor 00001 Notebook Pro 150000 12345678000190 00002 Mouse Óptico 2000 12345678000190 00003 Teclado Mecânico 8050 98765432000155 00004 Monitor 24 30000 98765432000155 00005 SSD 1TB 12000 12345678000190 5 rows in set 000 sec mysql SELECT vid AS vendaid cnome AS cliente pnome AS produto vquantidade vprecototal vdatavenda vhoravenda FROM Venda v JOIN Cliente c ON vnumerofidelidade cnumerofidelidade JOIN Produto p ON vcodigoproduto pcodigo WHERE vcpffuncionario 11122233344 CPF da Ana Silva vendaid cliente produto quantidade precototal datavenda horavenda 4 Cliente D Monitor 24 2 60000 20250404 140000 13 Cliente C Monitor 24 1 30000 20250413 093000 18 Cliente H Monitor 24 3 90000 20250416 132000 7 Cliente G Mouse Óptico 2 4000 20250407 131000 1 Cliente A Notebook Pro 2 300000 20250401 100000 10 Cliente J SSD 1TB 2 24000 20250410 110500 6 rows in set 000 sec