[Música] [Música] olá e suas áreas estão acompanhando vocês na disciplina de bancos de dados essa disciplina está sendo oferecidas para o curso de engenharia da computação na universidade hoje nós vamos começar uma nova parte um concerto vamos começar a trabalhar com conceitos um pouco diferenciado na disciplina daqueles que nós vimos trabalhando vamos entrar então em linguagem de consulta trabalhando hoje com alguns operadores da com a linguagem de consulta álgebra relacional bom no contexto de banco de dados nós temos o nosso principal objetivo é lógico armazenar esses dados persistir esses dados esses dados precisam estar crescidos
com uma de uma forma integrada com consistência porque porque nós queremos recuperar a informação que está contida nesses dados e como nós recuperamos essa informação nós recuperamos nós trazemos essa informação para o usuário ou para aplicação usuária daquele banco de dados usando as consultas ou a square essas consultas elas são principalmente disso é implementado numa linguagem chamada sql presente na grande maioria dos sgbd disponíveis para us essa linguagem sql ela foi desenvolvida com base em outras linguagens de consultas formais uma delas a álgebra relacional essa a consultas e essa linguagem de consulta formal ao sobra
relacional é o nosso assunto desta aula e da próxima aula também é ela também além dela dar base formal para implementação de uma linguagem sql que é uma linguagem comercial ela também é usada como base para implementar estratégias que estão disponíveis em um módulo internos sgbds chamado módulos processamento de consultas esse modo de processamento de consultas ele inclui uma uma funcionalidade chamada otimização de consultas que faz com que é as consultas que sejam realizadas nesse nesse sgbd é para recuperar a os dados que estão no banco de dados executado de uma forma eficiente então para
implementar os algoritmos que fazem as alterações necessárias para que a eficiência aconteça para que a consulta seja executada rapidamente por exemplo é necessário conhecer um pouquinho de álgebra relacional nós vamos estudar um pouquinho de processamento de consultas mais no final do curso mas precisamos agora dar atenção a essas operações a obra relacional para poder começar a entender como trabalha essa extração de informação em um banco de dados bom então para que nós possamos trabalhar com esses operadores nós temos que ter já o nosso é banco de dados implementar num modelo que permita a execução desse
tipo de extração de informação e se esse modelo é um modelo lógico que nós já aprendemos como fazer um modelo relacional aqui estou trazendo uma representação um pouco diferente do que nós já tínhamos visto apenas por ser uma representação mais compacta mas o que nós temos aqui é exatamente o modelo relacional que nós já trabalhamos das aulas anteriores temos algumas entidades com os seus atributos e as aves primárias estão é representadas pelos atributos sublinhado nós já colocamos aqui esse modelo próximo da forma como nós implementaremos um não sgbd ainda faltam informações mas já estamos nos
aproximando mais da implementação deste modelo não sgbd por isso os nossos todos os nossos atributos e nomes das nossas relações não incluem a acentuação e nem cedilha de forma que nós estamos mais próximos da maneira como colocaremos isso na tecnologia bom então a obra relacional é uma linguagem ela na linguagem teórica formal ela não nós não implementamos essas consultas nos fgd usando exatamente os operadores que faz que estudaremos aqui porque eles nos dão eles fornecem a base para a implementação dos operadores daquela outra linguagem a sl aquela sim nós vamos usar diretamente nos sgbds para
implementar as consultas e veremos essa linguagem mais pra frente a obra relacional é composta de uma série de operadores e nós vamos ver alguns desses operadores o primeiro é o operador de telex que implementa a operação select ou alteração de seleção queremos selecionar algumas duplas das tabelas de forma a atender uma requisição de extração de informação então se opõe as duas consultas aqui consulta 1 e consulta dois é que estão especificando em linguagem natural à requisição de um usuário sobre dados do banco de dados da primeira é selecione os funcionários que trabalham no departamento 4
ou que recebem salários maiores do que 3 mil reais o que nós queremos aqui é selecionar entre todas as informações com todos os dados sobre determinados funcionários quais funcionários aqueles que trabalham em determinado departamento ou aqueles que ganham mais do que um determinado valor então nós vamos precisar acessar as nossas relações lá no banco de dados para extrair essa informação essa infração é um filtro já que eu vou deixar de lado alguns funcionários e recuperar outros não estou fazendo um filtro este centro representa uma partição horizontal e vejo que nós temos aqui condições eu só
seleciono se ele trabalha no departamento 4 ou se ele é recebe um salário maior do que 3 mil embaixo nós temos uma consulta muito parecida mas a diferença é que ao invés de ou nós estamos usando e então o que nós temos uma tabela com todos os dados de funcionários o que nós queremos saber aqui é quais desses funcionários trabalham no departamento 44 funcionários possui falar maior do que 3 mil preciso procurar aqui nesta tabela de funcionários quase os atributos que me permitem é verificar essas condições então eu preciso do atributo de número que é
o atributo que indica qual é o departamento que o funcionário trabalha e precisa olhar também o salário que o atributo que indica o valor do salário do empregado então note que nós precisamos conhecer muito bem o modelo implementado do modelo de dados implementado para que nós possamos resolver as consultas bom quais são os funcionários que atendem a condição de trabalhar no departamento 4 ou receber salário maior do que 3 mil então esse funcionário trabalha no departamento 4 e recebe mais do que 3 mil o funcionário patrícia trabalha no departamento 4 e o funcionário caio recebe
mais do que 3 mil são esses funcionários nós queremos recuperar no caso do da outra consulta consulta dois nós temos uma condição em então não basta só trabalhar no departamento quatro têm também que receber um salário maior do que 3 mil o único funcionário que ascende a essa condição é a claudia então a nossa operação de seleção faz o que seleciona as duplas que atendem às condições nesse caso a primeira turma tá da cláudia atende salário maior que 3 mil e trabalha no departamento 4 esse é o resultado das operações da operação de seleção para
essas duas consultas que nós trabalhamos então percebam que para consultar um eu tenho uma nova tabela com os dados que respondem somente a ela e na no resultado da consulta 2 uma outra tabela que responde ao a requisição da consulta 2 como é apenas uma seleção todos os atributos compõem essas novas tabelas e as novas tabelas elas são tabelas temporárias mas não sou tabelas que serão ter sido armazenadas porque nós estamos apenas extraindo informação para mostrar na tela um sistema para usar alguma funcionalidade do sistema para imprimir um relatório algumas dessas coisas deste tipo como
nós especificamos então essa consulta nós temos a operação do selecto representada por esta letra grega precisamos colocar a as condições de seleção ou seja eu vou selecionar quem satisfaz as condições e precisamos identificar qual é a tabela onde estão os dados que permitem verificar essas condições então a consulta 1 ea computadores estão especificadas aqui eu tenho uma seleção sobre a tabela funcionário que vai me trazer resultados que satisfaçam a essa condição de número igual a 4 ou salário maior que 3 mil no caso da primeira consulta e de número igual a 4 e falar maior
que 3 mil no caso da segunda consulta a próxima operação a operação de produção nós falamos que o preso na operação de projeção é uma partição vertical da tabela porque porque essa é é superado esse operador ele vai lhe permite escolher alguns atributos que são interessantes para mim e separar esses atributos para colocar na resposta da consulta então por exemplo a consulta 3 lista o nome sobrenome salário de cada um dos funcionários então eu quero informação de todos os funcionários eu não tenho nenhuma condição para satisfazer mas eu não quero todas as informações ou quer
apenas nome sobrenome salário então essa é uma consulta que eu resolvo cooperação de projeção a consultar 4 ela também pede uma listagem de atributos aqui nós queremos o sexo de cada funcionário do departamento no qual ele trabalha então nós temos aqui a tabela de funcionários e nós vamos ter as colunas que satisfazem a primeira consulta que são nome sobrenome e salário que está especificado aqui é a primeira consulta a segunda consulta está pedindo apenas a coluna sexo e número do apartamento o funcionário trabalha a resposta que a consulta me dá então é uma tabela menor
onde eu projetei as colunas que eu queria coloquei todas as duplas porém dos presentes aquelas colunas que não me interessavam aqui no resultado da segunda consulta nós temos uma particularidade que precisamos prestar atenção é a lançar tabela original possui cinco duplas são cinco funcionários cadastrados mas quando eu uso o operador de projeção e vou desprezar vários para os elementos então desprezando vários elementos ficando só com sexo e de número eu terei uma tutela que vai aparecer duas vezes o que significa isso na tabela original era duas duplas que diziam respeito a funcionários diferentes mas na
tabela resultante essa dupla ela ficou com o mesmo valor de uma outra tudo aqui existentes estão como se ficasse com uma tabela com duas linhas ou duas duplas iguais e operador de projeção ele elimina duplicatas por isso eu tenho aqui apenas quatro turmas no resultado então quando nós especificamos essa essa uma consulta usando operador de projeção a letra grega ap para o operador a lista de atributos que eu quero é que esteja no meu resultado ea tabela de onde eu tiro essa lista de atributos estão aqui para consultar três projeção de nome sobrenome salário da
tabela funcionário e na consulta 4 a projeção sexy de número também da tabela funcionários uma coisa importante ainda sobre o operador de projeção é que essa lista de atributos aqui ela é ordenada no seguinte sentido a ordem que eu coloco os atributos na minha consulta é a ordem que esses atributos vão aparecer na tabela resultante então eu coloquei nome sobrenome salário a tabela resultante vai ter a as colunas exatamente nesta ordem sequência de operações então uns parece útil que possamos combinar essas esses operadores para criar consultas um pouquinho mais complexas então é bom por essa
consulta que forneça o nome sobrenome salário ou seja quer apenas alguns atributos portanto vou ter que usar o operador projeção de todos os funcionários que trabalham no departamento quatro então eu não quero selecionar esses atributos de todos funcionários mas sim desses atributos apenas os funcionários todos aqueles que trabalham no departamento quatro então eu posso fazer uma sequência de operações então o que nós temos aqui eu tenho a tabela funcionário que é onde estão os dados que é preciso recuperar que possui os dados que eu quero recuperar eu tenho a seleção que vai fazer o filtro
dos funcionários que me interessam quais funcionários que me interessam aqueles que trabalham no departamento quatro então atributo que indica onde o funcionário trabalha precisa ser igual a 4 valor dele precisa ser igual a quatro com isso eu já tenho um resultado parcial que tirou todos os funcionários que não são deste departamento não vou usar mas eu quero todos os atributos daqueles funcionários que trabalham no departamento 4 não quer apenas três nomes sobrenomes salário então sobre o resultado da seleção nós fazemos uma projeção o resultado da seleção é uma tabela temporária em sobre a tabela temporária
operador projeção atua aqui nós temos o resultado da consulta então eu tenho apenas os funcionários que trabalham no departamento quatro e apenas os atributos que são aqueles que me interessa uma outra questão importante é que quem nos ajuda bastante na execução das nossas consultas ao operador de atribuição o que faz ele simplesmente atribui um nome para o elemento então eu tenho aqui a seleção de funcionários que trabalham no departamento 4 criando uma tabela é o tabela eu vou dar o nome de deco quatro funcionários uma vez só deu o nome para ela embora ela não
esteja armazenada persistido no banco de dados ela pode ser usada e outra consulta que esteja sendo executada naquele momento então eu posso construir uma tabela temporária dar o nome a ela e usar essa tabela temporária numa próxima consulta e colocar numa outra que também tem o nome a ela a operação de name é interessante quando nós queremos mudar nomes de elementos estão aqui eu fiz um exemplo tirei exemplo da nossa literatura é bastante simplificado nós temos aqui um resultado que possui uma quantidade de tubos mas que é tem os atributos nome sobrenome salário mas eu
quero agora que esse resultado seja uma tabela de outro nome e que usar nossas colunas tenham nomes em inglês então renan nei eu usei uma letra específica quis que é usada para operação de 20 mm e coloquei um outro nome para a tabela e nomes diferentes para aqueles atributos que estão presentes na tabela resultado bom agora nós vamos passar por um conjunto de operações que usam duas delas é uma ação operações de na área então eu tenho a operação de união intercessão e diferença essas operações são as mesmas que a gente já conhece lá da
teoria de conjuntos eu tenho aqui a operação de união eu vou fazer a união da relação r com a relação s e o que a união de uma relação é com a relação é uma nova relação que tem os mesmos atributos de rs e inclui todas as duplas que estão em r todas que estão em s todos que estão nas duas relações aqui eu tenho a intercessão a diferença da interpretação para a união é que eu vou incluir na resposta apenas as duplas que aparecem nas duas relações tanto henrique quanto em s e aqui eu
tenho a diferença a diferença entre conjuntos ela tem uma semântica é um pouquinho diferente dos anteriores eu vou colocar nenhum resultado todas as duplas que estão em r mas que não aparecem na relação é pela que nós temos um exemplo de uma consulta que nos permite usar esses conceitos estão a consulta 6 recupere o identificador de todos os funcionários que o trabalho no departamento 4 ou supervisionam diretamente um funcionário que trabalha no departamento 4 vamos ver como resolver essa consulta então olhando aqui pra nossa tabela o que nós temos aqui a tabela funcionário completa mas
eu destaquei nesse caso as todas dos funcionários que trabalham no departamento quatro então eu tenho primeiro funcionário quase funcionário trabalhando no departamento 4 é uma das coisas que eu quero eu quero funcionários que trabalham no departamento 4 vou recuperar o identificador deles que é o que eu preciso então um 6 3 e 1 166 estarão na resposta porque são os identificadores dos funcionários que trabalham no departamento 4 agora aqui o que eu destaquei stack outro atributo desses mesmos funcionários então eu continuo com os funcionários que trabalham no departamento 4 de número quatro de número 4
mas o destaque aqui um atributo de o perseguidor o sup e dentes essa tributo ele está indicando quem supervia disse quem supervisiona o funcionários que estão destaque que são aqueles do departamento 4 é o primeiro funcionário ele não tem ninguém que o supervisiona o segundo funcionário que a patrícia é supervisionado pelo funcionário 165 quando eu só quero saber os identificadores então quais são os indicadores dos funcionários que trabalham no departamento 41 6 3 1 6 e 6 1 e daqueles que supervisionam quem trabalha no departamento 465 bom é aqui está a especificação da consulta formal
que me permite extrair essas informações então o que nós temos aqui primeiro selecionei os funcionários que trabalham nos departamentos de número 4 coloquei nesta tabela temporária a partir dela projetei o identificador que é o que me interessa como coloquei no resultado 1 no resultado 2 eu estou colocando também da tabela temporária funcionários que trabalham no departamento 4 o identificador do supervisores dele então eu tenho aqui identificador do funcionário que trabalha no departamento 4 e identificador do funcionário que supervisiona aquele que trabalha no departamento 4 possui o que eu faço para resolver a consulta quando eu
quero ou ou seja tá tu quem trabalha no departamento quanto quem supervisiona quem trabalha no departamento eu faço uma união desses dois resultados e consigo o resultado final da minha conta uma coisa muito importante nesses operadores para que eles possam ser usados a relação é ea relação s precisam ter o mesmo número de atributos e esses atributos triste não ser do mesmo tipo porque nós estamos fazendo uma operação que vai compor uma nova relação que possui os mesmos atributos drs então se for diferente a quantidade de atributos não consigo compor uma relação que tem os
mesmos atributos eu preciso que elas sejam sejam relações que nós chamamos de relax compatíveis mesmo número de atributos e cada um desses atributos precisam ter nas duas relações o mesmo domínio nós faremos alguns exercícios pra exemplificar mais um pouco esses conceitos que segmentar esse conhecimento bom então nós temos aqui uma agora uma outra operar uma outra operação que é o produto cartesiano que é uma operação bastante importante também dentro do nosso contexto o produto cartesiano fácil ele produz um novo elemento por meio da combinação de todas as súplicas de uma relação com todas as duplas
e outra relação porém ele é um pouco diferente das combinações que são feitas da conta está um que é feita na união intenção de diferença aqui nós fazemos uma produção de um novo elemento não significa isso eu tenho uma relação rs eu vou fazer o cartesiano percebam que a r tem um atributo ar e o atributo b ea s tem atributos e um atributo de quando eu posso agora criar um cartesiano dessas relações primeira coisa a minha relação resultante é uma relação maior em termos de atributos então eu vou colocar nela o atributo lá o
b o c e se eu tivesse mais atributos aqui não teria problema colocaria o s quanto tributos fossem necessários acompanhe aqui a tabela maior e como compor essas duplas estas duplas eu vou compor combinando as duplas e rs todas com todas eu vou combinar a primeira de r 1 a 1 a 1 com a primeira de s um cc então você que um se a minha dupla composta ela tem os valores da primeira turma de r composto com valores da primeira turma de e eu tenho que fazer isso para todas as combinações então a primeira
de r com a primeira ds a primeira de r com a próxima de s e assim por diante depois a segunda de r com a primeira de essa é a segunda de r com a segunda ds e assim por diante bom e aí que nós podemos fazer como operação 10 quando nós usamos essa operação nós temos agora a possibilidade de combinar dados de diferentes relações para resolver uma consulta e combinar de uma maneira tal que me permite colocar filtros interessantes em cima dessa dessa combinação então se foi a seguinte consulta recupera uma lista de nomes
de cada funcionária do sexo feminino eles seus dependentes então a resposta eu quero em nome da funcionária apenas as funcionárias as mulheres e os dependentes dessas funcionárias então como nós fazer faremos isso primeiro vamos resolver essa consulta por partes primeiro funcionárias como eu descubro e o projeto lá e funcionário que é onde eu tenho a informação sobre se é feminino masculino então é o projeto de lá todas as duplas que tem o valor feminino atributos ex-projeto não desculpe seleciono delator todas as duplas que tem o atributo sexo dourado com sd feminino então eu tenho agora
uma relação temporária com todos os funcionários agora que eu vou pegar dessas funcionárias preciso de todas as informações que eu tenho lá endereço data de nascimento não eu quero apenas uma lista de nomes então eu vou projetar o nome sobrenome das funcionárias passou a projetar também o identificador porque é o atributo que vai lhe permitir trabalhar com essa tabela com a restrição de velocidade pronto agora eu tenho aqui a tabela de funcionários um pouco menor o que eu faço agora basta tabela de funcionárias não eu preciso saber dos dependentes delas foi falar sem dependentes então
o que eu vou fazer agora eu vou compor a funcionária com a outra tabela onde está a informação que completa a minha consulta que são dependentes como eu componho com cartesiano e aí eu vou criar o essa tabela é se de funcionários dependentes porém quando com pulso e criei essa tabela eu combinei cada uma das funcionárias com cada um dos dependentes existentes na tabela dependentes criei então grande tabela com a os atributos lado a funcionários atributos dos dependentes mas uma funcionária foi combinada com todos os dependentes então não necessariamente lá foi combinada apenas com dependentes
dela e eu preciso excluir essas duplas que estão combinando coisas que não interessam para mim então eu preciso da funcionária e um dependente dela quando eu consigo isso ora lá independente na tutela do dependente eu tenho identificador do funcionário relacionado a ele então se eu tenho o identificador do funcionário relacionada ao dependente e tenho o identificador da funcionária que naquela tudo está relacionado à cne independente eu pergunto são iguais são iguais significa que naquela tutela aquela funcionária está relacionada com o dependente dela porque o f e dente dela que está naquele independente é por diferentes
se for diferente significa que a funcionária foi composta por criar uma turma da funcionária com o dependente de outra eu não quero isso então não vou selecionar essas duplas e coloco aqui uma tabela que estou chamando independente de fato bom e eu quero todos os atributos que tem lá não eu quero apenas o nome da funcionária sobre o nome da funcionária e o nome do dependente dela e aí como eu vou trabalhar com o atributo nome de funcionário e com o atributo nome de independência eu preciso dizer o nome de quem eu quero que o
meu sgbd recupere coloque lá na minha tabela resposta eu preciso usar o que nós chamamos de notação de ponto eu coloco o atributo mais específico de cotobello eu quero esse atributo a é da funcionária saber o nome da funcionária e o nome esse nome do dependente é bom com isso nós finalizamos a nossa primeira aula de álgebra relacional nós precisamos fazer muitos exercícios para poder assimilar esses conteúdos e nós vamos na próxima aula continuar falando desses operadores então eu peço que vocês estudem esse conteúdo ainda antes de assistir o próximo vídeo [Música] ah [Música] o
[Música] o mundo ae [Música]