Prévia do material em texto
1 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 2 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 3 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Núcleo de Educação a Distância GRUPO PROMINAS DE EDUCAÇÃO Diagramação: Gildenor Silva Fonseca PRESIDENTE: Valdir Valério, Diretor Executivo: Dr. Willian Ferreira. O Grupo Educacional Prominas é uma referência no cenário educacional e com ações voltadas para a formação de profissionais capazes de se destacar no mercado de trabalho. O Grupo Prominas investe em tecnologia, inovação e conhecimento. Tudo isso é responsável por fomentar a expansão e consolidar a responsabilidade de promover a aprendizagem. 4 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Prezado(a) Pós-Graduando(a), Seja muito bem-vindo(a) ao nosso Grupo Educacional! Inicialmente, gostaríamos de agradecê-lo(a) pela confiança em nós depositada. Temos a convicção absoluta que você não irá se decepcionar pela sua escolha, pois nos comprometemos a superar as suas expectativas. A educação deve ser sempre o pilar para consolidação de uma nação soberana, democrática, crítica, reflexiva, acolhedora e integra- dora. Além disso, a educação é a maneira mais nobre de promover a ascensão social e econômica da população de um país. Durante o seu curso de graduação você teve a oportunida- de de conhecer e estudar uma grande diversidade de conteúdos. Foi um momento de consolidação e amadurecimento de suas escolhas pessoais e profissionais. Agora, na Pós-Graduação, as expectativas e objetivos são outros. É o momento de você complementar a sua formação acadêmi- ca, se atualizar, incorporar novas competências e técnicas, desenvolver um novo perfil profissional, objetivando o aprimoramento para sua atua- ção no concorrido mercado do trabalho. E, certamente, será um passo importante para quem deseja ingressar como docente no ensino supe- rior e se qualificar ainda mais para o magistério nos demais níveis de ensino. E o propósito do nosso Grupo Educacional é ajudá-lo(a) nessa jornada! Conte conosco, pois nós acreditamos em seu potencial. Vamos juntos nessa maravilhosa viagem que é a construção de novos conhecimentos. Um abraço, Grupo Prominas - Educação e Tecnologia 5 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 6 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Olá, acadêmico(a) do ensino a distância do Grupo Prominas! . É um prazer tê-lo em nossa instituição! Saiba que sua escolha é sinal de prestígio e consideração. Quero lhe parabenizar pela dispo- sição ao aprendizado e autodesenvolvimento. No ensino a distância é você quem administra o tempo de estudo. Por isso, ele exige perseve- rança, disciplina e organização. Este material, bem como as outras ferramentas do curso (como as aulas em vídeo, atividades, fóruns, etc.), foi projetado visando a sua preparação nessa jornada rumo ao sucesso profissional. Todo conteúdo foi elaborado para auxiliá-lo nessa tarefa, proporcionado um estudo de qualidade e com foco nas exigências do mercado de trabalho. Estude bastante e um grande abraço! Professor: Alan de Oliveira Santana 7 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S O texto abaixo das tags são informações de apoio para você ao longo dos seus estudos. Cada conteúdo é preprarado focando em téc- nicas de aprendizagem que contribuem no seu processo de busca pela conhecimento. Cada uma dessas tags, é focada especificadamente em partes importantes dos materiais aqui apresentados. Lembre-se que, cada in- formação obtida atráves do seu curso, será o ponto de partida rumo ao seu sucesso profissional. 8 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S O ato de registrar informações em diversos tipos de mídias é algo que a humanidade faz a milênios, porém, foi com o desenvolvimento dos Sistemas de Gerenciamento de Banco de Dados que passamos a explo- rar as informações contidas nos dados de formas sistemática e efetiva. Assim, o estudo de como manipular dados é algo essencial para as áreas que se correlacionam de alguma forma à computação e pode se tornar uma disciplina básica para todos nos próximos anos. Neste sentido, esta Unidade irá apresentar uma introdução aos bancos de dados, permitindo que o aluno possa ter uma visão geral e prática das principais técnicas e conceitos de manipulação das informações contidas nestes bancos. Para tanto, será apresentado um contexto geral e breve sobre a história dos bancos de dados, o qual, é consideravelmente recente quando comparado a outras áreas da computação e das ciências como um todo. Tomando por base a história dos bancos, serão apresentados em seguida os modelos históricos dos bancos até o modelo relacional, que embasará os métodos de gerenciamento citados nas seções seguintes. Assim, serão apresenta- dos os conceitos básicos dos bancos relacionais e o que vem a ser uma entidade, bem como um atributo, até os tipos de relacionamento e como se dá a padronização da descrição de um banco de dados relacional através dos diagramas de entidade-relacionamento. Uma vez que estes concei- tos básicos tenham sido apresentados, a linguagem de manipulação em bancos relacionais SQL começará a ser tratada, especificamente, iniciando pela álgebra relacional, que padroniza o modelo relacional. Em seguida, serão apresentados os primeiros comandos em SQL, como a criação dos bancos, tabelas e inserção e manipulação dos atributos, pelos quais será possível apresentar as diferentes formas de consultas aos dados e suas especificidades. Desta forma, como citado, espera-se que este conteúdo sirva como porta de entrada para a exploração e uso dos conceitos avan- çados dos bancos de dados. Banco de dados; Consultas; Modelo relacional. 9 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S CAPÍTULO 01 FUNDAMENTOS DOS BANCOS DE DADOS Apresentação do Módulo ______________________________________ 11 Breve História dos Bancos de Dados e suas Arquiteturas __________ Modelos de Dados ________________________________________________ Entidades e Atributos ____________________________________________ Tipos de Relacionamento ________________________________________ Diagrama Entidade-Relacionamento _____________________________ Recapitulando ___________________________________________________ 12 15 21 21 24 28 CAPÍTULO 02 INTRODUÇÃO À LINGUAGEM SQL Um Breve Contexto da Álgebra Relacional ______________________ Criando um Banco de Dados ____________________________________ Criando Tabelas ________________________________________________ Manipulando Tabelas __________________________________________ Recapitulando _________________________________________________ 32 40 40 44 48 10 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Operações de Consultas Complexas ____________________________ Recapitulando _________________________________________________ Considerações Finais ___________________________________________ Fechando a Unidade ___________________________________________ Referências ____________________________________________________ 61 67 73 74 77 Operações de Consulta Básica __________________________________ 53 CAPÍTULO 03 CONSULTAS EM BANCO DE DADOS Introdução ao Capítulo _________________________________________ 52 11 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Os bancos de dados têm ganhado cada vez mais importância com o passar dos anos, sejam em suas aplicações tradicionais em sis- temas de vendas,cadastros, entre outros, seja para análise de padrões usados nas mais diversas aplicações. Independente da aplicação, os conceitos fundamentais dos bancos de dados devem ser bem absorvidos e fixados, uma vez que são fundamentais para muitas das profissões existentes, inclusive, não ligadas à computação, gerando demandas crescentes por profissionais que atuem com bancos de dados. Desta forma, este material procurará introduzir os conceitos fundamentais dos bancos de dados, com ênfase nos bancos do modelo relacional, pois é o modelo mais usado nas aplicações gerais, ou seja, na maioria das aplicações onde se faz necessário digitalizar informa- ções e guardá-las em meios digitais. Assim, espera-se que este material sirva como meio de entra- da para os conceitos de banco de dados, auxiliando nas oportunidades de atividades remuneradas, bem como na formação de um ente capaz de contribuir com as mudanças que envolvem as sociedades tecnológi- cas atuais e futuras. Bons estudos! 12 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S BREVE HISTÓRIA DOS BANCOS DE DADOS E SUAS ARQUITETURAS A história humana contém diversas etapas compostas por de- senvolvimento de meios de sobrevivência cada vez mais efetivos, vali- dação da efetividade do meio e replicação dos resultados. Entre estes meios citados, este material irá atentar a uma im- portante ferramenta que revolucionou a forma como nossas sociedades evoluíram e evoluirão as técnicas de manipulação de informações: os bancos de dados. De forma geral, o registro histórico humano é iniciado com a escrita, porém, há muito tempo os humanos já preservavam as suas formas particulares de verem o mundo através de manifestações artís- ticas, como pinturas, criação de objetos que representavam animais, criação ou armazenamento de peças ornamentais ou de forte simbolis- mo para o indivíduos, entre outras que sobreviveram ao passar do tem- FUNDAMENTOS DOS BANCOS DE DADOS IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 13 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S po, nos permitindo vislumbrar a forma de pensar e do próprio ambiente destes humanos antigos (JUSTAMAND, 2019). Assim, podemos observar que o ato de guardar informações com objetivos específicos, muitas vezes individuais, faz parte de uma cultura geral humana. Todavia, como citado, a história humana se iniciou com a es- crita, uma forma diferenciada de comunicação, em que um ou mais in- divíduos podem registrar algo em algum material (papel, argila, entre outros), permitindo que a ideia escrita, seja transportada, replicada e, principalmente, guardada. Perceba que as citações históricas se referem ao ato de guar- dar informações de forma geral, todavia, por volta dos anos 70 do sé- culo XXI, foi desenvolvida uma estratégia eficiente para guardar estas informações, os Sistemas Gerenciadores de Banco de Dados, que per- mitiram a humanidade tratar os dados armazenados para criar soluções que nos impactam em muitos setores da vida cotidiana (ELMASRI e NAVATHE, 2005, p. 3), como veremos ainda nesta seção. Assim, de forma restrita, pode-se dizer que dados podem ser armazenados das mais variadas formas, como em livros, porém, foi através do uso de meios computacionais que estes dados passaram a ser utilizados de formas mais eficiente e prática. Antes de apresentar a história dos bancos de dados, é preciso fazer a definição do que é um dado. Dados podem ser sinônimo de in- formação ou informações capazes de serem digitalizadas em um com- putador, possuindo um significado agradado, em que é possível fazer inferências diretas ou derivadas a partir de um dado qualquer isolado. Vale ressaltar que o termo informação e dados podem aparecer em di- versas fontes como sinônimos, porém, alguns autores definem ambos de forma distinta. Da mesma forma, este trabalho define dados como um subtipo de informação, que pode ser representada através de meios computacionais. Desta forma, se destacam os Sistemas Gerenciadores de Ban- co de Dados (SGBD), sistemas ou conjunto de sistemas, com a res- ponsabilidade de permitir aos usuários construir e gerenciar bancos de dados (ELMASRI e NAVATHE, 2005, p. 3). 14 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S A história dos bancos de dados se mistura com a história das redes de computadores e da disseminação do uso de computadores em ambientes acadêmicos e de negócios. Os primeiros SGBDs eram aplicados a sistemas de grande porte físico, chamados de mainframes, os quais chegavam a ocupar salas inteiras e, até mesmo, todo o prédio onde estavam instalados. Estes primeiros SGBDs tinham como característica o registro de informações através de hierarquias, ou seja, os elementos eram re- gistrados inserindo todas suas relações em uma mesma estrutura. Este tipo de estrutura para quantidade de dados intermediárias foi uma solução com certo sucesso, porém, com o aumento da quan- tidade de dados produzidos e armazenados em computadores, o fato deste modelo de registro conter muitos dados similares em diferentes estruturas, começou a gerar gargalos de processamento e, principal- mente, de consumo de espaço, uma vez que os meios de mantimento de dados são limitados. Assim, a partir da década de 70 começaram a surgir modelos paralelos, voltados em geral a aplicações distintas e/ou aperfeiçoar os modelos anteriores. O conceito de mainframe não mudou muito nas últimas déca- das, porém, deve-se ficar atento, pois os mainframes das décadas de 60 e 70 eram máquinas muito grandes que consumiam muita energia e com poder de processamento, quando comparados a dispositivos atuais, baixos. Todavia, os mainframes atuais são compostos de con- juntos de máquinas com altíssimo poder de processamento de dados, li- gados geralmente a redes de altíssimas velocidades. Pode-se destacar os mainframes da empresa Google, que representam porções elevadas do tráfego de dados na rede mundial de computadores. Desta forma, neste período se destacaram três modelos de SGDBs principais, o hierárquico (ainda em uso e sendo aperfeiçoado), um modelo baseado em rede e o modelo de arquivos invertidos. Segundo Elmasri e Navathe (2005, p. 16), por volta dos anos 80, com o surgimento e popularização das linguagens orientadas a ob- jeto, foram desenvolvidos novos modelos de SGDBs voltados a este paradigma de programação. 15 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Todavia, apesar da rápida popularização dos bancos de dados orientados a objeto, um tipo específico de modelo de banco de dados prevaleceu como o mais usado em aplicações gerais, com um forte uso em serviços web, o modelo relacional. Surgido por volta dos anos 70, este modelo procurou reduzir a quantidade de dados repetidos em um banco através do uso de rela- ções, todavia, seu uso só se popularizou por volta do final dos anos 80, proveniente do desenvolvimento de linguagens de alto nível e da cria- ção de padrões para a criação dos SGDBs para este modelo (ELMASRI e NAVATHE, 2005, p. 16). Atualmente, os bancos de dados estão presentes em diversas áreas, com destaque para o chamado e-commerce, que utiliza técni- cas avançadas de tratamento de dados para a extração de informações úteis, como padrões de compra, perfil, consumo médio, entre outros também importantes para empresas que procuram aumentar seu poder competitivo e lucro. MODELOS DE DADOS A seção anterior tratou de aspectos gerais sobre a história dos bancos de dados, citando alguns dos diversos modelos de Gerenciado- res de Banco de Dados existentes. Apesar da predominância dos modelos baseados na entidade- -relacionamento (modelos relacionais de SGDBs), os demais modelos ainda encontram papel importantes nos dias atuais. É indiscutível o tamanho do mercado dosbancos relacionais, todavia, é importante atentar para os demais modelos, uma vez que estes podem ser usados para aplicações específicas, como o modelo orientado a objetos. Assim, indica-se que sejam feitas pesquisas em prol de procurar outros modelos além dos apresentados nesta seção, procurando ter uma visão geral destes para facilitar projetos futuros de desenvolvimento de sistemas que utilizem algum grau de registro e manipulação de dados. 16 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Assim, esta seção tratará dos principais modelos de SGDB. Modelo Hierárquico Segundo Takai, Italiano e Ferreira (2005, p. 6), o modelo hie- rárquico surgiu devido à criação dos dispositivos de armazenamento endereçáveis de dados, que utilizam os meios físicos para manter os dados através de hierarquias bem definidas. De forma simplista, o modelo hierárquico se baseia na estrutu- ra de dados árvore, em que cada novo elemento pode gerar uma nova ramificação ou ser inserido dentro de uma hierarquia já existente. Dependendo do tipo de árvore, novos elementos adicionados em um ramo existente podem ser inseridos com grau de hierarquia su- perior a outros elementos previamente inseridos através do uso de pon- teiros. Todavia, esse modelo apresenta alguns problemas ligados à inserção de dados duplicados, algo que em grandes volumes de dados pode gerar gargalos de acesso e perda das informações. A Figura 1 apresenta um esquema geral de dados segundo o modelo hierárquico. Figura 1 – Exemplo do modelo hierárquico Fonte: SIQUEIRA. Acesso em 2020. Perceba que a Figura 1 apresenta um exemplo de registro de venda em uma empresa. Note que a partir do nó RAIZ, o nó hierarquica- mente abaixo contém o nome do vendedor, cidade e data onde a venda foi realizada. Logo abaixo do nó citado estão os nós que identificam a quan- tidade de objetos vendidos, o nome do objeto e o preço total da venda. Chamemos os últimos nós citados de nós folhas, em que se for observado o nó folha mais à esquerda, que apresenta a venda de https://sites.google.com/site/uniplibancodedados1/aulas/aula-1---introducao 17 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 15 canetas, note que o nó folha central também é um registro de uma venda de canetas. Assim, para qualquer nova venda de canetas, será feito um novo registro na base de dados, repetindo o mesmo objeto. Apesar do modelo relacional resolver esse problema de repeti- ções, a simplicidade da implementação do modelo hierárquico o faz ser usado em aplicações distintas, como na comunicação entre serviços web através de linguagens como o XML e o JSON, linguagens estrita- mente hierárquicas. Vale salientar, como citado por Date (1989, p. 79), que cada registro é inserido, em geral, com suas dependências, como no exem- plo apresentado na Figura 1, em que o ato de inserir o objeto vendido depende da inserção do local e vendedor, o qual é registrado no mesmo momento que o objeto vendido. O modelo hierárquico possui três operações fundamentais, sendo elas: inserção; remoção; e atualização. O processo de inserção se dá no ato da ocorrência, em que os dados podem ser introduzidos, concomitantemente, com as depen- dências ou sendo incluídos em momento posterior ao da inserção das dependências. De forma simplista, pode-se afirmar que a inserção neste mo- delo é sempre orientada à demanda, não sendo inseridos dados previa- mente sem real necessidade. Por exemplo, se uma empresa vende carros amarelos e ver- melhos, ela só irá inserir em sua árvore de dependências a cor azul em seus registros, caso ocorra uma venda de um veículo desta cor espe- cífica. A remoção, de forma semelhante à inserção, se dá por ocor- rências ou necessidades específicas. Usando o exemplo da Figura 1 note que, se a venda das quin- ze canetas for cancelada, seu segmento superior também é removido. Todavia, se a venda do outro conjunto de canetas também for removida, resultará na completa exclusão de todos os registros de canetas no sis- tema, uma vez que as canetas não são previamente registradas. Por fim, a atualização, como o próprio nome diz, realiza opera- 18 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S ções de modificações nos dados previamente registrados. Se calcularmos o preço unitário das canetas citadas, encon- traremos o valor de R$ 3, porém, se a empresa realizar uma oferta relâmpago e a venda registrar o valor original de R$ 3, e se for preciso em seguida atualizar o valor correto, perceba que para saber o valor atual individual da última venda, é preciso fazer uma busca em todos os registros em que aparecem caneta para encontrar a data mais recente, podendo, assim, recuperar o último valor de venda do produto. Outro ponto é que se um produto tiver o nome mudado ou caso seja preciso alterar alguma informação nos registros, será necessário gerar modificações em todas as incidências em que os dados foram registrados. Vale ressaltar que este modelo foi o primeiro modelo reconhe- cido de SGDB usado massivamente, surgindo com o tempo sistemas que procuraram reduzir os problemas citados, bem como o próprio mo- delo hierárquico desenvolvido para atender às demandas por bancos de dados simples nos dias atuais. Modelo em Rede O modelo em rede pode ser entendido como uma evolução, ou extensão, do modelo hierárquico. Sua principal característica em rela- ção ao modelo apresentado na seção anterior, é o fato da possibilidade de inserção não hierárquica, em que um elemento pode ser usado em um ou mais outros registros. Por exemplo, se numa livraria, o valor da venda da última cane- ta for registrado com o valor atual na base de dados, além de ser usado o preço atual como referência no ato de registro das vendas, também permite uma consulta direcionada e mais rápida ao valor aplicado na última venda, uma vez que só será preciso consultar o valor em um dos registros. Assim, mesmo que o modelo em redes possua as mesmas operações que o modelo hierárquico, esse apresenta vantagens nítidas em todas as operações. A necessidade imediata citada está vinculada ao fato de que os dados atualizados ou inseridos poderão ser usados a qualquer momen- to, não existindo a possibilidade de uso provável. Assim, vender carros 19 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S azuis implicará no registro desta cor de carro, porém, não vender carros amarelos, implicará no não registro prévio deste tipo de carro. O exemplo citado de inserção já contempla a vantagem de reu- tilizar dados, porém, também permite que dados sejam inseridos pre- viamente para usos futuros, mesmo que continuem sendo orientados a registros e necessidades imediatas. A Figura 2 apresenta um exemplo do modelo em redes. Figura 2 – Exemplo do modelo em rede Fonte: Takai, Italiano e Ferreira (2005, p. 7) Note que a Figura 2 apresenta um exemplo de registro de con- ta bancária simplificado, com alguns clientes possuindo mais de uma conta aberta em seus nomes. Assim, o registro da pessoa poderá se vincular a um ou mais registros de contas. Este fato retoma as operações no modelo, uma vez que atualizar os dados de um cliente não necessitará de mudanças em mais de um registro. Por exemplo, se o cliente mudar de cidade, só será preciso al- terar essa informação em seu registro, não gerando impactos em seus dependentes. De forma similar, a exclusão de registros é simplificada, uma vez que as dependências ou dependentes podem ser identificados de 20 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S forma mais simples que no modelo hierárquico. Modelo Orientado a Objetos O modelo orientado a objetos foi introduzido procurando aten- der demandas advindas do paradigma de orientação a objetos. Além do exposto, nos anos iniciaisa seu surgimento, muitos de seus adeptos pensaram que este modelo seria um concorrente direto ao modelo re- lacional. Uma de suas principais características em relação ao modelo relacional é a inserção de conceitos como encapsulamento, herança, mo- delos abstratos de dados, entre outros advindos da orientação a objeto. Todavia, Elmasri e Navathe (2005, p. 16), apresentam fatos que explicam o motivo pelo qual os bancos orientados a objeto não serem amplamente usados atualmente, sendo eles a complexidade do modelo e a falta de padrões nos primeiros anos após seu surgimento, sendo atualmente aplicados principalmente em sistemas especialistas. Modelo Relacional Buscando resolver problemas existentes nos modelos hierár- quicos e em redes, surgiu ainda por volta dos anos 70, o modelo rela- cional. Este modelo procurou, entre outros meios, dar maior indepen- dência aos dados, desenvolver uma forma sistematizada de reuso de dados, facilitar a manutenção de bancos complexos e se basear em re- gras matemáticas bem fundamentadas a fim de padronizar os métodos de gerenciamento dos dados, se tornando mais flexível para as diversas aplicações que estavam surgindo e demandando gerencias dos dados (TAKAI, ITALIANO e FERREIRA, 2005, p. 8). Assim, tomando por base conceitos da lógica de primeira or- dem (modelo em que os dados de diferentes formatos, como números, texto, entre outros, são processados através de regras de tratamento que derivam e expandem a lógica booleana, que só utiliza números como entradas) e outros fundamentos da álgebra e teoria dos conjun- tos, foi criado um conceito na ciência da computação denominado álge- bra relacional, pelo qual se dá a fundamentação dos padrões de geren- ciamento de dados no modelo relacional. Além do exposto, e como o nome do modelo cita, as relações são uma das principais características do modelo, o qual também é composto de operações de inserção, exclusão e alteração, porém, ex- pande consideravelmente, em relação aos modelos que o precederam 21 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S e à forma de manipulação dos dados. Nas seções seguintes será abordado o modo como se dá a es- trutura básica de um registro, os tipos de relacionamento, os conceitos gerais do diagrama de entidade-relacionamento, bem como um estudo de caso para exemplificar o modelo. ENTIDADES E ATRIBUTOS O modelo relacional define terminologias específicas no tra- tamento dos dados, em que até o momento utilizamos termos como registros e valores para identificar os dados em um banco de dados. Neste sentido, o modelo relacional define termos padronizados de dados, sendo alguns dos principais as entidades, os relacionamen- tos e os atributos. Uma entidade pode ser entendida como um registro, ou um objeto na base de dados. Um relacionamento é a forma como as entida- des se conectam e trocam dados e, por fim, os atributos são os dados presentes nas entidades. Assim, registrar uma compra em um SGDB se dá em forma de entidades. As informações do produto, data, vendedor, entre outros, são os atributos e, por fim, a relação é a forma como o SGDB gerencia o fato dos produtos, vendedores e vendas serem entidades com atributos próprios que se relacionam. TIPOS DE RELACIONAMENTO Esta seção abordará de forma simplificada os tipos de relacio- namento no modelo relacional, sendo eles dos tipos: 1 para 1 (1:1); 1 para n (1:n); e n para n (n:n). Apesar dos três exemplos citados, cada tipo possui derivações, em que são aplicadas regras distintas. É preciso citar, primeiramente, que cada entidade é represen- tada por uma estrutura chamada de tabela, que é composta de linhas denominadas tuplas, colunas denominadas de atributos e atributos identificadores únicos das entidades chamados de chaves. Assim, os relacionamentos se dão entre as tabelas através de quantidades de interações entre seus objetos. Estas quantidades cita- das são chamadas de cardinalidade. Por exemplo, os dados apresentados na Figura 2, onde um cliente de um banco poderia possuir uma ou mais contas. Note que uma 22 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S conta, por sua vez, só poderia estar vinculada a uma pessoa. Assim, a relação se dá no tipo 1:n, em que um cliente pode ter até n contas, com n sendo maior que 0, obrigatoriamente. Assim, perceba que a relação entre o cliente e a quantidade de contas será de: 1,1 para 1,n Caso ao cliente fosse permitido fazer o cadastro no banco sem, necessariamente, abrir uma conta, sua relação seria de: 1,1 para 0,n Perceba que o uso das vírgulas no relacionamento define a quantidade mínima de objetos na relação, assim, 1,1 significa que um e, unicamente, um cliente poderá ter de zero até infinitas contas abertas (0,n), como mostrado no exemplo acima. Assim, o valor antes da vírgula define o número mínimo de ob- jetos na relação, e o segundo valor define o número máximo, bem como é o identificador da relação. Por exemplo, a relação 1,n para 0,1 é do tipo n:1, uma vez que os últimos valores presentes em cada relação, respectivamente, são o n e o 1. A Figura 3 apresenta um esquema geral com todas as combi- nações para cada relação. Note que existem três regras de implementação, tabela pró- pria, adição de coluna e fusão de tabelas, que podem ser aplicadas de formas obrigatória, facultativa e proibida. Tabela própria significa que, após a relação, cada entidade mantém suas próprias tabelas independentes. 23 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Figura 3 – Combinações das relações Fonte: Heuser (1998, p. 105). 24 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Cada entidade deve ser constituída de um ou mais identifica- dores chamados de chaves primárias, que quando são referenciadas em outras tabelas, passam a se chamar chaves estrangeiras. Assim, a adição de coluna significa que uma das entidades deverá receber a chave primária da outra em sua tabela como chave estrangeira. Por fim, a fusão de tabelas é quando ambas tabelas geram uma nova tabela identificada por suas respectivas chaves e podendo conter outros atributos. Este tipo de tabela gerada pela relação de duas ou mais outras entidades, gera as chamadas entidades fracas, entidades que não pos- suem chave primária. Por sua vez, as entidades que fornecem as cha- ves primárias para identificação das entidades fracas, são chamadas de entidades fortes (ELMASRI e NAVATHE, 2005, p. 16). Assim, dão-se os relacionamentos e seus conceitos fundamen- tais, os quais serão explorados nos capítulos seguintes. DIAGRAMA ENTIDADE-RELACIONAMENTO Um Diagrama Entidade-Relacionamento (DER) é uma estrutu- ra que permite uma visualização da estrutura de um banco, sendo com- posto de elementos como retângulos, losangos, círculos, entre outros elementos. Diferentes autores e ferramentas apresentam diferenças nes- tes elementos, como no caso dos atributos, que podem ser representa- dos por pequenos círculos com o nome do atributo dentro ou fora, bem como com as chaves primárias representadas por círculos coloridos ou pelo nome do atributo sublinhado. De forma geral, os elementos principais são: • Retângulos: representam as entidades; • Losangos: representam os relacionamentos; • Círculos sem preenchimento de cor: atributos normais; • Círculos com preenchimento: atributo chave (chave primária). 25 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S A cardinalidade se dá entre os relacionamentos com os valores representados dentro de parênteses. Além da representação através de elementos geométricos, o modelo também prevê a representação textual destes mesmos elemen- tos. A seguir será apresentado um estudo de caso onde serão expostas ambas as visualizações. A Figura 4 apresenta um DER para o exemplode um sistema de venda simplificado. Figura 4 – Exemplo de DER Fonte: Elaborado pelo autor (2020). Perceba que uma venda é consolidada no sistema ao ser inse- rido um conjunto maior que um de objetos a um vendedor, identificado pela cardinalidade apresentada próximo da relação (venda). A entidade Produtos é composta por quatro atributos, sendo eles: id (chave primária), preço última venda, nome e preço atual, po- dendo a venda ser composta por um ou mais produtos. Por sua vez, a entidade Vendedor é composta por apenas um 26 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S atributo, o qual, também, é o atributo chave, sendo permitido apenas um vendedor para cada venda. A relação Venda é composta por quatro atributos, sendo uma entidade fraca, não possui atributo chave, sendo identificada pelas cha- ves estrangeiras produtos e vendedor, bem como os atributos data da venda e valor da venda. Assim se dá a relação no DER. Por sua vez, o diagrama ER também prevê a estruturação textual dos elementos, sendo as entida- des representadas por textos diretos seguidos por atributos apresenta- dos dentro de parênteses. Por fim, as chaves primárias são apresenta- das com sublinhado e as chaves estrangeiras recebem uma descrição referenciando a entidade de origem. A Figura 5 apresenta um exemplo da visualização textual do DER. Note que a relação também é apresentada. Figura 5 – Exemplo de DER textual Produtos (ID Produto, Preço última venda, Preço atual, Nome) Vendedor (ID Vendedor) Venda (Data da venda, Valor da venda, ID Vendedor, ID Produto) ID Vendedor Referencia Vendedor ID Produto Referencia Produtos Fonte: Elaborado pelo autor (2020). Note que as linhas 4 e 5 do texto dos elementos do DER repre- sentam os atributos chaves estrangeiras e suas respectivas entidades. Assim, concluímos a apresentação dos fundamentos dos ban- cos de dados. Filme sobre o assunto: A REDE SOCIAL. Dirigido por David Fincher. Estados Unidos: Relativity Media e Trigger Street Productions, 2010. 1 DVD. Acesse os links: REIS, Fábio dos. 1 Vídeo (13 min). 10 Conceitos de Bancos de Dados que todo estudante precisa conhecer. Publicado pelo canal 27 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Bóson Treinamentos, 2019. Disponível em: <https://www.youtube.com/ watch?v=2E7crqRI1iE>. Acesso em 17 ago. 2020. REIS, Fábio dos. 1 Vídeo (20 min). Modelagem de Dados: Con- ceitos de Bancos de Dados. Publicado pelo canal Bóson Treinamentos, 2017. Disponível em: <https://www.youtube.com/watch?v=Q_KTYFg- vu1s>. Acesso em 17 ago. 2020. 28 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S QUESTÕES DE CONCURSOS QUESTÃO 1 Ano: 2020 Banca: IBADE Órgão: Pref Vila Velha Prova: Analista Uma das estruturas de bancos de dados é a que tem o formato co- nhecido por “árvore”. Nessas estruturas, cada registro tem apenas um possuidor. Esse modelo é chamado: a) hierárquico. b) indexado. c) block chain. d) relacional. e) sequencial. QUESTÃO 2 Ano: 2019 Banca: VUNESP Órgão: CM Piracicaba Prova: Adminis- trador de Rede Sobre o modelo hierárquico de bancos de dados, é correto afirmar que a) um registro não pode ser pai de mais de um registro filho. b) um registro pai pode ter relacionamento com, no máximo, 3 registros filhos. c) um registro do tipo raiz só pode ter relacionamento com um único registro filho. d) um registro do tipo raiz não participa como registro filho em qualquer relacionamento. e) o campo de um registro filho admite apenas tipos de dados inteiros. QUESTÃO 3 Ano: 2018 Banca: CEBRASPE (CESPE) órgão: CGM João Pessoa Prova: Auditor Municipal de Controle Interno A respeito de bancos de dados, julgue o item a seguir. Nos bancos de dados construídos sob a concepção do modelo hierárquico, os dados são estruturados em hierarquia ou árvores cujos nós contêm ocorrências de registros, e cada registro consis- te em uma coleção de atributos. ( ) Certo ( ) Errado QUESTÃO 4 Ano: 2018 Banca: CEBRASPE (CESPE) Prova: Oficial Técnico de Inteligência A respeito de sistemas gerenciadores de banco de dados, julgue o 29 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S próximo item. Em um sistema hierárquico, o servidor que recebe pedidos de con- sultas e distribui essas consultas para origens de dados remotas é denominado servidor hierárquico. ( ) Certo ( ) Errado QUESTÃO 5 Ano: 2018 Banca: VUNESP Órgão: Prova: Analista de Sistemas Em um modelo hierárquico de dados, a) cada registro, com exceção da raiz, participa como filho em pelo me- nos dois relacionamentos. b) cada registro sempre participa como folha e como pai em dois rela- cionamentos. c) um registro pode participar como pai em apenas um relacionamento. d) um registro que não participe como pai em qualquer relacionamento é denominado folha. e) um registro que não participe como folha em qualquer relacionamen- to é denominado esquema. QUESTÃO DISSERTATIVA– DISSERTANDO A UNIDADE Uma empresa deseja desenvolver um registro de clientes para criação de um sistema de premiação por fidelidade, por isso irá gameficar a pontuação e a evolução dos clientes dentro do sistema, oferecendo descontos e produtos personalizados para certos níveis de pontos acu- mulados. Assim, a empresa o procurou para que desenvolver esta base de da- dos, que irá interagir com um programa escrito em html, Java script, php e pyton, para análise dos dados. Assim, é esperado que você desenvolva um diagrama entidade- relacio- namento para descrever os elementos que irão compor o banco, com os programadores ficando encarregados de implementá-lo no sistema. Após criar o diagrama, descreva seu funcionamento através de um tex- to dissertativo argumentativo, em que será descrita a motivação para os elementos que estão presentes no diagrama, com o texto tendo entre 5 e 10 páginas, podendo conter imagens para melhor elucidação das escolhas. DICA 1: Para o desenvolvimento do diagrama, existem diversas ferra- mentas gratuitas na internet, sendo indicado, não prioritariamente, o site draw io, onde poderão ser encontrados os elementos necessários para a criação dos diagramas, sendo necessárias contas de terceiros para 30 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S salvar os diagramas em nuvens, como o google drive. DICA 2: Um banco como este deverá possuir tabelas para os clientes, para os produtos comercializados, bem como, para registrar as com- pras e o sistema de pontuação. DICA 3: Atente para o uso das chaves primárias em todas as tabelas, salvo as entidades fracas, como por exemplo, uma tabela para conter as vendas formadas pela relação entre as entidades fortes das tabelas clientes e produtos, cabendo ao aluno definir e justificar quais são os atributos de cada tabela. TREINO INÉDITO Assunto: Modelo Hierárquico O modelo hierárquico foi um dos principais modelos utilizados durante o surgimento dos SGDBs, sendo considerado o primeiro modelo criado. Apesar da evolução através de outros modelos, o modelo hierárquico ainda é utilizado, pois possui as seguintes vantagens: a) É ideal para modelos de bancos de dados grandes e complexos. b) Este modelo é baseado na álgebra relacional, algo que permite uma boa padronização para os desenvolvedores. c) É indicado para sistemas embarcados, pois é compatível com o pa- radigma estruturado. d) Por ser simples de se desenvolver, é indicado para operações com bancos pequenos, como na comunicação entre páginas web. e) Tem como vantagem ser leve e de fácil implementação, porém, foi completamente substituído pelo modelo em redes, não existindo aplica- ções que façam uso dele atualmente. NA MÍDIA PROTOCOLO GRIT PERMITE TRANSAÇÕES DISTRIBUÍDAS EM MI- CROSERVICES DE MÚLTIPLOS BANCOS DE DADOS Na Conferência Internacional da IEEE sobreEngenharia de Dados (ICDE) 2019, os engenheiros do eBay apresentaram um documento so- bre um protocolo para transações distribuídas ACID usando múltiplas bases de dados, GRIT. O suporte a vários bancos de dados é essencial para permitir o uso do GRIT a microservices, que geralmente são imple- mentados em diferentes idiomas e podem usar vários bancos de dados subjacentes. Em ambientes que envolvem vários bancos de dados independentes, o protocolo tradicional two-phase commit (2PC) era essencialmente a 31 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S única opção para transações distribuídas pelo sistema sem esforço adi- cional na aplicação. No entanto, não funciona bem em uma plataforma que precisa escalar, devido aos longos caminhos de potencialmente muitos participantes coordenando e ao bloqueio necessário ao longo das fases. Por outro lado, o uso de um log de transações executado por uma estrutura como o Saga incorrerá em lógica de compensação complexa por aplicativos e poderá ter implicações nos negócios devido a transações parcialmente bem-sucedidas irreversíveis. Fonte: InfoQ Data: 19/12/2019 Leia a notícia na íntegra: <https://www.infoq.com/br/news/2019/12/ eBay-grit-multidb-transactions/>. NA PRÁTICA A VIDA E OS DESAFIOS DE UMA DBA Trata-se de entrevista realizada com a convidada Danielle Monteiro, que é mestre em Engenharia da Computação, Microsoft MVP e Mon- goDB Female Innovator, além de colunista da própria revista iMasters. Danielle começou a trabalhar com tecnologia no segundo semestre da faculdade. Era desenvolvedora e, apesar de adorar o que fazia, alega que a transição para a área de dados foi natural. Quando conheceu o SQL Server 2005, se apaixonou! Hoje, ela trabalha com arquitetura de dados e participa de diversas comunidades, ministra treinamentos, es- creve artigos e mantém um blog, o DB4Beginners.com. Nesta entrevista, ela fala mais sobre a atuação dos arquitetos de ban- cos de dados, a (às vezes conturbada) relação desses profissionais com desenvolvedores e sobre o mercado em questão. Confira abaixo uma das perguntas e respostas da entrevista realizada. Revista iMasters: Como arquiteta de dados, qual é o seu maior desafio quando falamos da dificuldade de gerir essa enorme quantidade infor- mações? Daniele Monteiro: São vários os desafios. O maior deles é ter governan- ça de dados e agilidade (ao mesmo tempo e em igual proporção). Outro é conhecer a linhagem dos dados mesmo tendo uma quantidade enor- me de sistemas e integrações; também é importante (e difícil) garantir a segurança e integridade em bancos de dados NoSQL. E por fim, mas não menos importante, estar aderente às leis cada vez mais rígidas, como a GDPR e a Lei Geral de Proteção de Dados. Fonte: CARDOSO, Rodrigo. A vida e os desafios de uma DBA. iMas- ters. 27 nov. 2018. Disponível em: <https://imasters.com.br/banco-de- -dados/vida-e-os-desafios-de-uma-dba>. Acesso em 18 ago. 2020. 32 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S UM BREVE CONTEXTO DA ÁLGEBRA RELACIONAL Esta seção procurará apresentar de formas direta e simplifica- da uma visão geral sobre a álgebra relacional citada no capítulo ante- rior, procurando relacionar as operações com a linguagem aplicada nos SGDBs baseados no modelo relacional, chamada de SQL. A álgebra relacional pode ser definida como uma linguagem de consulta e alteração formal, composta por um conjunto sequencial de expressões de alto nível sobre relações que produzem novas relações, em que sua principal função é sustentar a fundamentação teórica para o estudo de linguagens de consulta de bancos de dados relacional, como o mencionado SQL. A álgebra relacional é composta por dois tipos de expressões, as primitivas – seleção, projeção, produto cartesiano, união e diferença – e derivadas – interseção, junção e divisão (DATE, 1989, p. 78). INTRODUÇÃO À LINGUAGEM SQL IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 33 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S A seguir será apresentada, isoladamente, cada uma das ex- pressões. Seleção (σ) A seleção é uma operação que recebe uma única entrada (unária) descrita como σφ(R), onde φ é uma fórmula hipoteticamente verdadeira definida através da utilização de operadores de comparação (=, <=, >, >=, ≠), podendo ou não conter operadores lógicos como ˄(e), ˅(ou) e ¬(negação), resultando na seleção de todas as tuplas de R que possuam a premissa φ como verdade (TAKAI, ITALIANO e FERREIRA, 2005, p. 49). Se considerarmos uma tabela que contém um conjunto de clientes associados a um clube, identificados pelos atributos nome, so- brenome, ano de associação e sexo, se for necessário identificar todos os sócios do sexo masculino que se associaram antes de 2018, por exemplo, deve ser aplicada a seguinte expressão: σAno<2018˄Sexo=‘M’(Cliente) As tabelas 1, 2 e 3 apresentam, respectivamente, a tabela ori- ginal, a aplicação da expressão e a tabela resultante. Tabela 1 – Dados originais (Seleção) Nome Sobrenome Ano de entrada Sexo Fabio Filho 2019 M João Augusto 2013 M Maria Fernandes 2011 F Rita Melo 2020 F Fonte: Elaborado pelo autor (2020). Tabela 2 – Expressão aplicada (Seleção) Nome Sobrenome Ano de entrada Sexo σAno<2018˄Sexo=‘M’(Cliente) Fabio Filho 2019 M F João Augusto 2013 M V Maria Fernandes 2011 F F Rita Melo 2020 F F Fonte: Elaborado pelo autor (2020). 34 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Tabela 3 – Dados resultantes (Seleção) Nome Sobrenome Ano de entrada Sexo João Augusto 2013 M Fonte: Elaborado pelo autor (2020). Projeção (π) A projeção é uma operação que recebe apenas uma entrada (unária) descrita como: π(a1,…,an)(R) Onde a1,…,an é o conjunto de atributos pertencentes a R e o resultado é um novo conjunto contendo as tuplas de R que são restritas ao conjunto a1,…,an. Assim, uma tabela com dados quaisquer, a projeção será dada pela indicação de quais elementos deverão ser mantidos na nova tabe- la. A fim de visualizar um exemplo de projeção, vide tabelas 4 e 5, que representam, respectivamente, a tabela original e a tabela projetada (TAKAI, ITALIANO e FERREIRA, 2005, p. 50). Tabela 4 – Dados originais (Projeção) Nome Sobrenome Telefone André Franco 11111-1111 Luiza Franco 22222-2222 Margarete Garcia 33333-3333 Fonte: Elaborado pelo autor (2020). Sobre os dados da tabela 4, é aplicada a expressão: πNome, Telefone (NomeTabela) Com nome Dados Originais sendo o nome fictício dado a Tabe- la 4 e o resultado da projeção sendo apresentado na Tabela 5. 35 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Tabela 5 – Dados resultantes (Projeção) Nome Telefone André 11111-1111 Luiza 22222-2222 Margarete 33333-3333 Fonte: Elaborado pelo autor (2020). Note que as colunas que permaneceram foram indicadas na expressão citada acima. Produto Cartesiano (×) O produto cartesiano é uma operação que recebe duas ou mais relações como entrada, descritas como: (R1)×...×(Rn) Onde R1, …, Rn são as relações, cujo resultado é composto por um outro conjunto contendo todas as combinações possíveis entre as tuplas contidas nas relações (ELMASRI e NAVATHE, 2005, p. 44). Assim, a quantidade de tuplas geradas é exatamente o produto entre as tuplas de entrada. As Figuras 6, 7 e 8 representam, respectivamente, uma tabela chamada cadastro de cliente, operações de pedidos e o produto carte- siano entre ambos. Tabela 6 – Tabela Cadastro (Produto cartesiano) Nome Código Marcos 1 Priscila 2 Fonte: Elaborado pelo autor (2020). Tabela 7 – Tabela Pedido (Produto cartesiano) Número Valor 1 R$100 2 R$150 Fonte: Elaborado pelo autor (2020). 36 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Tabela 8 –Dados resultantes (Produto cartesiano) Cliente.Número Clientte.Nome Pedido Número Pedido.Valor 1 Marcos 1 R$100 1 Marcos 2 R$150 2 Priscila 1 R$100 2 Priscila 2 R$150 Fonte: Elaborado pelo autor (2020). União (∪) Segundo Costa (2009, p. 36), diferente das expressões ante- riores, a união é uma operação que somente pode ser executada sobre duas relações, ditas compatíveis, ou seja, que devem possuir mesmo grau (ou número de colunas), descrito como: (R1) ∪ (R2) O resultado esperado é a união das duas relações subtraindo as duplicidades na nova relação gerada. Para exemplificar, tomemos por base a tabelas 9 - Funcioná- rios, tabela 10 - Clientes e tabela 11, que representa a união das duas tabelas supracitadas. Tabela 9 – Tabela Funcionários (União) Nome CPF Alfredo 000.000.000-00 Diego 111.111.111-11 Flavia 222.222.222-22 Fonte: Elaborado pelo autor (2020). Tabela 10 – Tabela Clientes (União) Nome CPF Alfredo 000.000.000-00 Bianca 333.333.333-33 Diego 444.444.444-44 Loiza 555.555.555-55 Fonte: Elaborado pelo autor (2020). 37 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Tabela 11 – Resultado da expressão (União) Nome CPF Alfredo 000.000.000-00 Diego 111.111.111-11 Flavia 222.222.222-22 Bianca 333.333.333-33 Diego 444.444.444-44 Loiza 555.555.555-55 Fonte: Elaborado pelo autor (2020). Diferença (-) Assim como na união, a diferença necessita de duas relações compatíveis, com a expressão definida como: (R1) - (R2) Essa expressão resulta na diferença de R1 em relação a R2, ou seja, tudo que há em R1 e que não existe em R2 (COSTA, 2009, p. 39). Tomemos por base os dados apresentados nas tabelas 9 e 10, em que a expressão de diferença será aplicada, com os dados resultan- tes apresentados na tabela 12. Tabela 12 – Resultado da expressão (Diferença) Nome CPF Diego 111.111.111-11 Flavia 222.222.222-22 Fonte: Elaborado pelo autor (2020). Interseção (∩) A interseção necessita de duas relações compatíveis de entra- da e é definida pela seguinte expressão: (R1) ∩ (R2) A resultante da expressão acima é uma nova relação que pos- 38 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S sui as tuplas que são pertencentes a R1 e R2, simultaneamente, ou seja, tudo que há em R1 e R2 ao mesmo tempo (TAKAI, ITALIANO e FERREIRA, 2005, p. 53). De forma similar a representação exemplificada na tabela 12, os dados que serão utilizados como base para a aplicação da interse- ção estão presentes nas tabelas 9 e 10, em que a resultante da expres- são está presente na tabela 13. Tabela 13– Resultado da expressão (Interseção) Nome CPF Alfredo 000.000.000-00 Fonte: Elaborado pelo autor (2020). Junção (⨝) A junção necessita de duas relações de entrada e é definida como: (R1)⨝<condição>(R2) Onde R1 e R2 são as relações de entrada e <condição> é uma condição hipoteticamente verdadeira que resulta em uma nova relação que possui a junção das tuplas de R1 e R2 de acordo com a condição, ou seja, concatena as tuplas (COSTA, 2009, p. 43). As tabelas 6 e 7 serão usadas como referência para a apli- cação da junção, em que o resultado da expressão está presente na tabela 14. Tabela 14 – Tabela Cadastro (Junção) Nome Código Número Valor Marcos 1 1 R$100 Priscila 2 2 R$150 Fonte: Elaborado pelo autor (2020). Divisão (/) A divisão necessita de duas relações de entrada, sendo defini- da pela expressão: R1/R2 39 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S O resultado desta expressão é uma nova relação contendo as tuplas em R1 que possuam todas as combinações em R2. (TAKAI, ITA- LIANO e FERREIRA, 2005, p. 58). Por exemplo, se for necessário saber quais alunos, presentes em uma tabela com suas respectivas classes matriculadas, estão ma- triculados em uma base de dados quaisquer ao mesmo tempo, teremos três conjuntos de operações: a tabela de entrada, a restrição e a saída contendo os dados restringidos. Tomemos por base a os dados apresentados nas tabelas 15 e 16, os quais, apresentem, respectivamente, um registro de alunos por disciplinas e uma tabela para uso da divisão, onde será baseada nas disciplinas. Assim, a tabela 17 apresenta o resultado da expressão so- bre as tabelas citadas. Tabela 15 – Tabela Aluno (Divisão) Nome Disciplina Luciano Banco de dados Michael Programação estruturada Teddy Orientação a objetos Luiz Programação estruturada Fonte: Elaborado pelo autor (2020). Tabela 16 – Tabela Divisão (Divisão) Disciplinas Programação estruturada Orientação a objetos Fonte: Elaborado pelo autor (2020). Tabela 17 – Resultado da expressão (Divisão) Nome Luciano Fonte: Elaborado pelo autor (2020). Neste capítulo, as seções seguintes apresentarão conceitos da aplicação da álgebra relacional através da linguagem de manipulação de banco de dados SQL, apresentando como se dá a criação dos ban- cos, tabelas, entre outros conceitos vinculados. 40 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S CRIANDO UM BANCO DE DADOS Para criar um banco de dados, deve-se primeiramente definir o SGBD que permitirá criar e utilizar um banco de dados, existindo di- versas opções livres ou proprietárias, como o PostgresSQL, Firebird, MySQL, Oracle, entre outros. A linguagem SQL é utilizada em todos os SGDBs citados, uma vez que uma das premissas da linguagem é definir um padrão global de manipulação de dados, objetivando a simplicidade e facilidade de uso. A sintaxe básica para a criação de um banco de dados é definida pela seguinte expressão: CREATE DATABASE nome da base de dados O comando CREATE DATABASE é responsável por “dizer” ao SGBD que estamos criando uma nova base de dados, com o nome des- ta base inserido logo em seguida (BEIGHLEY, 2010, p. 16). CRIANDO TABELAS Tipos de dados Antes de iniciar a criação de tabelas em um banco de dados, deve-se ter em mente os tipos de dados a serem utilizados para que o banco seja o mais eficiente e leve possível. Esse fato irá influenciar diretamente no tempo de resposta du- rante uma consulta ou até mesmo uma inserção mais complexa Dentre os tipos de dados básicos para os atributos de uma tabela, pode-se destacar os (ELMASRI e NAVATHE, 2005, p. 150-151): • Números - Inteiro (INT): é o tipo que armazena números inteiros variando de -231 a 231-1; - Reais (REAL): é o tipo que armazena números reais variando de -3,40E+38 a 3,40E+38. 41 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S • Lógicos - Bool: é o tipo que armazena valores lógicos como ‘TRUE” (VERDADEIRO) e ‘FALSE’ (FALSO). • Cadeias de caracteres - Char (n): é o tipo de dados que armazena cadeias de caracte- res e n representa o número máximo de caracteres permitidas, note que esta quantidade será sempre fixa e caso não seja totalmente preenchi- da o SGBD automaticamente preencherá o restante como vazio. - Varchar (n): assim como o char este tipo armazena uma ca- deia de caracteres onde n é o tamanho máximo, diferindo apenas que o varchar armazenará no banco apenas a quantidade de caracteres inseridas pelo usuário. • Datas e Horas - Date: é o tipo que armazena uma data no formato YYYY-MM- -DD variando de ‘1000-01-01’ a ‘9999-12-31’. - Time: é o tipo que armazena horas no formato hh:mm:ss va- riando de ‘-838:59:59’ a ‘838:59:59’. Criação de tabelas Para criar novas tabelas em um banco de dados, a sintaxe do comando utilizado em SQL será a seguinte, apresentada na Figura 6: Perceba que primeiramente se deve inserir o comando CREA- TE TABLE, como descrito, seguido do nome que se quer dar a nova tabela. Em seguida, entre os parênteses serão criadas as colunas se- guidas de seus respectivos tipos, separando cada um destes atributos por vírgulas e finalizando fechando os parênteses e incluindo o ponto e vírgula ao final do comando (ELMASRI e NAVATHE, 2005, p. 150):Figura 6 – Exemplo da sintaxe de criação de tabelas com SQL CREATE TABLE nome_da_tabela (coluna1 tipo1 , coluna2 tipo2 , … … , colunan tipon) ; Fonte: Elaborado pelo autor (2020). 42 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Chaves primárias e estrangeiras O assunto desta seção já foi abordado no capítulo 1, porém, será retomado de forma mais prática em relação à linguagem SQL. As chaves primárias e estrangeiras são definidas para manter o banco de dados e as tabelas bem organizadas e buscando a fácil manipulação dos dados (HEUSER, 1998, p. 88). Assim, toda tabela (entidade) deverá possuir uma chave pri- mária que pode ser definida como uma identidade única e particular de cada tupla da relação. Por exemplo, o Cadastro de Pessoa Física (CPF) é um código único para cada pessoa no Brasil e nunca poderá se repetir em uma mesma tabela, característica essa que define uma chave primária. Além do exposto, outra característica fundamental das chaves primárias é o fato de não poderem ser nulas e cada tupla deve possuir uma e somente uma chave (ELMASRI e NAVATHE, 2005, p. 141). A criação de uma chave primária se dá ao criar uma tabela, podendo ser incrementada automaticamente ou não de acordo com a sintaxe apresentada na Figura 7. Figura 7 – Sintaxe das chaves primárias CREATE TABLE nome_da_tabela (coluna1 tipo1 , coluna2 tipo2 , … … , colunan tipon PRIMARY KEY <AUTOINCRE- MENT>); Fonte: Elaborado pelo autor (2020). Perceba que em relação à criação de uma tabela, a enésima coluna possui logo após o tipo, a identificação que este atributo é uma chave primária, conhecida como atributo chave, em que após o código PRIMARY KEY é adicionado o comando facultativo de autoincremento deste atributo. Desta forma, quando novos elementos forem inseridos nesta tabela, o SGDB será responsável por valorar o atributo incremen- talmente a cada nova entrada. Note que a chave primária deve conter um valor único, desta forma, o limite de objetos dentro de cada tupla será definido pelo tipo do atributo, o qual, geralmente é INT. 43 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Apesar de normalmente serem usados números para representar uma chave primária, existem casos em que outros tipos de dados podem ser usados, como por exemplo o CPF, o qual em muitos bancos que o utilizam como chave, ele é do tipo char, uma vez que os pontos que separam as cadeias de números do CPF não podem ser representados numericamente. Por sua vez, as chaves estrangeiras de forma similar às cha- ves primárias, são indispensáveis para a organização de um banco, pelo qual através destas as relações podem manter uma ‘ligação’ umas com as outras, referenciando as chaves primárias. Todavia, nem toda tabela necessitará possuir uma, como apresentado por Elmasri e Nava- the (2005, p. 141). Assim como a chave primária, uma chave estrangeira é representada durante a criação da tabela seguindo sua própria sintaxe, como pode ser visto na Figura 8. Figura 8 – Sintaxe das chaves estrangeira CREATE TABLE nome_da_tabela (coluna1 tipo1 , coluna2 tipo2 , … … , colunan tipon , FOREIGN KEY (coluna2) REFERENCES outra_tabe- la(chave) ); Fonte: Elaborado pelo autor (2020). Perceba que após a inserção de todas as colunas/atributos, uma ou mais linhas são inseridas para referenciar as chaves estrangei- ras. No exemplo da sintaxe na Figura 8, a chave estrangeira é a coluna 2, com o termo outra_tabela sendo substituído pelo nome da tabela, e 44 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S o termo chave substituído pelo nome da chave primária desta tabela referenciada, criando assim a vinculação desta chave de outra tabela ao atributo chave estrangeira. MANIPULANDO TABELAS Inserção Uma vez criada as tabelas, o próximo passo é povoá-las, ou seja, inserir e manipular os dados inseridos. Assim, como na criação do banco e das tabelas, existe uma sintaxe definida para a inserção de elementos em uma tabela. A sintaxe básica é composta dos comandos INSERT INTO e VALUES. O primeiro comando citado é responsável por identificar a ta- bela onde os dados serão inseridos e o VALUES, identifica os valores a serem inseridos na tabela (TAKAI, ITALIANO e FERREIRA, 2005, p. 70). Em relação aos valores, a sintaxe permite que dados especí- ficos possam ser inseridos em determinados atributos através da des- crição direta do atributo entre aspas simples, seguido do valor a ser inserido após uma vírgula. A Figura 9 apresenta um exemplo da sintaxe do processo de inserção de dados em uma tabela. A sintaxe apresentada na Figura 9 indica quando se quer atri- buir valores a atributos específicos, não sendo indicada a inserção dos atributos com autoincremento. Figura 9 – Sintaxe da inserção de dados em uma tabela INSERT INTO tabela VALUES ( ‘atributo1’, valor1, ‘atributo2’, valor2, ... , ... , ‘atributon’, valorn ) Fonte: Elaborado pelo autor (2020). Porém, também é possível inserir valores em uma tabela sem necessidade de indicar os atributos, todavia, deve-se atentar à ordem em que as colunas das tabelas foram criadas, uma vez que, os dados 45 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S deverão ser inseridos na mesma ordem. A Figura 10 apresenta a sinta- xe da inserção sem referência direta aos atributos. Figura 10 – Sintaxe da inserção de dados em uma tabela sem referência aos atributos INSERT INTO tabela VALUES ( valor1, valor2, .... , ‘valorn ) Fonte: Elaborado pelo autor (2020). Vale ressaltar que a inserção de valores numéricos e boolea- nos, por exemplo, devem ser feitos sem o uso de aspas, com o uso dessas relativos aos valores textuais. Alteração Outro tipo básico de manipulação de dados em uma tabela é a alteração dos dados, processos definidos através de comandos que citam a tabela que será alterada (UPDATE), colunas e valores a serem alterados (SET) e outras operações, como condicionais que identificam os fatores que deverão ser atendidos para que a operação de alteração seja realizada e onde (TAKAI, ITALIANO e FERREIRA, 2005, p. 71). Es- tas condições serão exploradas de forma mais profunda no capítulo 3. Assim, a Figura 11 apresenta um exemplo simplificado da sin- taxe da alteração. Figura 11 – Sintaxe da alteração de dados em uma tabela UPDATE tabela SET coluna1 = value1, coluna2 = value2, … = …, colunan = valuen Fonte: Elaborado pelo autor (2020). 46 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Exclusão Por fim, a última operação básica nas tabelas dos bancos de dados relacionais apresentadas neste capítulo, é a exclusão de tuplas, ou seja, de linhas das tabelas. A sintaxe de exclusão identifica a tabela através do comando DELETE FROM e recebe em seguida funções de tratamento condicio- nais, identificando quais as tuplas deverão ser excluídas, pois se for executada sem as regras condicionais, a função de deletar apagará to- dos os dados da tabela (TAKAI, ITALIANO e FERREIRA, 2005, p. 71). A Sintaxe básica é apresentada na Figura 12. Figura 12 – Exemplo da sintaxe básica de exclusão de tuplas DELETE FROM tabela Fonte: Elaborado pelo autor (2020). Argumentos para alteração e exclusão de dados Como já citado, existem funções específicas para tratar como os dados serão manipulados nas diferentes operações, definindo por exemplo, quais elementos serão alterados ou excluídos. Assim, esta seção apresentará de forma simplificada o uso de argumentos condicionais através do comando WHERE, pelo qual, é possível especificar como as operaçõesserão realizadas. Tomemos por base uma tabela qualquer com dois registros de pessoas, sendo os atributos desta tabela o nome, idade e CPF das pes- soas cadastradas. Desta forma, se for necessário identificar uma pessoa espe- cífica através de seu número de CPF, o uso do comando WHERE irá auxiliar essa operação específica. Observe a Figura 13, que representa uma operação de exclusão de uma pessoa com CPF 000.000.000-00. Figura 13 – Exclusão condicional DELETE FROM tabela WHERE ‘CPF’ = ‘000.000.000-0’ Fonte: Elaborado pelo autor (2020). 47 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Note que o comando apresentado na Figura 13 informa que tuplas serão apagadas de uma tabela qualquer e o comando WHERE identifica que as tuplas a serem excluídas deverão apresentar em sua coluna CPF o valor igual ao descrito. Filme sobre o assunto: A REDE. Dirigido por Irwin Winkler. Estados Unidos: Rob Cowan e Irwin Winkler, 1995. 1 DVD. Acesse os links: GUANABARA, Gustavo. 1 Vídeo (28 min). Curso MySQL #03: Criando o primeiro banco de dados. Publicado pelo canal Curso em Vídeo, 2017. Disponível em: <https://www.youtube.com/watch?- v=m9YPlX0fcJk&t=24s>. Acesso em 17 ago. 2020. MEIRA, Regilan. 1 Vídeo (10 min). BDA: Comandos de Manipulação de Dados SQL. Publicado pelo canal Regilan Meira, 2020. Disponível em: <https://www.youtube.com/watch?v=JjnsY4_q4-4>. Acesso em 17 ago. 2020. 48 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S QUESTÕES DE CONCURSOS QUESTÃO 1 Ano: 2020 Banca: COPESE UFPI Órgão: ALEPI Prova: Consultor Legislativo Um técnico em TI da Assembleia Legislativa do Piauí se deparou com uma base de dados na qual a tabela Servidores possui di- versos campos, sendo um deles, o campo nome, do tipo cadeia de caracteres (varchar). Para exibir todos os registros cujo campo nome inicie por qualquer caractere seguido de “agner”, utiliza-se a instrução SQL: a) SELECT *.* FROM Servidores WHERE nome LIKE ‘_agner’; b) SELECT * FROM Servidores WHERE nome LIKE ‘_agner’; c) SELECT * FROM Servidores WHERE nome EQUALS ‘%agner’; d) SELECT *.* FROM Servidores WHERE nome LIKE ‘%agner’; e) SELECT * FROM Servidores WHERE nome=’#agner’; QUESTÃO 2 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr Considerando a linguagem SQL (Structured Query Language) para sistemas de banco de dados, assinale a alternativa que remove linhas de uma tabela chamada CLIENTE. a) REMOVE FROM CLIENTE ... b) CUT FROM CLIENTE ... c) DELETE FROM CLIENTE WHERE ... d) ERASE FROM CLIENTE … e) CLEAR FROM CLIENTE ... QUESTÃO 3 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr A recursividade presente em consultas realizadas com SQL na for- ma SELECT a.id,... FROM a WHERE ... IN (SELECT atributo FROM b WHERE b.x=a.id) pode ser evitada por meio: a) da substituição do operador IN por EXISTS. b) da junção externa do tipo RIGHT JOIN com a verificação de atributos de b com o valor nulo. c) da junção interna – INNER JOIN. d) da junção externa do tipo LEFT JOIN com a verificação de atributos de b com o valor nulo. e) da utilização de expressões de tabelas comuns (CTE). 49 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S QUESTÃO 4 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr Considerando os SGBDs MySQL e PostgreSQL, em qual cláusula do comando SELECT o resultado das funções de agregação pode ser utilizado em condições de filtragem dos registros? a) SELECT. b) HAVING. c) FROM. d) WHERE. e) ORDER BY. QUESTÃO 5 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr Segundo o ANSI SQL, as “window functions” são as funções: a) RANK, de distribuição, número de linha e de agregação. b) de conversão de tipo de dados. c) de tratamento de data e hora. d) de verificação de permissão e) de tratamento do conjunto de caracteres (encoding). QUESTÃO DISSERTATIVA – DISSERTANDO A UNIDADE O processo de criação de atributos em uma tabela é um processo mui- to importante e que deve-se ter muita atenção, uma vez que escolhas errôneas podem gerar problemas de representatividade dos dados, nas relações e também no consumo de espaço físico nos dispositivos com- putacionais. Assim, em um projeto de banco de dados para um trabalho de exten- são da universidade, você ficou responsável por fazer as tipagens dos atributos, de uma das tabelas ligadas de usuário e identificar se está faltando algum atributo. Os atributos mapeados pela equipe foram: - Data de nascimento; - Sexo; - Estuda; - Trabalha; - Data de registro. Desta forma, faça um pequeno texto de no mínimo 10 linhas explicando quais tipos deveriam ser aplicados a cada um dos atributos citados, bem como se existem mais alguns atributos para serem adicionados, 50 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S justificando obrigatoriamente as respostas. DICA 1: Perceba que cada tipo possui um tamanho máximo definido e este tamanho máximo é completamente alocado quando um novo elemento é inserido na tabela, assim, preze por formatos que atendam ao tamanho das entradas, mas procure ajustar esse tamanho aos tipos com menos consumo de espaço físico no banco. DICA 2: Para inserção de possíveis atributos, é indicada a realização de pesquisas sobre bancos de dados de cadastro, sendo indicado o uso de mídias de vídeo online para obtenção dos exemplos ou livros, caso sejam acessíveis. TREINO INÉDITO Assunto: Chave estrangeira O desenvolvimento de tabelas com atributos que abstraiam corretamen- te os objetivos esperados em registrar os dados é algo que demanda tempo e atenção. Entre estes atributos, podemos destacar as chaves estrangeiras, que são conceituadas como: a) Atributos chaves que referenciam uma chave primária de outras tabela. b) Chave física responsável por abrir as máquinas onde estão instala- dos os bancos de dados. c) Gatilho para identificar se uma tabela está vazia ou não. d) Atributo identificador, o qual está presente nas entidades fortes. e) Interface das tabelas para acesso aos seus atributos. NA MÍDIA POR QUE CONHECER E UTILIZAR DIFERENTES TIPOS DE BANCO DE DADOS? Os Sistemas Gerenciadores de Bancos de Dados (SGDB) são conjun- tos de softwares desenvolvidos com o intuito de gerenciar acesso às informações contidas nos bancos de dados, que são arquivos físicos ar- mazenados em disco. Quando uma empresa utiliza um banco de dados bem estruturado, ele é capaz de armazenar e identificar o perfil exato de clientes e outras pessoas que estejam salvos em seus registros. Quando esses dados são relacionados entre si, transformam-se em in- formações valiosas, que ao serem inseridas em um contexto determina- do, tornam-se fonte de conhecimento para ser utilizada como base em tomadas de decisão. Utilizar um sistema de gerenciamento de banco de dados eficaz é indis- pensável para qualquer empresa. Afinal, por meio dele é possível man- 51 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S ter organizados os registros dos empregados, da contabilidade, da ges- tão de projetos, da qualidade do atendimento, do impacto das ações de marketing, entre outras inúmeras informações relevantes para o negócio. Fonte: opservices Data: 26/02/2019 Leia a notícia na íntegra:<https://www.opservices.com.br/banco-de- -dados/>. NA PRÁTICA GANHANDO EXPERIÊNCIA EM BANCO DE DADOS Como conseguir experiência com banco de dados se todas as entre- vistas de emprego pedem essa tal experiência? Bem, quando recebi o e-mail, primeiro sugeri que talvez as vagas para quais essas entrevistas estavam selecionando não fossem para estagiário ou DBA júnior. Por definição, a vaga de estagiário ou DBA júnior não deveria necessitar de experiência. Contudo, muitas vezes o mercado acaba exigindo algo quefoge às definições, especialmente em situações onde o empregador quer ser ‘esperto’ e contratar um profissional que conheça muito para uma remuneração que não é adequada. Deixando a discussão sobre isso de lado, vou comentar o que sugeri para a leitora que me enviou um e-mail. Uma ótima forma de se ganhar experiência em programação, e por ta- bela com banco de dados, é a participação de projetos de software livre. Sim, esses projetos são abertos à comunidade e sempre estão preci- sando de colaboradores. Muitos projetos de software livre precisam de colaboradores de todos os níveis, desde aquele programador avançado até quem está começando a aprender a utilizar o computador. O importante é compreender o espí- rito de colaboração e saber contribuir para o projeto com algo relevante. Fonte: PICHILIANI, Mauro. Ganhando experiência em banco de dados. iMasters. 25 mai. 2010 Disponível em: <https://imasters.com.br/banco- -de-dados/ganhando-experiencia-em-banco-de-dados>. Acesso em 18 ago. 2020. 52 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S INTRODUÇÃO AO CAPÍTULO O capítulo 2 apresentou uma introdução básica aos conceitos ligados à manipulação de dados através dos SGBDs, pelo qual concei- tuou-se a álgebra relacional e os conjuntos básicos de manipulação de um banco: criação do banco, criação das tabelas, inserção, exclusão e alteração de atributos. Neste sentido, o capítulo 3 apresentará conceitos mais com- plexo de manipulação dos dados, especificamente no tratamento das chamadas, consultas, que serão divididas em consultas básicas e com- plexas. Para tal, serão apresentados estudos de caso simplificados em cada seção ligada aos comandos. CONSULTAS EM BANCO DE DADOS IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 53 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S OPERAÇÕES DE CONSULTA BÁSICA As operações de consulta SQL básicas apresentadas neste material serão: SELECT (seleção), WHERE (condicional) e DISTINCT (seleção redundante). Estes comandos serão abordados em subseções a seguir. Comando select As operações com SQL, especificamente as de consulta, va- riam de muito simples a muito complexas, sendo o uso do comando SELECT puro a forma mais básica de consulta (ELMASRI e NAVATHE, 2005, p. 156), O comando de seleção é responsável pela consulta a atributos das tuplas, descrevendo quais atributos devem ser consultados e em quais tabelas. Assim, a sintaxe básica da consulta é constituída do comando SELECT, que identifica a consulta, os atributos a serem consultados e a cláusula FROM, para identificar as tabelas consultadas. Desta forma, a sintaxe é expressa por (BEIGHLEY, 2010, p. 39). SELECT atributo1, atributo2, ... , atributon FROM tabela Assim, caso seja necessário identificar apenas o nome de um usuário em sua respectiva tabela, seria preciso apenas informar o nome deste atributo e da tabela onde está o usuário. Durante o decorrer desta seção, comandos de seleção serão apresentados a partir de variações do comando básico de seleção. Perceba que a expressão algébrica Projeção (π) é similar à operação de seleção básica no SQL, uma vez que, o comando SELECT segue o padrão matemático descrito na álgebra relaciona. Desta forma, utilizar o comando SELECT sem especificar con- dições de uso além dos atributos, é o mesmo que apenas projetar as colunas que devem ser retornadas. Além da sintaxe apresentada, em alguns momentos é preciso 54 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S retornar o resultado contendo todos os atributos da tabela consultada. Assim, o uso do símbolo especial * depois do comando SELECT, permite que todos os atributos sejam inseridos na saída (BEIGHLEY, 2010, p. 48). Assim, a sintaxe de seleção contendo todos os atributos será: SELECT * FROM tabela O comando de seleção também permite que mais de uma ta- bela seja consultada ao mesmo tempo, gerando uma alteração na sin- taxe da consulta, que receberá na descrição dos atributos a referência a qual tabela esse pertence. A sintaxe da seleção básica com mais de uma tabela segue o seguinte formato geral: SELECT tabela1.atributo1, tabela2.atributo2 FROM tabela1, tabela2 Perceba que o nome da tabela aparece antes dos atributos, pelos quais são unificados por pontos. Vale ressaltar que a saída de uma consulta é uma tabela tem- porária, assim, sua estrutura visual receberá nas colunas, os nomes dos atributos, que nos casos de consultas com combinação das tabelas, as colunas apresentarão os nomes combinados das tabelas, seguido de um ponto e, por fim, com o nome do atributo. A fim de facilitar e reduzir os longos textos e organizar a apre- sentação dos títulos dos dados de retorno das consultas, a linguagem SQL possui uma ferramenta chamada de Alias, uma espécie de “apeli- do”, sendo esta ferramenta usada para substituir o nome das tabelas na identificação dos atributos (ELMASRI e NAVATHE, 2005, p. 159), Um exemplo da sintaxe de uso do seletor com o uso de Alias, será dada pela seguinte estrutura: SELECT t1.atributo1, t2.atributo2 FROM tabela1 t1, tabela2 t2 Note que o “apelido” foi colocado em frente ao nome das tabe- 55 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S las, pelo qual, substituiu o nome das tabelas na descrição dos atributos após o SELECT. De forma geral, esta ferramenta serve para reduzir o tamanho de longos e complexos nomes de tabelas, mas em alguns casos pode- -se dar nomes mais claros para descrevê-las. A fim de apresentar de forma prática como escrever uma con- sulta simples, as tabelas 18 e 19 serão usadas como referencial para as exemplificações. A tabela 18 representará os registros de alunos. Por sua vez, a tabela 19 apresenta um registro de disciplinas de um curso de com- putação. Estas duas tabelas serão reutilizadas nas demais seções a fim de demostrar como se dá as consultas avançadas, sendo apresentadas no decorrer do capítulo mais tabelas base. Tabela 18 – Tabela Alunos id nome ano_matrícula 1 Luciano 2017 2 Otto 2017 3 Marta 2017 4 Luiz 2017 5 Teresa 2017 6 Alecsa 2018 7 Paulo 2018 8 Rochelly 2018 9 Ian 2019 10 Oliveira 2019 Fonte: Elaborado pelo autor (2020). Tabela 19 – Tabela Disciplinas id nome créditos 1 Introdução a ciência da com- putação 20 2 Programação estruturada 20 56 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S 3 Programação orientada a ob- jetos 20 4 Redes de com- putadores 20 5 Inteligência arti- ficial 20 6 Computação gráfica 20 7 Banco de dados 20 8 Física 15 9 Matemática 15 10 Estatística 15 Fonte: Elaborado pelo autor (2020). Tomando por base as duas tabelas acima, 18 e 19, em uma consulta simples com o comando SELECT, é possível extrair certos da- dos das tabelas. Por exemplo, se for necessário coletar os nomes dos alunos matriculados, o comando de consulta será: SELECT nome FROM Alunos Assim, a saída será uma nova tabela contendo apenas um atri- buto, pelo qual apresenta os nomes de todos os alunos. Um outro tipo de seleção seria pegar todos os nomes de dis- ciplinas e alunos em uma única tabela, sendo utilizado um Alias nas tabelas. Assim, o comando seria: SELECT u.nome, d.nome FROM Alunos u, Disciplina d Condições As condições são comandos SQL que permitem especificar os dados que serão apresentados nas saídas das consultas. Sua sintaxe básica é aplicada após a sintaxe já apresentada do SELECT, especificamente após a descrição das tabelas. Assim, sua estrutura será dada da seguinte maneira: SELECT atributos FROM tabelas WHERE condições 57 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Desta forma, perceba que o comando específico de uma con- dição é o WHERE, em que podem ser usados métodoscondicionais como as operações de igualdade, diferença, maior que, menor que, e lógico (^), ou lógico (V), entre outros (BEIGHLEY, 2010, p. 51). Por exemplo, se for necessário encontrar todos os alunos que se matricularam antes de 2019, o comando usado seria. SELECT * FROM Alunos WHERE ano_matrícula < 2019 Desta forma, a tabela de saída da consulta acima está apre- sentada na tabela 20. Tabela 20 – Alunos matriculados antes de 2019 id nome ano_matrícula 1 Luciano 2017 2 Otto 2017 3 Marta 2017 4 Luiz 2017 5 Teresa 2017 6 Alecsa 2018 7 Paulo 2018 8 Rochelly 2018 Fonte: Elaborado pelo autor (2020). Outra forma específica de uso do comando condicional é fazer comparações entre os dados presentes nas colunas com valores de- terminados através do uso de igualdade, o qual pode ser aplicado em todos os tipos de dados, como mostrado a seguir: SELECT * FROM Disciplinas d WHERE d.créditos = 20 Perceba que o comando acima irá retornar todas as disciplinas com créditos iguais a 20. Condições com operadores lógicos Como citado, o comando WHERE permite que sejam usados comandos lógicos nas consultas, existindo um conjunto específico de elementos que podem ser usados nas operações lógicas, sendo os mais básicos e usados os operadores AND (e lógico) e OR (ou lógico). 58 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Os operadores lógicos se baseiam na lógica booleana e em suas operações, bem como no uso de tabelas verdade. Todavia, a lin- guagem SQL especifica nomenclaturas e aplicações próprias para algu- mas operações lógicas. Pelo fato das operações lógicas serem baseadas na matemá- tica booleana, as suas expressões serão asseadas em verdades e não verdades, utilizando na literatura, respectivamente, os termos TRUE e FALSE. Assim, existem dez tipos de operadores lógicos que podem ser usados através do comando WHERE, sendo estes e suas respec- tivas descrições apresentadas a seguir (ELMASRI e NAVATHE, 2005, p. 155): • AND: Retorna verdadeiro se todos os elementos presentes na operação também forem verdadeiros; • OR: Retorna verdadeiro se ao menos um dos elementos pre- sentes na operação também for verdadeiro; • NOT: Este operador inverte o valor de uma entrada. Assim, se esta for verdadeira, a saída será falsa e vice-versa; • ALL: Similar ao AND, porém, pode ser aplicado a uma lista de elementos; • ANY: Similar ao OR, porém, pode ser aplicado a uma lista de elementos; • SOME: A aplicação e saída do SOME é igual ao ANY; • BETWEEN: Retorna verdadeiro se o elemento da operação apresentar valor entre um intervalo dado; • LIKE: O comando LIKE permite que um valor seja comparado completamente ou parcialmente através do uso dos símbolos [], [^], % e _; • IN: Retorna verdadeiro caso um atributo do algum elemento em uma lista ou valores especificados for igual a um elemento do seletor; • EXISTS: Retorna verdadeiro caso um atributo do algum ele- mento em uma lista for igual a um elemento do seletor. Para exemplificar o uso das operações com os operadores ló- gicos, será apresentada uma nova tabela base, que exibirá a tabela 21, que registra quais disciplinas cada aluno está matriculado, sua respecti- va data de matrícula nas disciplinas e o estado da matrícula. 59 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Tabela 21 – Tabela Matrículas Usuário_id Discipli- na_id ano_matrí- cula Estado 1 9 2018 Aprovado 2 9 2018 Aprovado 3 8 2018 Aprovado 4 6 2018 Aprovado 5 9 2018 Aprovado 6 1 2018 Aprovado 7 1 2018 Reprovado 8 1 2018 Aprovado 7 2 2018 Aprovado 6 4 2018 Matriculado 7 3 2018 Matriculado 8 3 2018 Matriculado 9 1 2019 Matriculado 10 1 2019 Matriculado 1 10 2019 Aprovado 2 10 2019 Reprovado 3 6 2019 Aprovado 4 4 2019 Aprovado 5 3 2019 Aprovado Fonte: Elaborado pelo autor (2020). Vamos fazer um exemplo simples de uso da cláusula AND, com código como apresentado a seguir: SELECT u.nome FROM Alunos u, Matriculas m WHERE u.id = m.Usuário_id AND m.ano_matrícula >= 2019 Perceba que foi usada a cláusula AND para verificar os casos onde o identificador do usuário for igual ao atributo relativo à chave estrangeira do usuário na tabela Matrículas, resultando em verdade, ou seja, igualdade, com o ano da matrícula na disciplina igual ou maior que 2019, em que é preciso que os dois campos resultem em verdade para que o seletor retorne os dados da saída. Outro exemplo é o uso da clausula ANY em uma operação de 60 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S alinhamento de seletores, ou seja, uso de múltiplos seletores em uma mesma consulta, como pode ser visto abaixo: SELECT m.ano_matrícula FROM Matrícula m WHERE m.Dis- ciplina_id = ANY (SELECT d.id FROM Disciplinas) AND m.Estados = NOT ‘Aprovado’ AND m.ano_matrícula = 2019 O comando acima procura todas as incidências onde uma dis- ciplina não recebeu matrículas no ano de 2019. Distinct O comando DISTINCT serve para remover possíveis valores duplicados em relação aos atributos, ou seja, ao apontar os atributos após o SELECT, se for usado o comando DISTNCT, todos os valores que se repetem dentre estes atributos são ignorados, sendo retornadas apenas as primeiras aparições destes (TAKAI, ITALIANO e FERREIRA, 2005, p. 67). Perceba que o uso do comando DISTINCT cria conjuntos ba- seados nos atributos “citados” no seletor, assim, não se repetirão valo- res dentro do conjunto formado. A sintaxe deste comando é dada pela seguinte estrutura: SELECT DISTINCT atributoA, atributoB FROM tabela Apesar da simplicidade da consulta com o uso do DISTINCT, sua aplicação em muitos momentos se mostra necessária para realizar, por exemplo, contagem do número de termos ou objetos cadastrados na base de dados que possuem mais de uma entrada igual, como no- mes, sobre nomes, endereços, entre outros. Por exemplo, se essa consulta for aplicada na tabela de disci- plinas usando o DISTINCT sobre a quantidade de créditos a saída será dada como se mostra a seguir: SELECT DISTINCT créditos FROM Disciplinas 61 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S O resultado desta consulta será como o mostrado a seguir na Tabela 22. Tabela 22 – Uso do comando Distinct créditos 20 15 Fonte: Elaborado pelo autor (2020). Perceba que no exemplo exposto na tabela 22 os dados foram apresentados sem repetição. O exemplo acima pretendia apenas verificar quais os valores de créditos presentes no sistema, 20 e 15, porém, em casos mais es- pecíficos como um banco de dados que registra os pedidos de lanches de um cliente, este pode identificar quais os lanches que um usuário específico já pediu e que foram registrados na base de dados, permitin- do que seja traçado um perfil de quais produtos chamam mais atenção deste cliente, informação que pode ser usada para criação de promo- ções e de produtos para perfis específicos. OPERAÇÕES DE CONSULTAS COMPLEXAS Teoria dos conjuntos A teoria dos conjuntos é uma das bases fundamentais da com- putação e também do uso das operações de união com SQL. Assim, essa seção abordará de formas direta e curta as principais operações ligadas à teoria dos conjuntos. Assim, a operação de união, também chamada de reunião, é uma operação responsável onde dados dois conjuntos de elementos sua saída será igual à combinação sem repetições dos elementos de cada conjuntos (DANTE, 2013, p. 27). Por sua vez, a interseção é uma operação onde todos os ele- mentos iguais entre dois conjuntos quaisquer, são retornados em um novo conjunto os contendo (DANTE, 2013, p. 27). Ou seja, essa opera- ção identifica elementos idênticos ao comprar conjuntos. Por fim, a operação de diferença irá procurar identificar quais elementos de um conjunto não estão presentes no outro, executando essa ação para ambos conjuntos envolvidos na operação (DANTE, 2013, p. 27). Assim, a operação de diferença podeser entendida como o inverso da operação de interseção. 62 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Apesar da simplicidade em apresentar as principais operações da teoria dos conjuntos, essa explicação geral servirá de base para os conceitos apresentados na seção seguinte. Operações Join O comando Join toma por base conceitos da teoria dos con- juntos para utilizar as relações entre as tabelas para gerar dados de consultas. Para tanto, o comando realiza a identificação das relações através de seus identificadores comuns, que estão presentes nas tabe- las de referência como chaves estrangeiras. Desta forma, para que se possa usar o comando Join, é pre- ciso que ao menos uma das tabelas da relação possuam uma chave estrangeira de uma das tabelas na relação. Somando ao exposto, estas relações podem se dar em ordem de duas ou mais tabelas através da propriedade de transitividade, que permite relacionar tabelas que não se relacionam diretamente, como atra- vés de entidades fracas (TAKAI, ITALIANO e FERREIRA, 2005, p. 78). Existem três tipos de comandos JOIN, um chamado de INNER JOIN, outro de OUTER JOIN, e este último é dividido em LEFT JOIN, RIGHT JOIN, FULL JOIN e, por fim, o último tipo de JOIN se chama CROSS JOIN. Assim, para exemplificar o uso do JOIN, serão adicionadas mais duas tabelas bases, tabela 18, tabela 19 e tabela 21. Desta forma, a tabela 23 apresentará os professores e a tabela 24, a relação dos professores com as disciplinas. Antes de apresentar os tipos de JOIN, note que os professo- res estão relacionados indiretamente à tabela Disciplinas, bem como a tabela dos alunos está da mesma forma relacionada indiretamente à tabela Disciplina. Assim, é possível relacionar qual professor está minis- trando para um aluno específico através do uso dos comandos JOIN. Tabela 23 – Tabela Professores id Nome ano_contrato 1 Marcelo 2012 2 Michelly 2012 3 Tannya 2014 4 Rafaela 2018 Fonte: Elaborado pelo autor (2020). 63 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Tabela 24 – Tabela Ministra Professores_id Disciplinas_id 1 8 1 9 1 10 2 1 2 2 2 3 2 7 3 1 3 2 3 3 3 5 3 6 4 3 4 4 4 7 Fonte: Elaborado pelo autor (2020). Assim, as seções seguintes apresentaram cada um dos ti- pos de junções utilizando as tabelas citadas como referências para os exemplos. Inner Join A cláusula INNER JOIN é um tipo de junção que retorna todos os casos em que, exclusivamente, a comparação entre os atributos cha- ves é igual a TRUE, sendo sua sintaxe composta da seguinte estrutura (BEIGHLEY, 2010, p. 360). SELECT * FROM tabela1 INNER JOIN tabela2 ON tabela1.id = tabela2.id Perceba o uso da cláusula ON, em que se dá a condição de junção das tabelas, que tem a mesma função da cláusula WHERE. Além do formato apresentado, é indicado o uso de Alias para as consultas, uma vez que seu uso irá organizar as consultas de todos os JOIN, especialmente quando são feitas junções com mais de duas tabelas. 64 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Assim, a sintaxe básica para uma consulta com mais de uma tabela e contendo o uso dos Alias pode ser vista a seguir, porém, con- tendo o uso da cláusula AS, identificando a Alias criada. O uso do AS é facultativo, porém, é comum ver na literatura o uso de Alias com AS em operações com JOIN. SELECT * FROM tabela1 INNER JOIN tabela2 ON tabela1.id = tabela2.id INNER JOIN tabela3 ON tabela2.id = tabela3.id Perceba que a cláusula INNER JOIN foi inserida logo após a inserção de outra cláusula igual. Assim, é possível realizar aninhamento de junções. Assim, por exemplo, se quisermos encontrar quais os profes- sores que estão ministrando disciplinas com 20 créditos, é possível através do uso de um INNER JOIN composto de mais de uma junção, uma vez que os professores estão vinculados às disciplinas através de uma entidade fraca. Portanto, o comando a seguir apresenta uma consulta para identificar qual professor está ministrando disciplinas de mais de 20 cré- ditos através do uso do INNER JOIN. SELECT p.nome FROM Professores AS p INNER JOIN Ministra AS m ON m.Professores_id = p.id INNER JOIN Disciplinas AS d ON d.id = m.Disciplinas_id AND d.créditos < 20 Com base na consulta (querry) acima, a tabela de saída será dada como demonstrado na tabela 25. Tabela 25 – Exemplo Inner Join id Nome ano_contrato 1 Marcelo 2012 Fonte: Elaborado pelo autor (2020). Outer Join A junção Outer Join é composta por três tipos distintos de cláu- sulas, sendo elas o RIGHT JOIN, LEFT JOIN e FULL JOIN. Diferente do INNER JOIN, os Outer Joins podem retornar os dados da combinação de forma similar a um ou lógico, em que a condi- ção será verdadeira se encontrar ao menos um dos casos consultados. Assim, o RIGHT JOIN irá retornar todos os casos onde existam 65 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S as combinações das tabelas, bem como, onde a verificação a direita seja verdadeira. Por tanto, no uso do RIGHT JOIN, quando tanto os dados da tabela direita, como esquerda não apresentarem uma saída verdadeira, os campos dos atributos serão preenchidos com NULL, ou seja, valores nulos (ELMASRI e NAVATHE, 2005, p. 122). De forma similar se dá a função do LEFT JOIN, porém, será analisado se os dados da tabela esquerda serão verdadeiros. Por fim, o FULL JOIN faz essa verificação nos dois lados, retor- nando todos os elementos de ambas as tabelas, recebendo o valor nulo nos atributos quando não existir combinação com retorno verdadeiro. Como as sintaxes dos Outer Joins são similares, basta alterar o nome LEFT por RIGHT ou FULL para se usar alguns desses tipos de junções. A seguir é mostrado um exemplo de um comando Outer Join: SELECT * FROM tabela1 AS t1 RIGHT JOIN tabela2 AS t2 ON t1.id = t2.id Cross Join A cláusula CROSS JOIN atua fazendo o produto cartesiano dos elementos da esquerda e direita da junção. Assim, o uso do CROSS JOIN retornará todas as combinações possíveis entre os atributos selecionados de forma similar ao que foi apresentado nos conceitos de álgebra relaciona, especificamente no produto cartesiano, com a tabela de saída do CROSS JOIN apresen- tando o mesmo padrão de saída (ELMASRI e NAVATHE, 2005, p. 170): A seguir está apresentada a sintaxe geral da aplicação do CROSS JOIN: SELECT t1.atributo1, t2atributo1 FROM tabela1 AS t1 CROSS JOIN tabela1 AS t2 WHERE t1.id = t2.id Filme sobre o assunto: JOBS. Dirigido por Danny Boyle. Estados Unidos: Five Star Feature Films, 2013. 1 DVD. Acesse os links: PERES, Sarajane Marques. 1 Vídeo (23 min). Bancos de Da- 66 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S dos Aula 14 Linguagem de consulta SQL Parte II. Publicado pelo canal UNIVESP, 2017. Disponível em: <https://www.youtube.com/watch?- v=XnS8XCXPkuk>. Acesso em 17 ago. 2020. GUANABARA, Gustavo. 1 Vídeo (28 min). Curso MySQL #16: INNER JOIN com várias tabelas. Publicado pelo canal Curso em vídeo, 2016. Disponível em: <https://www.youtube.com/watch?v=jx2ne8iZ- MOA>. Acesso em 17 ago. 2020. 67 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S QUESTÕES DE CONCURSOS QUESTÃO 1 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr As tabelas a e b abaixo, com os respectivos registros, são referên- cia para a questão. Os valores (registros) retornados ao se executar a instrução “(SE- LECT * FROM a) MINUS (SELECT * FROM b)” são: a) (5,1) b) (1,3,5) c) (1,2,4,5) d) (-1,0,1) e) (3) QUESTÃO 2 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr As tabelas a e b abaixo, com os respectivos registros, são referên- cia para a questão. A instrução SQL que apresenta resultado equivalente à instrução “(SELECT * FROM a) INTERSECT (SELECT* FROM b)” no MySQL 5.7 ou 8 é: a) SELECT valor FROM a UNION ALL SELECT valor FROM b b) SELECT a.valor FROM a LEFT JOIN b ON a.valor=b.valor c) SELECT a.valor FROM a RIGHT JOIN b ON a.valor=b.valor; d) SELECT DISTINCT valor FROM a INNER JOIN b USING (valor) e) SELECT valor FROM a WHERE valor NOT IN (SELECT valor FROM b) 68 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S QUESTÃO 3 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr As tabelas a e b abaixo, com os respectivos registros, são referên- cia para a questão. O resultado esperado da instrução “select a.valor*b.valor from a,b” é: a) (1,2),(3,2),(5,2),(1,3),(3,3),(5,3),(1,4),(3,4),(5,4) b) (2,6,10,3,9,15,4,12,20) c) (1,2,3,4,5) d) (2,1),(2,3),(2,5) e) (3,3) QUESTÃO 4 Ano: 2019 Banca: NC-UFPR Órgão: ITAIPU Prova: Profissional Ní- vel Universitário Jr Segundo o ANSI SQL 92 e posteriores, é INCORRETO afirmar: a) Junção cruzada (cross join) equivale a uma junção interna sem uma condição de junção. b) Junção união (union join) equivale a uma junção externa completa na condição “false”, ou seja, em que a junção interna está vazia. c) Junção natural (natural join) equivale a uma junção interna em que os atributos com identificadores comuns são utilizados internamente na condição, entretanto, sem repeti-los no conjunto resultante. d) Junção externa esquerda (left outer join) equivale à recuperação das tuplas da relação à esquerda e posteriormente associadas com as tu- plas da relação à direita, mas quando não existir a correspondência, o valor nulo será atribuído aos campos correspondentes da relação a direita. e) Junção exclusiva (xor join) equivalente à junção externa completa (full outer join), em que as tuplas das duas relações estão presentes no conjunto resultante. QUESTÃO 5 Ano: 2019 Banca: FCC Órgão: AFAP Prova: Analista de Fomento Fernando está usando a linguagem SQL (ANSI) e pretende fazer uma atualização nos dados Nome_Cli e End_Cli do cliente cujo 69 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Cod_Cli é Cli01, na tabela Cliente. Nome_Cli passará a ser Ariana e End_Cli passará a ser Rua ABC. O código SQL correto que Fernando escreveu foi: ..I.. Cliente ..II.. Nome_Cli = ‘Ariana’, End_Cli = ‘Rua ABC’ ..III.. Cod_Cli = ‘Cli01’; Para que o código esteja correto, as lacunas I, II e III devem ser preenchidas, respectivamente, por a) SET − WHERE − UPDATE b) UPDATE − SET − WHERE c) UPDATE − WHERE − SET d) WHERE − SET − UPDATE e) SET − UPDATE − WHERE QUESTÃO DISSERTATIVA – DISSERTANDO A UNIDADE Uma escola recentemente criou uma base de dados para cadastrar os alu- nos, profissionais docentes, administrativos e complementares, bem como, as disciplinas e suas relações com os professores, alunos e horários. Assim, notou-se que certas pesquisas, utilizando consultas básicas, não estavam atendendo de forma satisfatória à equipe administrativa, motivo pelo qual você foi convidado para criar padrões de consultas para facilitar o trabalho de mapeamentos e planejamentos. Para tanto, você deverá criar um conjunto de duas consultas utilizando algumas das cláusulas do Join, identificando os professores e os horá- rios das disciplinas, bem como, uma lista com o nome de cada aluno também por disciplina. Por fim, gere um pequeno relatório entre 5 a 10 páginas descrevendo os comandos desenvolvidos durante a tarefa, bem como, sendo apresen- tados argumentos para as escolhas feitas durante a atividade. DICA 1: Para esta questão, é preciso que um banco teste seja projetado e populado. Assim, desenvolva as tabelas de forma textual, como apre- sentado nesta unidade, ou utilize outros meios, como um SGDB caso esteja familiarizado. DICA 2: Crie as tabelas com apenas os atributos necessários para a questão, bem como insira um número não muito elevado, por volta de 5 a 10 de entradas, a fim de reduzir a complexidade da tarefa. Todavia, é fortemente indicado para fins de fixação, que as tabelas sejam feitas da formas mais complexa e populadas possíveis, para fins de treinamentos pós tarefa, além de ser indicado o uso de cadernos ou de editores de 70 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S texto para se perceber a cada interação, como se dá o comportamento de uma consulta. Todavia, vale ressaltar que a indicação de expansão das tabelas e seus dados são voltados para reforço e não avaliação, mantendo-se assim a indicação da simplicidade com representatividade nesta tarefa. TREINO INÉDITO Assunto: Condição Assim como a cláusula SELECT e seu respectivo comando, a cláusula WHERE é uma das mais importantes e usadas no gerenciamento de banco de dados. Sobre as operações com a cláusula WHERE, é correto afirmar que: a) É uma cláusula que identifica onde estão os atributos, podendo ser usada no lugar do SELECT. b) Sempre deve ser usada entes do comando SELECT a fim de condi- cionar a seleção. c) Permite apenas fazer comparações de igualdade e diferença nas consultas. d) Pode ser aplicada utilizando diversos operadores condicionais, inclu- sive operadores lógicos como o AND e OR. e) Pelo fato de só poder existir uma cláusula WHERE por comando, é impossível usá-la para condições em múltiplas tabelas em uma mesma consulta. NA MÍDIA MAS O QUE É MYSQL? Uma empresa sueca chamada MySQL AB desenvolveu o MySQL em 1994. Então, a companhia norte-americana Sun Microsystems obteve controle total do software ao comprar a MySQL AB em 2008. Já em 2010, a gigante Oracle, também norte-americana, por sua vez, comprou a Sun Microsystems, e o MySQL MySQL tem sido da Oracle desde então. Quanto a sua definição, MySQL é um Banco de Dados relacional (RDB- MS – Relational Database Management Systems) com um modelo de cliente-servidor. RDBMS é um software de código aberto ou serviço usado na criação e gerenciamento de bancos de dados baseados no modelo relacional. Agora vamos analisar cada termo. Mas como o cliente e o servidor se comunicam em um ambiente RDB- 71 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S MS? Eles usam uma linguagem específica – Structured Query Langua- ge (SQL). Se você encontrar outros nomes que também possuam SQL, como PostgreSQL e Microsoft SQL Server, provavelmente são outras marcas que utilizam a sintaxe SQL. Um software RDBMS é normalmente escrito em outra linguagem de programação, mas sempre utiliza SQL como linguagem primária para comunicação com o banco de dados. O próprio MySQL é escrito em C e C++. Pense em todos os países colo- nizados pela Inglaterra, cada um tem sua história e costumes próprios, mas todos falam inglês. O cientista da computação Ted Codd desenvolveu SQL no início dos anos 70 com um IBM baseado no modelo relacional. A linguagem se tornou mais popular em 1974 substituindo algumas linguagens ultrapas- sadas, como ISAM e VISAM. A seguir é apresentado o funcionamento básico do MySQL: 1. O MySQL cria um banco de dados para armazenamento e manipula- ção de dados, definindo a relação de cada tabela. 2. Clientes podem fazer solicitações digitando comandos SQL específi- cos no MySQL. 3. A aplicação do servidor responde com a informação solicitada fazen- do aparecer no cliente. Fonte: hostinger Data: 21/01/2019 Leia a notícia na íntegra:<https://www.hostinger.com.br/tutoriais/o- -que-e-mysql/>. NA PRÁTICA DICAS PARA TRABALHAR COM MODELOS DE DADOS GRANDES Olá, pessoal. Como DBA há algum tempo, acabo fazendo várias con- sultorias em diferentes clientes que têm problemas com seus bancos de dados. Entre os cenários de bases de dados que eu encontrei, prova- velmente o aspecto que mais afeta o meu trabalho é lidar com modelos de banco de dados grandes e complexos, que foram criados para satis- fazer os requisitos de armazenamento dos dados. O objetivo principal deste artigo é apresentar algumas dicas para aju- dar os profissionaisque precisam trabalhar com modelos de bancos de dados complexos, grandes e de difícil compreensão, que qualquer um 72 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S pode encontrar no trabalho do dia a dia. Sem mais delongas, estas são as minhas dicas àqueles que têm de compreender e manipular rapidamente um modelo de banco de dados grande sem ser seu criador: 1. Identificar as maiores, mais cheias mais usadas tabelas no modelo; 2. Use uma ferramenta de controle de ver- são ou de gestão de configuração; 3. Saiba como imprimir o modelo de banco de dados completo ou parcial; 4. Identifique os objetos comple- mentares mais utilizados (stored procedures, triggers, funções, índices); 5. Tenha como visualizar o banco de dados em camadas separadas: com e sem relacionamentos, com e sem índices, com e sem constrain- ts, etc.; 6. Use retângulos coloridos para agrupar tabelas de um mesmo subsistema; 7. Obtenha a ordem correta para inserir, atualizar e remo- ver os dados em tabelas específicas, respeitando os relacionamentos entre elas; 8. Sempre tenha uma forma rápida de procurar pelo nome dos atributos; 9. Tenha um script que gere todos os objetos banco de dados com uma fração de seus dados (10% é ok); 10. Mantenha uma lista atualizada das permissões nos objetos mais comuns para saber rapidamente o que um usuário específico pode e não pode fazer com os objetos; 11. Saiba como prever e estimar o tamanho de objetos específi- cos para prever o crescimento ou encolhimento do banco de dados; 12. Mostre no modelo quais objetos possuem opções de particionamento, se eles são compactados e a quais os grupos de arquivos eles perten- cem; 13. Em modelos OLAP centralize a tabela de fatos e tenha à mão uma maneira de visualizar as hierarquias principais, os níveis, membros e grãos de cada tabela de dimensão. Fonte: PICHILIANI, Mauro. Dicas para trabalhar com modelos de dados grandes. iMasters. 30 jan. 2013. Disponível em: <imasters.com.br/ban- co-de-dados/dicas-para-trabalhar-com-modelos-de-dados-grandes>. Acesso em 18 ago. 2020. 73 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S Ao final desta aventura no aprendizado dos conceitos bási- cos de bancos de dados, procurou-se fundamentar uma estrutura de conhecimento que permitirá explorar conceitos, bem como técnicas intermediárias e avançadas sobre o tema, além de também permitir uma visualização geral e prática de como usar um banco de dados, executando sua gerência nas especificações de criação, manipulação dos dados e consultas básicas e intermediárias. Desta forma, cada capítulo contribuiu com uma parte rele- vante na construção deste conhecimento, passando pela história dos bancos de dados, os modelos dos SGDBs, especificamente nos que ainda usados atualmente, exploração dos conceitos fundamentais dos relacionamentos e da álgebra relacional, que permitiram a inserção dos conceitos sobre a linguagem SQL através da apresentação dos conhe- cimentos sobre comandos fundamentais de gerência, como criação de bancos e tabelas, bem como manipulação de atributos, até comando de consulta básicos e complexos. Assim, é fortemente indicado que todos os exercícios apon- tados, bem como os adicionais, sejam feitos em prol da fixação dos conteúdos. Além do exposto, também é indicada a realização de pes- quisas adicionais nas literaturas e mídias citadas, porém, também em outras fontes, pois diferentes pontos de vistas tendem a gerar reflexões pontuais que contribuirão para uma melhor compreensão do conteúdo. 74 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S GABARITOS CAPÍTULO 01 QUESTÕES DE CONCURSOS 01 02 03 04 05 A D CERTO ERRADO D QUESTÃO DISSERTATIVA – DISSERTANDO A UNIDADE – PADRÃO DE RESPOSTA É esperado do aluno a capacidade de criação de um diagrama simples, contendo ao menos duas tabelas com seus respectivos atributos. E que o aluno seja capaz de identificar a necessidade do atributo chave primária nas entidades fortes. De forma similar, é esperado que em entidades fracas, caso sejam des- critas, não seja adicionada chave primária. Não é esperado que o aluno utilize de forma satisfatória as tipagens dos atributos, bem como, que estes sejam adequados para os dados que serão armazenados. TREINO INÉDITO Gabarito: D A alternativa (A) está errada, uma vez que estes bancos se tornaram pouco atrativos devido o crescimento das bases de dados e, respecti- vamente, a complexidade das relações. A alternativa (B) está errada, uma vez que o modelo hierárquico se ba- seia nas estruturas de arvores, onde os nós subsequentes são hierar- quicamente vinculados aos nós superiores. A alternativa (C) está errada, pois o modelo orientado a objetos que é indicado para sistemas embarcados. A alternativa (D) está correta, pois o uso de bancos hierárquicos pode ser facilmente implantados quando as bases de dados não são muito grandes e complexas. A alternativa (E) está errada, pois este modelo ainda é usado para apli- cações simples e nos navegadores. 75 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S CAPÍTULO 02 QUESTÕES DE CONCURSOS 01 02 03 04 05 B C C B A QUESTÃO DISSERTATIVA – DISSERTANDO A UNIDADE – PADRÃO DE RESPOSTA Esta atividade procura retomar alguns conceitos da unidade 1 com as manipulações de tabelas da unidade 2. Assim, é esperado que o aluno seja capaz de identificar corretamente o uso dos tipos para cada atribu- to, bem como, que identifique ao menos a necessidade de inserção dos atributos id e nome do usuário. TREINO INÉDITO Gabarito: A A alternativa (A) está correta, uma vez que as chaves estrangeiras são atributos em uma tabela que referencia atributos chave de outras tabelas. A alternativa (B) está errada, pois a chave estrangeira é um conceito de bancos de dados, não sendo um objeto do mundo físico. A alternativa (C) está errada, pois a chave estrangeira não é um gatilho para realizar uma consulta de presença de elementos em tabelas. A alternativa (D) está errada, uma vez que as chaves estrangeiras não são elementos que definem as entidades fortes, e sim as entidades fracas. A alternativa (E) está errada, uma vez que a chave estrangeira não é uma interface de acesso aos atributos, por menos, está vinculada a en- capsulamento nos bancos relacionais. 76 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S CAPÍTULO 03 QUESTÕES DE CONCURSOS 01 02 03 04 05 D B A B D QUESTÃO DISSERTATIVA – DISSERTANDO A UNIDADE – PADRÃO DE RESPOSTA Esta atividade possui um fator de dificuldade agregado composto pelo conhecimento das três unidades anteriores, cabendo ao aluno desen- volver um banco com tabelas e atributos bem definidos e justificados no relatório, bem como é esperado que o aluno apresente um nível sa- tisfatório de compreensão das operações com JOIN, que se dará pela correta posição das cláusulas e do uso da condição. TREINO INÉDITO Gabarito: D A alternativa (A) está errada, uma vez que a função do WHERE é servir como condicional para a consulta. A alternativa (B) está errada, pois o comando WHERE sempre aparece depois do primeiro comando SELECT. A alternativa (C) está errada, pois esta cláusula permite realizar outros tipos de operações, como as operações lógicas. A alternativa (D) está correta, pois a cláusula WHERE permite o uso dos operadores comuns, como igualdade, diferença e maior/menor-que, bem como o uso de operadores lógicos. A alternativa (E) está errada, uma vez que pode existir mais de uma cláusula WHERE por consulta, além de poder ser feita a comparação de duas tabelas através de seus atributos usando o WHERE. 77 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S BEIGHLEY, Lynn. Use a cabeça: SQL. Tradução de Leopoldino Ma- chado. 2. Reimpressão. Rio de Janeiro: AltaBooks, 2010. 491 p. Título original: Head First SQL. COSTA, D. C. El Modelo Relacional y el Álgebra Relacional. UOC/ Digitalia, 2009. DATE, C. J. Introdução a sistemas de banco de dados. 7. Reimpres- são. Rio de Janeiro: Campus, 1989. DANTE, L. R. Matemática: Contexto & Aplicação. 5 ed. São Paulo, edi- tora Ática, 2013. ELMASRI, Ramez; NAVATHE, Shamkant B. Sistemas de banco de da- dos. Tradução de Marília Guimarães Pinheiro et al. 4. ed. São Paulo: Pearson education, 2005. 798 p. Título original: Fundamentais of Data- base Systems. HEUSER, Carlos A. Projeto de banco de dados. 4. ed. Sagra Luzzatto, 1998. JUSTAMAND, Michel. O brasil desconhecido as pinturas rupestres de são raimundo nonato têm muito a revelar. Somanlu: Revista de Estu- dos Amazônicos, v. 19, n. 1, 2019. TAKAI, Osvaldo Kotaro; ITALIANO, Isabel Cristina; FERREIRA, João Eduardo. Introdução a banco de dados. DCC-IME-USP, 2005. SIQUEIRA, Fernando. Banco de Dados I. Unipli. Disponível em: <ht- tps://sites.google.com/site/uniplibancodedados1/aulas/aula-1---introdu- cao>. Acesso em 17 ago. 2020. https://sites.google.com/site/uniplibancodedados1/aulas/aula-1---introducao https://sites.google.com/site/uniplibancodedados1/aulas/aula-1---introducao https://sites.google.com/site/uniplibancodedados1/aulas/aula-1---introducao 78 IN TR O D U Ç Ã O A O B A N C O D E D A D O S - G R U P O P R O M IN A S _Hlk37475635 _Hlk37475578 _Hlk48553939 _Hlk48554198 _Hlk48525445 _Hlk37475488 _Hlk48678214 _GoBack