TECNÓLOGO EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS BANCO DE DADOS I PROFA. CLEIANE GONÇALVES OLIVEIRA ATIVIDADE 15 Observe o modelo conceitual BANCOJANUARIA abaixo que trata de um sistema que cadastra diversos bancos, suas respectivas agências bancárias, clientes, empréstimos e contas. Abaixo seu respectivo modelo relacional. Banco (codigo, nome) Agencia_Bancaria (numagencia, banco_fk, endereco) Conta (numconta, saldo, tipo, numagencia_fk, banco_fk) Emprestimo (numempr, valor, tipo, numagencia_fk, banco_fk) Cliente (codigo, nome, telefone, endereco) Conta_cliente (cliente_fk, conta_fk) Emprestimo_cliente (cliente_fk, emprestimo_fk)
1. A partir do modelo relacional acima é possível afirmar que: a. Este banco de dados só conterá um banco cadastrado b. Cada banco só pode ter uma única agência relacionada. c. Cada agencia bancaria pode ter várias contas e empréstimos relacionados. d. Cada cliente só pode ter uma conta e um empréstimo. e. Cada cliente só pode ter conta em uma única agência bancária. f. Cada cliente só pode ser cliente de um banco. g. Uma conta pode ter mais de um cliente. h. Um empréstimo só pode ter um cliente relacionado. i. Cada cliente pode ter vários telefones cadastrados. j. Cada empréstimo pode ser de várias agencias bancárias. k. O campo numagencia_fk na relação conta é uma chave estrangeira que faz referência à relação agencia bancaria. l. O campo banco_fk na relação conta é uma chave estrangeira que faz referência à relação banco. 2. A partir das restrições abaixo, crie o banco de dados BANCOJANUARIA e as respectivas tabelas para cada relação do modelo relacional acima: a. Os campos {nome, endereco, telefone} podem receber caracteres; b. Os campos nome nas relações banco e cliente são obrigatórios; c. O código dos bancos, das contas, dos empréstimos e dos clientes, podem ser criados automaticamente pelo SGBD; d. O saldo da conta e o valor do empréstimo armazenam valores da moeda corrente; e. Os tipos de conta são P-Poupança e C-Conta corrente; f. Os tipos de empréstimo são C-Consignado e S-Salário; g. Não podem existir agencias com endereços iguais; h. Caso um cliente seja excluído, todas as contas e empréstimos dele devem ser excluídos. 3. Insira os seguintes registros em cada relação: Banco Código Nome 1 Banco do Brasil 2 Itaú 3 Bradesco
Agencia_bancaria Num_agencia Banco_fk Endereço 101 1 Rua A 102 1 Rua E 201 2 Rua F 203 2 Rua G 302 3 Rua F 103 1 Rua B Conta Numconta Saldo Tipo Num_agencia_fk Banco_fk 1 R$ 2000 C 101 1 2 R$ 500 P 201 2 3 R$ 3500 C 103 1 4 R$30 C 201 2 Emprestimo Numempr Valor Tipo Num_agencia_fk Banco_fk 1 R$ 12000 C 102 1 2 R$ 5000 S 302 3 3 R$ 37000 C 103 1 Cliente Codigo Nome Telefone Endereço 1 José da Silva 8989-9898 Rua Jandira, n 150 2 Amelia Oliveira 7878-8787 Rua Ametista, n 500 3 João Vicente 5454-4545 Rua Basilio, n 200 4 Josefa Almeida 3434-4343 Rua Lirio, n 34 5 Altamiro Romão 4545-5454 Rua Gracindo, n 578 Conta_cliente Cliente_fk Conta_fk 1 1 2 2 3 3 1 4 Emprestimo_cliente Cliente_fk Empréstimo_fk 4 1 3 2 2 3 4. Faça as seguintes alterações no banco BANCOJANUARIA: a. Acrescente o campo endereço à tabela Banco. b. Informe que o Itaú se localiza na Rua Principal. c. Acrescente o campo data de nascimento à tabela Cliente. d. Informe que o cliente João Vicente nasceu no dia 04/05/1962. e. O usuário do sistema inseriu a conta 1 para o cliente errado. Altere os dados informando que a conta 1 pertence ao usuário 4.
f. Atualize o endereço de todas as agencias bancarias do banco 1 para Rua Principal. g. Altere o telefone do cliente José da Silva para 1212-2121. h. Os tipos de empréstimo mudaram de sigla. Os empréstimos com sigla C passaram para G, e os com sigla S passaram para L. Atualize. i. O empréstimo do cliente 3 finalizou. Delete o registro do banco de dados. j. A conta 4 foi encerrada. Retire-a do banco. k. Informe que a conta 3 também é do cliente 2. l. Informe que o empréstimo 2 também é do cliente 1. Realize as seguintes consultas no banco: 1. Selecione o nome de todos os clientes em ordem alfabética. 2. Selecione o código, saldo e tipo das contas ordenando o resultado de forma decrescente de saldo. 3. Selecione o código, saldo e tipo das contas ordenando o resultado por tipo e valor. 4. Encontre os tipos distintos das contas. 5. Faça uma projeção dos valores dos empréstimos caso eles sofram um acréscimo de 10%. Renomeie a coluna para Projeção. 6. Selecione todas as contas com saldo > 1000. 7. Selecione todas as contas do tipo conta corrente (C) e saldo >1000. 8. Selecione todas as contas do banco 1 que sejam do tipo conta corrente(c) e saldo >1000. 9. O BANCOJANUARIA resolveu fazer uma oferta para os clientes com empréstimos do tipo salário (S) ou empréstimos que tenham valor < 5000. Exiba um relatório com os empréstimos que irão receber essa oferta. 10. Apresente quantos empréstimos irão receber a oferta da questão 10. 11. Apresente qual a média dos valores de empréstimos. 12. Apresente o valor mínimo de empréstimo. 13. Apresente o saldo mínimo em conta. 14. Apresente o valor máximo de empréstimo do banco 1. 15. Apresente quantos empréstimos o banco 1 realizou. 16. Apresente o total de empréstimos do banco 2. 17. Apresente a média do saldo das contas do banco 1. 18. Selecione todos os nomes de cliente que possuem Silva. 19. Apresente a quantidade de agências por banco. 20. Apresente a quantidade de contas por banco. 21. Apresente a quantidade de empréstimos por banco. 22. Apresente a quantidade de contas por cliente.
23. Apresente o total do saldo de contas por cliente. 24. Apresente o total de empréstimos por banco ordenando pelos que possuem maiores valores. 25. Apresente a quantidade de contas por agencia e banco. 26. Apresente o saldo total de contas do tipo conta corrente por banco. 27. Apresente o número da agencia e o nome do banco ao qual ela pertence. 28. Apresente o número da conta e o nome do banco ao qual ela pertence, ordenando por banco e pelo número da conta. 29. Apresente o nome do cliente, o número da conta que ele possui e o respectivo saldo. 30. Apresente o nome do cliente, o número do empréstimo, o valor, e o nome do banco ao qual o empréstimo pertence. 31. Apresente o nome do cliente e quantas contas possui. 32. Apresente os clientes que possuem mais de duas contas. 33. Apresente o nome do cliente e o total de empréstimo que ele possui. 34. Os clientes com saldos em conta corrente acima da média dos outras contas correntes. 35. O nome do banco com o maior valor em empréstimos. E se todos os dados fossem armazenados em uma única tabela, ao invés de várias? Todas essas 30 consultas seriam possíveis? Código do Banco CREATE DATABASE IF NOT EXISTS `bancojanuaria` /*!40100 DEFAULT CHARACTER SET latin1 */; USE `bancojanuaria`; MySQL dump 10.13 Distrib 5.5.16, for Win32 (x86) Host: 127.0.0.1 Database: bancojanuaria Server version 5.5.24-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; /*!40103 SET TIME_ZONE='+00:00' */; /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
Table structure for table `banco` DROP TABLE IF EXISTS `banco`; CREATE TABLE `banco` ( `codigo` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(100) NOT NULL, `endereco` varchar(100) DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; Dumping data for table `banco` LOCK TABLES `banco` WRITE; /*!40000 ALTER TABLE `banco` DISABLE KEYS */; INSERT INTO `banco` VALUES (1,'Banco do Brasil',NULL),(2,'Itaú','Rua Principal'),(3,'Bradesco',NULL); /*!40000 ALTER TABLE `banco` ENABLE KEYS */; Table structure for table `agencia_bancaria` DROP TABLE IF EXISTS `agencia_bancaria`; CREATE TABLE `agencia_bancaria` ( `numagencia` int(11) NOT NULL DEFAULT '0', `banco_fk` int(11) NOT NULL DEFAULT '0', `endereco` varchar(100) DEFAULT NULL, PRIMARY KEY (`numagencia`,`banco_fk`), UNIQUE KEY `endereco` (`endereco`), KEY `banco_fk` (`banco_fk`), CONSTRAINT `agencia_bancaria_ibfk_1` FOREIGN KEY (`banco_fk`) REFERENCES `banco` (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Dumping data for table `agencia_bancaria` LOCK TABLES `agencia_bancaria` WRITE; /*!40000 ALTER TABLE `agencia_bancaria` DISABLE KEYS */; INSERT INTO `agencia_bancaria` VALUES (101,1,'Rua A'),(103,1,'Rua B'),(102,1,'Rua E'),(201,2,'Rua F'),(203,2,'Rua G'),(302,3,'Rua H'); /*!40000 ALTER TABLE `agencia_bancaria` ENABLE KEYS */; Table structure for table `cliente`
DROP TABLE IF EXISTS `cliente`; CREATE TABLE `cliente` ( `codigo` int(11) NOT NULL AUTO_INCREMENT, `nome` varchar(100) NOT NULL, `telefone` varchar(15) DEFAULT NULL, `endereco` varchar(100) DEFAULT NULL, `datanascimento` date DEFAULT NULL, PRIMARY KEY (`codigo`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; Dumping data for table `cliente` LOCK TABLES `cliente` WRITE; /*!40000 ALTER TABLE `cliente` DISABLE KEYS */; INSERT INTO `cliente` VALUES (1,'José da Silva','1212-2121','Rua Jandira, n 150',NULL),(2,'Amelia Oliveira','7878-8787','Rua Ametista, n 500',NULL),(3,'João vicente','5454-4545','rua Basilio, n 200','1962-05-04'),(4,'Josefa Almeida','3434-4343','Rua Lirio, n 34',NULL),(5,'Altamiro Romão','4545-5454','Rua Gracindo, n 578',NULL); /*!40000 ALTER TABLE `cliente` ENABLE KEYS */; Table structure for table `conta` DROP TABLE IF EXISTS `conta`; CREATE TABLE `conta` ( `numconta` int(11) NOT NULL AUTO_INCREMENT, `saldo` decimal(9,2) DEFAULT NULL, `tipo` char(1) DEFAULT NULL, `numagencia_fk` int(11) DEFAULT NULL, `banco_fk` int(11) DEFAULT NULL, PRIMARY KEY (`numconta`), KEY `numagencia_fk` (`numagencia_fk`,`banco_fk`), CONSTRAINT `conta_ibfk_1` FOREIGN KEY (`numagencia_fk`, `banco_fk`) REFERENCES `agencia_bancaria` (`numagencia`, `banco_fk`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; Dumping data for table `conta` LOCK TABLES `conta` WRITE; /*!40000 ALTER TABLE `conta` DISABLE KEYS */; INSERT INTO `conta` VALUES (1,2000.00,'C',101,1),(2,500.00,'P',201,2),(3,3500.00,'C',103,1),(4,30.00,'C',201,2); /*!40000 ALTER TABLE `conta` ENABLE KEYS */;
Table structure for table `conta_cliente` DROP TABLE IF EXISTS `conta_cliente`; CREATE TABLE `conta_cliente` ( `cliente_fk` int(11) NOT NULL DEFAULT '0', `conta_fk` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`cliente_fk`,`conta_fk`), KEY `fk_conta` (`conta_fk`), CONSTRAINT `fk_conta` FOREIGN KEY (`conta_fk`) REFERENCES `conta` (`numconta`), CONSTRAINT `fk_cliente` FOREIGN KEY (`cliente_fk`) REFERENCES `cliente` (`codigo`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Dumping data for table `conta_cliente` LOCK TABLES `conta_cliente` WRITE; /*!40000 ALTER TABLE `conta_cliente` DISABLE KEYS */; INSERT INTO `conta_cliente` VALUES (4,1),(2,2),(3,3),(1,4); /*!40000 ALTER TABLE `conta_cliente` ENABLE KEYS */; Table structure for table `emprestimo` DROP TABLE IF EXISTS `emprestimo`; CREATE TABLE `emprestimo` ( `numempr` int(11) NOT NULL AUTO_INCREMENT, `valor` decimal(9,2) DEFAULT NULL, `tipo` char(1) DEFAULT NULL, `numagencia_fk` int(11) DEFAULT NULL, `banco_fk` int(11) DEFAULT NULL, PRIMARY KEY (`numempr`), KEY `numagencia_fk` (`numagencia_fk`,`banco_fk`), CONSTRAINT `emprestimo_ibfk_1` FOREIGN KEY (`numagencia_fk`, `banco_fk`) REFERENCES `agencia_bancaria` (`numagencia`, `banco_fk`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1; Dumping data for table `emprestimo` LOCK TABLES `emprestimo` WRITE; /*!40000 ALTER TABLE `emprestimo` DISABLE KEYS */; INSERT INTO `emprestimo` VALUES (1,12000.00,'C',102,1),(2,5000.00,'S',302,3),(3,37000.00,'C',103,1); /*!40000 ALTER TABLE `emprestimo` ENABLE KEYS */;
Table structure for table `emprestimo_cliente` DROP TABLE IF EXISTS `emprestimo_cliente`; CREATE TABLE `emprestimo_cliente` ( `cliente_fk` int(11) NOT NULL DEFAULT '0', `emprestimo_fk` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`cliente_fk`,`emprestimo_fk`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; Dumping data for table `emprestimo_cliente` LOCK TABLES `emprestimo_cliente` WRITE; /*!40000 ALTER TABLE `emprestimo_cliente` DISABLE KEYS */; INSERT INTO `emprestimo_cliente` VALUES (2,3),(3,2),(4,1); /*!40000 ALTER TABLE `emprestimo_cliente` ENABLE KEYS */; /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;